<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>VLLM on Hypho - AI Agent 技术博客</title><link>https://blog.hypho.cn/tags/vllm/</link><description>Recent content in VLLM on Hypho - AI Agent 技术博客</description><image><title>Hypho - AI Agent 技术博客</title><url>https://blog.hypho.cn/papermod-cover.png</url><link>https://blog.hypho.cn/papermod-cover.png</link></image><generator>Hugo -- 0.148.2</generator><language>zh-cn</language><lastBuildDate>Fri, 05 Jun 2026 10:04:37 +0800</lastBuildDate><atom:link href="https://blog.hypho.cn/tags/vllm/index.xml" rel="self" type="application/rss+xml"/><item><title>KV-cache 量化终于能跑生产了？KVarN 用方差归一化打破 vLLM 的吞吐量魔咒</title><link>https://blog.hypho.cn/posts/kvarn-vllm-kv-cache-quantization-production/</link><pubDate>Fri, 05 Jun 2026 10:04:37 +0800</pubDate><guid>https://blog.hypho.cn/posts/kvarn-vllm-kv-cache-quantization-production/</guid><description>vLLM 官方基准显示 TurboQuant 等 KV-cache 量化方案普遍损失 40-52% 吞吐量，华为 KVarN 通过 Hadamard 旋转和方差归一化实现了 FP16 级精度、FP16 级吞吐和 3-5 倍缓存容量三者兼得。本文解析 KVarN 的工程原理、与 TurboQuant/FP8 的实测对比，以及在 vLLM 生产环境中一行配置启用的实践路径。</description><content:encoded><![CDATA[<ul>
<li><a href="https://blog.hypho.cn/posts/ai-chip-memory-wall-hbm-cost/">AI 芯片为什么越来越像内存生意？从 HBM 成本看 LLM 推理的真正瓶颈</a></li>
<li><a href="https://blog.hypho.cn/posts/gemma-4-multi-token-prediction-inference/">Gemma 4 的多 token 预测：LLM 推理加速不该只盯着量化</a></li>
</ul>
<h2 id="kv-cache-量化为什么一直不敢开">KV-cache 量化为什么一直&quot;不敢开&quot;</h2>
<p>做过 vLLM 生产部署的人大概都纠结过一个问题：context 越来越长，KV-cache 吃掉的 GPU 显存越来越多，但官方文档里那个 <code>--kv-cache-dtype</code> 参数，你真的敢在生产环境打开吗？</p>
<p>vLLM 团队今年 5 月发了一篇 TurboQuant 的系统性基准测试<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>，结论相当诚实：除了 FP8 之外，所有 KV-cache 量化方案都在&quot;拿吞吐量换容量&quot;。具体来说：</p>
<ul>
<li><strong>TurboQuant 4bit-nc</strong>：最高 3.4 倍 KV-cache 容量，但吞吐量损失 40-52%，延迟增加最高 60%</li>
<li><strong>TurboQuant 3bit-nc</strong>：精度大幅下降，推理和长上下文任务表现尤其差</li>
<li><strong>FP8</strong>：2 倍容量，吞吐量基本无损，但容量增幅有限</li>
</ul>
<p>说白了就是：你要么选 FP8（安全但只翻倍），要么选更激进的量化（容量大但吞吐暴跌）。在推理密集型场景——比如长上下文 Agent、代码生成、数学推理——吞吐量下降意味着请求排队变长、用户等待变久，这在生产环境是不可接受的。</p>
<p>所以 vLLM 官方的建议一直是：<strong>默认用 BF16，显存不够就用 FP8，其他量化方案慎用。</strong></p>
<p>这就是 KVarN 想解决的问题。</p>
<h2 id="kvarn-是什么华为的-kv-cache-量化新方案">KVarN 是什么：华为的 KV-cache 量化新方案</h2>
<p>KVarN（读作 /kvɑːɳ/，瑞典语&quot;研磨机&quot;的意思）来自华为通讯系统实验室（Huawei CSL），论文在 arXiv 上<sup id="fnref:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>，代码以 Apache 2.0 开源在 GitHub<sup id="fnref:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup>，目前 196 星，最新提交就在今天。</p>
<p>它的核心卖点用一句话概括：<strong>FP16 级精度、FP16 级吞吐、3-5 倍 KV-cache 容量，不需要校准数据。</strong></p>
<p>在 Qwen3-32B 的 AIME25 基准测试中（16K context，TP=2），KVarN 的精度和吞吐量都<strong>匹配甚至超过 FP16</strong>，同时提供约 4 倍的 KV-cache 容量。这在之前的量化方案中从未同时实现过。</p>
<h2 id="它怎么做到的四步流水线">它怎么做到的：四步流水线</h2>
<p>KVarN 的量化流程分四个阶段，每一步都有明确的工程目的：</p>
<p><strong>第一步：Cache</strong> — 原始 FP16 KV-cache 瓦片（channels × tokens），直接来自注意力计算。</p>
<p><strong>第二步：Hadamard 旋转</strong> — 沿通道维度做 Hadamard 变换。这一步的直觉是：原始 KV-cache 中某些通道有极端值（outlier），直接量化会丢失大量信息。Hadamard 旋转是正交变换，不改变注意力分数，但会把极端值&quot;摊开&quot;到所有通道，让量化更容易。</p>
<p><strong>第三步：方差归一化</strong> — 交替沿行和列做标准差归一化（类似 Sinkhorn 迭代），在对数空间中操作。这一步让瓦片内部的方差均匀分布，进一步减少量化误差。</p>
<p><strong>第四步：非对称舍入量化</strong> — 在低比特宽度下做 round-to-nearest，读取时还原 scale。关键设计是<strong>给 key 分配更多比特，给 value 分配更少</strong>（默认配置 <code>kvarn_k4v2_g128</code>：key 4-bit，value 2-bit）。</p>
<p>用人话说就是：先把数据&quot;打散&quot;（旋转），再&quot;抹平&quot;（归一化），最后才&quot;压缩&quot;（量化）。传统量化方法直接在原始数据上压，极端值会让误差爆炸；KVarN 的前两步就是在为量化创造更好的条件。</p>
<h2 id="论文的核心发现推理场景的误差累积">论文的核心发现：推理场景的误差累积</h2>
<p>论文<sup id="fnref1:2"><a href="#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup>指出了一个之前被忽视的问题：<strong>现有的 KV-cache 量化方法主要在 prefill 类场景中评测，但推理（autoregressive decoding）场景下，量化误差会跨时间步累积。</strong></p>
<p>具体来说，在长序列生成过程中，每一步解码都会读取之前所有 token 的 KV-cache。如果某个 token 的 scale 估错了，这个误差会随着解码的推进不断放大。论文发现，驱动误差累积的主要因素是<strong>不正确的 token scale</strong>。</p>
<p>KVarN 的方差归一化正是针对这个问题：通过对 KV 矩阵的行和列做联合归一化，直接消除不均匀的 token scale，从而大幅减少误差累积。</p>
<p>在 MATH500、AIME24 和 HumanEval 等生成式基准上，KVarN 在 2-bit 精度下达到了新的 state-of-the-art。</p>
<h2 id="与-turboquant-和-fp8-的实测对比">与 TurboQuant 和 FP8 的实测对比</h2>
<p>根据 KVarN 的 README<sup id="fnref1:3"><a href="#fn:3" class="footnote-ref" role="doc-noteref">3</a></sup> 和 vLLM TurboQuant 博客<sup id="fnref1:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>的数据：</p>
<table>
  <thead>
      <tr>
          <th>方案</th>
          <th>容量倍数</th>
          <th>吞吐量（相对 FP16）</th>
          <th>精度</th>
          <th>校准需求</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>FP8</td>
          <td>2×</td>
          <td>≈100%</td>
          <td>接近 FP16</td>
          <td>无</td>
      </tr>
      <tr>
          <td>TurboQuant 4bit-nc</td>
          <td>2.3-3.7×</td>
          <td>48-60%</td>
          <td>降 1-4 分</td>
          <td>无</td>
      </tr>
      <tr>
          <td>TurboQuant 3bit-nc</td>
          <td>3-5×</td>
          <td>更低</td>
          <td>明显下降</td>
          <td>无</td>
      </tr>
      <tr>
          <td><strong>KVarN k4v2_g128</strong></td>
          <td><strong>3-5×</strong></td>
          <td><strong>≥100%</strong></td>
          <td><strong>匹配 FP16</strong></td>
          <td><strong>无</strong></td>
      </tr>
  </tbody>
