vLLM Kimi-K3 DSpark 推测解码实现

概述

vLLM 已成功为 Kimi K3(一个拥有 2.8T 参数的前沿模型)训练并部署了 DSpark 推测器。通过利用 Speculators 训练库和 GB300 NVL72 硬件,该实现将数学推理工作负载的单流交互性从约 110 提高到 435 tok/s/user,并在并发负载下提供高达 3.5 倍的输出吞吐量。

DSpark 算法

DSpark 是 DFlash 块级推测解码算法的扩展,旨在解决“后缀衰减”问题,即并行预测块中的单个错误会导致剩余 token 被失效。 DSpark 保留了 DFlash 的并行骨干结构,但引入了两个特定组件以提高 token 间的连贯性:

  • Markov logit-bias head:该组件按顺序采样 token,并使用低秩转移矩阵根据先前选择的 token 来调整 logits,从而在不需要额外 transformer pass 的情况下恢复局部依赖性。
  • Confidence head:该 head 估计 token 被接受的概率,允许硬件感知调度器在低负载期间验证更长的前缀,并在高系统负载期间修剪不太可能的后缀。

与 DFlash 相比,DSpark 在 Qwen3 目标模型上报告了 16–18% 更长的接受序列,且比 EAGLE-3 的序列长度长 27–31%。

推理性能与能力

Kimi K3 DSpark 推测器使用一个五层、50 亿参数的草稿模型(draft model),在每个解码步骤中提出 8 个 token。

基准测试与吞吐量

在九个评估领域中,该模型实现了每个验证轮次 4.11 个 token 的宏平均接受长度。性能在结构化任务中最高:

  • Mathematical reasoning:6.42 tokens
  • HumanEval:4.96 tokens
  • Translation:4.65 tokens

长上下文性能

在 LongBench-v2 数据集上,该推测器在 378K-token 的提示词下,每个解码迭代达到了高达 5.31 个输出 token。前 10% 的 请求保持了至少 3.76 tokens 每迭代,这表明推测解码在极端上下文长度下仍然有效。

并发与延迟

随着并发量从 1 增加到 16,总输出吞吐量从每秒 177 个 token 增加到 683 个 token。尽管并发请求增加了 16 倍,中位首字延迟(TTFT)保持稳定,仅增加了 100 毫秒(从 379 ms 增加到 479 ms)。

硬件与训练基础设施

GB300 NVL72 配置

训练是在 GB300 机架上进行的,使用了 Ubuntu 24.04.4 LTS 和 NVIDIA 的 64K-page kernel 6.14。环境利用了 NVIDIA 的 610.57.04 open-kernel GPU 驱动程序 (R610) 和 CUDA 13.4.0 Developer Preview,这是第一个包含 Rubin 支持 (sm_107) 的工具包。

Mooncake Hidden-State 传输

由于草稿模型通常需要目标模型的隐藏状态(hidden states)来对齐预测,vLLM 实现了 MooncakeHiddenStatesConnector。该系统支持解耦训练和隐藏状态提取,这对于像 Kimi K3 (2.8T 参数) 这样即使在 4-bit 量化下也超过了单节点配置 VRAM 限制的模型是必需的。

  • 机制:一个主 Mooncake 代理进程管理 vLLM 与训练实例之间的通信。训练进程通过 vLLM 前端请求隐藏状态,接收一个 Mooncake store key,然后 Mooncake master 通过 RDMA 或 TCP 进行传输。
  • 拓扑结构:为 Kimi K3 找到的最佳配置涉及三节点组:两个节点专门用于 vLLM 推理,一个节点专门用于训练。

部署

Kimi K3 DSpark 推测器可通过 Hugging Face (RedHatAI/Kimi-K3-speculator.dspark) 获取,并可以使用 vLLM 配合以下推测配置进行部署:

{
  "model": "RedHatAI/Kimi-K3-speculator.dspark",
  "num_speculative_tokens": 8,
  "num_speculative_tokens": 8,
  "method": "dspark",
  "draft_sample_method": "probabilistic",
  "rejection_sample_method": "block"
}

Sources