使用 vLLM 中的 DSpark 推測解碼擴展 Kimi 推論

使用 vLLM 中的 DSpark 推測解碼擴展 Kimi 推論

DSpark 是由 Novita 發表的推測解碼方法。我們針對 Kimi-K2.6 與 Kimi-K2.7-Code 訓練並發布了面向生產環境的 DSpark 推測器,將其整合至 vLLM,並評估其平行區塊草稿方法在推測視窗增長時的擴展表現。

這些檢查點旨在在不改變目標模型的情況下加速 Kimi 服務。一個輕量級的草稿模型會提出一個候選 token 區塊,然後完整的 Kimi 模型在這些候選 token 被接受前進行驗證。

在我們 batch-size-1 的 vLLM nightly 評測中,使用 num_speculative_tokens=7 的 DSpark 在 Kimi-K2.6 上實現了平均 2.55 倍的吞吐量加速,在 Kimi-K2.7-Code 上則為 2.36 倍。當推測視窗從 n=3 增加到 n=7 時,DSpark 將額外的草稿 token 轉換為吞吐量的表現,比現有的 Eagle3-MLA 基線更為一致。

已發布的檢查點如下:

Kimi-K2.6 與 Kimi-K2.7-Code 的 DSpark 基準測試結果

在 batch size 為 1 的情況下,將 num_speculative_tokens 從 3 增加到 7,使得 DSpark 對 Kimi-K2.6 的平均加速比從 2.17 倍提升至 2.55 倍,對 Kimi-K2.7-Code 則從 2.12 倍提升至 2.36 倍。所列出的 Eagle3-MLA 基線平均而言幾乎持平。

在 Kimi-K2.6 與 Kimi-K2.7-Code 上,n=3 與 n=7 時 DSpark 與 Eagle3-MLA 的平均吞吐量加速比

目標模型 草稿模型 n=3 平均加速比 n=7 平均加速比 與 n=3 相比的變化
Kimi-K2.6 DSpark 2.17x 2.55x +17.8%
Kimi-K2.6 Eagle3-MLA 2.01x 2.01x +0.2%
Kimi-K2.7-Code DSpark 2.12x 2.36x +11.7%
Kimi-K2.7-Code Eagle3-MLA 2.04x 2.05x +0.3%

這些數值是跨 GSM8K、MATH500、AIME、HumanEval、LiveCodeBench 與 SPEED-Bench Coding 的基準層級加速比之簡單未加權平均,並非按提示數量加權。較大的草稿視窗並不會自動改善吞吐量:額外的提議必須被足夠頻繁地接受,以抵消草稿與驗證的開銷。

LiveCodeBench 讓這個差異更加具體。對於 Kimi-K2.6,DSpark 從 n=3 時的 1.86 倍提升至 n=7 時的 1.87 倍,而 Eagle3-MLA 則從 1.67 倍下降至 1.48 倍。對於 Kimi-K2.7-Code,DSpark 從 1.75 倍增加至 1.78 倍,而 Eagle3-MLA 則從 1.69 倍下降至 1.52 倍。在 SPEED-Bench Coding 上,DSpark 在 Kimi-K2.6 上從 2.19 倍提升至 2.41 倍,在 Kimi-K2.7-Code 上則從 2.15 倍提升至 2.31 倍。

評測設定: batch size 1、線上 vLLM nightly 推測解碼、貪婪解碼、TP=8、max_model_len=20000、啟用 CUDA graphs、fuse_allreduce_rms=false。較高的 tokens/sec 與加速比為佳。Batch size 1 可隔離單一請求的解碼行為;在連續批次處理或更高並發的生產工作負載下,結果可能有所不同。完整結果可在 Kimi-K2.6 DSparkKimi-K2.7-Code DSpark 的 Hugging Face 頁面上取得。

為什麼 DSpark 能改善 Kimi 的推測解碼

我們的檢查點將 DSpark 應用於 Kimi-K2.6 與 Kimi-K2.7-Code,作為 vLLM 服務的草稿模型。

相較於 DFlash 平行草稿骨幹,DSpark 增加了兩個輕量級模組:一個用於低秩區塊內 token 依賴性的馬可夫邏輯偏置模組,以及一個用於接受預測的逐位置信心模組。DSpark 平行地提出完整的草稿區塊,然後利用這些模組來改善區塊層級的草稿品質,並估算驗證器可能接受哪些位置。

我們使用 vLLM 的 Speculators 框架的分支來訓練草稿模型。在訓練期間,草稿模型會擷取從 vLLM 中運行的即時 Kimi 驗證器串流出的隱藏狀態,使推測器與其在服務時將遇到的驗證器行為保持一致。

我們發布的表格使用相同的驗證器與服務設定,以可用的開源 Eagle3-MLA 檢查點作為草稿模型基線。核心結果在於這些方法如何在更大的推測視窗下擴展:從 n=3 到 n=7,DSpark 對 Kimi-K2.6 的平均加速比提升了 17.8%,對 Kimi-K2.7-Code 提升了 11.7%,而所列出的 Eagle3-MLA 基線平均而言幾乎持平,且在兩個 LiveCodeBench 評測中均出現減速。這表明隨著視窗增長,DSpark 能更有效地保持有用的草稿品質。此比較僅限於此處測試的檢查點、batch-size-1 工作負載與服務設定。

如何在 vLLM 中使用 DSpark 服務 Kimi-K2.7-Code

DSpark 支援目前需要 vLLM nightly 版本。對於 Kimi-K2.7-Code,請使用以下推測解碼設定:

uv pip install vllm --extra-index-url https://wheels.vllm.ai/nightly

vllm serve moonshotai/Kimi-K2.7-Code \
  --tensor-parallel-size 8 \
  --max-model-len 20000 \
  --trust-remote-code \
  --compilation-config='{"pass_config": {"fuse_allreduce_rms": false}}' \
  --speculative-config '{
    "model": "novita/kimi-k2.7-code-dspark",
    "num_speculative_tokens": 7,
    "method": "dspark"
  }'

對於 Kimi-K2.6,請使用相同的設定,並將 speculative_config.model 指向 novita/kimi-k2.6-dspark

已知的 nightly 版本注意事項: 草稿端的 FA3 AOT 排程可能需要在建構草稿注意力元資料時傳遞 fast_build=True,且 CUDA graph 捕獲可能遇到 FlashInfer all-reduce 工作區大小錯誤。已測試的設定會停用 fuse_allreduce_rms;請參閱連結的 Hugging Face 頁面以取得當前的解決方法。

DSpark 改變了解碼路徑,不會改變目標 Kimi 模型。我們建議從 num_speculative_tokens=7 開始,然後針對代表性的生產流量驗證吞吐量、接受長度、token 間延遲與端到端延遲。最佳設定將取決於工作負載形狀、批次處理與服務硬體。