</table>
<p>KVarN 的 Pareto 前沿占据了 TurboQuant 和 FP8 都够不到的位置：<strong>右上角</strong>——既比 FP8 容量大，又比 TurboQuant 吞吐高，精度还不打折。</p>
<p>vLLM 官方 TurboQuant 博客的结论是&quot;FP8 是目前最安全的默认选择&quot;。但如果 KVarN 的数据经得起更广泛验证，这个结论可能需要更新。</p>
<h2 id="工程实践一行配置启用">工程实践：一行配置启用</h2>
<p>KVarN 的部署极其简单——它是 vLLM v0.22.0 的 fork，安装方式和 vLLM 一样：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone https://github.com/huawei-csl/KVarN.git
</span></span><span class="line"><span class="cl"><span class="nb">cd</span> KVarN
</span></span><span class="line"><span class="cl"><span class="nv">VLLM_USE_PRECOMPILED</span><span class="o">=</span><span class="m">1</span> pip install -e .
</span></span></code></pre></div><p>使用时只需要加一个参数：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">vllm</span> <span class="kn">import</span> <span class="n">LLM</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">llm</span> <span class="o">=</span> <span class="n">LLM</span><span class="p">(</span>
</span></span><span class="line"><span class="cl">    <span class="n">model</span><span class="o">=</span><span class="s2">&#34;Qwen/Qwen3-32B&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">dtype</span><span class="o">=</span><span class="s2">&#34;float16&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="cl">    <span class="n">kv_cache_dtype</span><span class="o">=</span><span class="s2">&#34;kvarn_k4v2_g128&#34;</span><span class="p">,</span>  <span class="c1"># ← 就这一行</span>
</span></span><span class="line"><span class="cl">    <span class="n">block_size</span><span class="o">=</span><span class="mi">128</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></div><p>Serving 模式同理：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">vllm serve Qwen/Qwen3-32B --dtype float16 --kv-cache-dtype kvarn_k4v2_g128 --block-size <span class="m">128</span>
</span></span></code></pre></div><p>没有模型改动，没有校准数据集，没有额外配置。KVarN 的 kernel 是 Triton 实现的，运行时 JIT 编译。</p>
<p>有一个需要注意的点：在单卡显存紧张的情况下，vLLM 的 CUDA graph 内存分析器可能会过度预留显存，导致 KV-cache 池缩小。可以通过设置 <code>VLLM_MEMORY_PROFILER_ESTIMATE_CUDAGRAPHS=0</code> 或提高 <code>--gpu-memory-utilization</code> 来恢复完整容量。</p>
<h2 id="需要关注的几个问题">需要关注的几个问题</h2>
<p><strong>1. 为什么是 fork 而不是 PR？</strong></p>
<p>HN 评论区<sup id="fnref:4"><a href="#fn:4" class="footnote-ref" role="doc-noteref">4</a></sup>第一条就问了这个问题。KVarN 选择 fork vLLM 而不是提交 PR 到上游，可能是因为它的 kernel 实现需要修改 vLLM 的注意力后端接口。短期内 fork 意味着你需要自己同步 vLLM 的更新，长期能否合并回上游还有待观察。</p>
<p><strong>2. 196 星，能用在生产吗？</strong></p>
<p>项目很新（论文和代码都是 2026 年 6 月），社区验证还在早期阶段。如果你的场景对精度极其敏感（比如金融计算），建议先在测试环境跑自己的基准。但如果你只是想在有限显存下跑更长的 context——比如 32K 甚至 128K 的 Agent 场景——KVarN 的风险收益比相当不错。</p>
<p><strong>3. 目前只支持 128 的 block size</strong></p>
<p>README 说其他 page size &ldquo;coming soon&rdquo;。在那之前，你需要确保 <code>block_size=128</code> 与你的工作负载兼容。</p>
<p><strong>4. 对硬件的要求</strong></p>
<p>KVarN 的 kernel 基于 Triton，理论上支持所有能跑 vLLM 的 GPU。但实际性能可能因硬件而异，A100/H100 上的表现和消费级卡上可能不同。</p>
<h2 id="我的判断">我的判断</h2>
<p>KV-cache 量化是 LLM 推理优化中被低估的一个方向。大家的注意力大多在模型量化（GPTQ、AWQ）、投机解码、架构创新上，但对长上下文场景来说，KV-cache 才是真正的显存瓶颈。</p>
<p>KVarN 的工程价值在于它<strong>打破了&quot;容量 vs 吞吐&quot;的二选一困境</strong>，而且实现方式极其轻量——不需要校准数据，不需要改模型，一行配置搞定。如果后续社区验证它在更多模型和场景上的一致性，它很可能成为 vLLM 长上下文部署的标配。</p>
<p>对于正在用 vLLM 做生产部署的团队，我的建议是：</p>
<ol>
<li><strong>短上下文、显存充裕</strong>：继续用 BF16，不用折腾</li>
<li><strong>中等上下文、显存紧张</strong>：FP8 是安全选择，2 倍容量，无损吞吐</li>
<li><strong>长上下文 Agent / 推理密集型</strong>：关注 KVarN，它可能给你 4 倍容量的同时不牺牲吞吐</li>
<li><strong>想尝鲜</strong>：在测试环境部署 KVarN，跑你自己的业务 benchmark，对比 FP16 和 FP8</li>
</ol>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p><a href="https://vllm.ai/blog/2026-05-11-turboquant">A First Comprehensive Study of TurboQuant: Accuracy and Performance | vLLM Blog</a>&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p><a href="https://arxiv.org/abs/2606.03458">KVarN: Variance-Normalized KV-Cache Quantization Mitigates Error Accumulation in Reasoning Tasks (arXiv:2606.03458)</a>&#160;<a href="#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:3">
<p><a href="https://github.com/huawei-csl/KVarN">huawei-csl/KVarN — GitHub</a>&#160;<a href="#fnref:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a>&#160;<a href="#fnref1:3" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:4">
<p><a href="https://news.ycombinator.com/item?id=48399974">HN Discussion: KVarN — 114 points</a>&#160;<a href="#fnref:4" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
]]></content:encoded></item><item><title>Kimi K2 API厂商精度大考：有人100%，有人76%</title><link>https://blog.hypho.cn/posts/k2-vendor-verifier-api-precision/</link><pubDate>Wed, 22 Apr 2026 10:07:05 +0800</pubDate><guid>https://blog.hypho.cn/posts/k2-vendor-verifier-api-precision/</guid><description>MoonshotAI开源的K2 Vendor Verifier揭示了一个严重问题：同一套Kimi K2模型，经不同厂商API分发后，toolcall精度差异巨大——官方100%，部分厂商仅76%。问题出在哪？</description><content:encoded><![CDATA[<p>你选了一个Kimi K2的第三方API提供商，省了30%的成本。结果线上agent跑着跑着开始乱调用工具——你以为模型有问题，实际是API供应商的工程实现挖的坑。</p>
<p>这不是段子，是真实发生的。MoonshotAI最近开源的 <a href="https://github.com/MoonshotAI/K2-Vendor-Verifier">K2 Vendor Verifier</a>（551 Stars）干了一件事：他们对市面上的Kimi K2第三方API做了套标准化精度测试，结果发现同样一个模型，经不同厂商分发后，toolcall精度可以从100%掉到76%。</p>
<h2 id="背景k2的核心能力就是toolcall">背景：K2的核心能力就是toolcall</h2>
<p>Kimi K2是MoonshotAI发布的专注于Agent场景的LLM。什么叫&quot;专注Agent&quot;？说白了就是它的核心能力不是聊天，而是<strong>toolcall</strong>——让模型学会调用外部工具完成复杂任务。</p>
<p>这类能力对精确度要求极高。一次toolcall失败，可能导致整个agentic loop崩溃：</p>
<ul>
<li>工具ID格式错误 → 解析异常</li>
<li>JSON Schema不匹配 → 调用参数丢失</li>
<li>触发时机错误 → 该调工具时模型&quot;停了&quot;</li>
</ul>
<p>所以K2的toolcall精度不是&quot;体验问题&quot;，是&quot;能不能用&quot;的问题。</p>
<h2 id="测试方法和官方api同题作答">测试方法：和官方API同题作答</h2>
<p>K2VV的测试思路很直接：用同一套4000条测试请求，分别走官方MoonshotAI API和各第三方厂商API，对比toolcall结果。</p>
<p>核心指标就两个：</p>
<p><strong>① tool_call_f1（触发精度）</strong>
模型该不该调用工具、该调用哪个工具。用F1分数衡量，和官方API对比。</p>
<p><strong>② schema_accuracy（Schema符合度）</strong>
模型决定调用工具了，但它生成的JSON参数对不对。用通过schema验证的比例衡量。</p>
<p>结果？差异触目惊心。</p>
<h2 id="数据说话同卷不同分">数据说话：同卷不同分</h2>
<p>K2-thinking版本（temperature=1.0，max_tokens=64000）的成绩单：</p>
<table>
  <thead>
      <tr>
          <th>厂商</th>
          <th>schema_accuracy</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>MoonshotAI（官方）</td>
          <td><strong>100%</strong></td>
      </tr>
      <tr>
          <td>Fireworks</td>
          <td>100%</td>
      </tr>
      <tr>
          <td>InfiniAI</td>
          <td>99.89%</td>
      </tr>
      <tr>
          <td>SiliconFlow</td>
          <td>98.96%</td>
      </tr>
      <tr>
          <td>GMICloud</td>
          <td>95.95%</td>
      </tr>
      <tr>
          <td><strong>vLLM（自托管）</strong></td>
          <td><strong>87.22%</strong></td>
      </tr>
      <tr>
          <td>DeepInfra</td>
          <td>86.91%</td>
      </tr>
      <tr>
          <td>GoogleVertex</td>
          <td>85.76%</td>
      </tr>
      <tr>
          <td>Together</td>
          <td>84.63%</td>
      </tr>
  </tbody>
</table>
<p>vLLM自托管版本，schema精度只有87%——意味着每100次toolcall，13次生成的参数过不了schema校验。这在生产环境里是什么概念？你的agent每天跑1000次toolcall，有130次会在运行时崩溃。</p>
<p>K2-0905-preview版本（temperature=0.6）的数据更明显：</p>
<table>
  <thead>
      <tr>
          <th>厂商</th>
          <th>schema_accuracy</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>MoonshotAI（官方）</td>
          <td><strong>100%</strong></td>
      </tr>
      <tr>
          <td>SGLang（自托管）</td>
          <td><strong>73.13%</strong></td>
      </tr>
      <tr>
          <td>vLLM（自托管）</td>
          <td><strong>76.00%</strong></td>
      </tr>
      <tr>
          <td>Volc</td>
          <td>72.86%</td>
      </tr>
  </tbody>
</table>
<p>SGLang和vLLM这两个最流行的开源推理框架，精度都没过80%。</p>
<h2 id="根因分析三个工程坑">根因分析：三个工程坑</h2>
<p>K2VV的维护者直接点名了三个最常见的问题：</p>
<p><strong>① 推理引擎版本不对</strong></p>
<p>K2对vLLM和SGLang的版本有明确要求：</p>
<ul>
<li>K2-0905需要 <a href="https://github.com/vllm-project/vllm/releases/tag/v0.11.0">vLLM v0.11.0+</a> 或 <a href="https://github.com/sgl-project/sglang/releases/tag/v0.5.3rc0">SGLang v0.5.3rc0+</a></li>
<li>K2-thinking需要 v0.11.1rc6+ 和 SGLang v0.5.5.post2+</li>
</ul>
<p>很多自托管用户跑的是旧版本，模型权重对齐不完整，自然精度下滑。</p>
<p><strong>② Tool Call ID格式问题</strong></p>
<p>K2模型要求历史消息里所有tool call的ID必须符合 <code>functions.func_name:idx</code> 格式（如 <code>functions.search:0</code>）。但很多测试用例集里的格式是错的（如 <code>search:0</code>），导致模型生成了一批格式不统一的ID，后续解析直接失败。</p>
<p>官方API在调用前会统一做ID重写，但自托管方案往往漏掉了这一步。</p>
<p><strong>③ 没有 Guided Decoding（填空式生成）</strong></p>
<p>这是最关键的一个问题。LLM是逐token生成的，没有任何机制能&quot;保证&quot;输出符合JSON Schema。再怎么写prompt，模型偶尔也会漏字段、加多余字段、嵌套错误。</p>
<p>正确的做法是加guided decoding——让推理引擎在生成阶段就约束输出格式，确保每一步token都在schema范围内。很多自托管方案没有这个配置。</p>
<p>K2VV的文档里给了一段配置示例：</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">python tool_calls_eval.py samples.jsonl <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --model kimi-k2-0905-preview <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --base-url https://api.moonshot.cn/v1 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --api-key YOUR_API_KEY <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span>    --concurrency <span class="m">5</span>
</span></span></code></pre></div><p>如果你要比对OpenRouter上的其他厂商，加一个 <code>provider.only</code> 参数即可。</p>
<h2 id="工程化建议选型时把这个benchmark列入清单">工程化建议：选型时把这个benchmark列入清单</h2>
<p>如果你正在选型Kimi K2的API供应商，或者打算自托管K2，有几点建议：</p>
<p><strong>第一，先问清楚他们用的是哪个推理引擎和版本。</strong> 拿着K2VV的<a href="https://github.com/MoonshotAI/K2-Vendor-Verifier#suggestions-to-vendors">版本要求</a>去问，答不上来的供应商可以直接排除。</p>
<p><strong>第二，对于成本敏感型场景，OpenRouter多厂商比价是有意义的，但精度要自己测。</strong> K2VV放出了一部分<a href="https://statics.moonshot.cn/k2vv/tool-calls.tar.gz">测试数据集</a>，你可以用自己的case跑一遍，对比官方API和你选中的供应商。</p>
<p><strong>第三，自托管用户务必开启guided decoding。</strong> vLLM和SGLang都支持在serving时配置JSON schema约束，这是唯一能保证toolcall schema精度的工程手段。</p>
<h2 id="数据集和工具">数据集和工具</h2>
<p>K2VV已开源，包含完整的评测脚本和部分测试数据（4000条中的50%）。如果你关心K2的toolcall精度，或者你正在做API供应商的选型，这个仓库值得你花半小时跑一遍：</p>
<ul>
<li><strong>GitHub</strong>: <a href="https://github.com/MoonshotAI/K2-Vendor-Verifier">https://github.com/MoonshotAI/K2-Vendor-Verifier</a></li>
<li><strong>技术博客</strong>: <a href="https://www.kimi.com/blog/kimi-vendor-verifier">https://www.kimi.com/blog/kimi-vendor-verifier</a></li>
<li><strong>测试数据集下载</strong>: <a href="https://statics.moonshot.cn/k2vv/tool-calls.tar.gz">https://statics.moonshot.cn/k2vv/tool-calls.tar.gz</a></li>
</ul>
<hr>
<p><em>评测数据来源：K2 Vendor Verifier GitHub README，测试时间2025-11-15。精度数据为原项目披露信息，生产环境实测结果可能有所差异。</em></p>
]]></content:encoded></item></channel></rss>