vLLM Speculators: 用于投机解码的并行草拟技术

vLLM Speculators: 用于投机解码的并行草拟技术

vLLM 和 Speculators 项目引入了对三种并行草拟算法——P-EAGLE、DFlash 和 DSpark——的开源支持,旨在克服传统自回归投机解码的延迟瓶颈。通过在单次前向传播中预测整个候选 token 块,这些方法将草拟延迟与投机 token 的数量解耦,从而能够使用更具表达力的投机模型,并减少对手动参数调优的需求。

自回归草拟的局限性

传统的投机解码框架(如 EAGLE 和 MTP)通过利用验证器模型的内部隐藏状态来提高 token 接受率。然而,像 EAGLE-3 这样的高级迭代版本仍然依赖于自回归草拟,即投机器必须为生成的每一个 token 执行单独的前向传播。

这种顺序执行的要求带来了两个主要的生产挑战:

  • 模型大小限制: 为了防止草拟过程消耗掉验证过程中节省的时间,投机模型必须保持极小且轻量化。
  • 运维复杂度: 由于草拟成本随 token 数量线性增长,工程团队必须根据具体用例和实时服务器负载不断调整投机长度 (K)。

并行草拟:架构转型

并行草拟通过在单次前向传播中同时预测一个候选 token 块,消除了顺序执行。这种转变带来了两个主要优势:

  1. 提高表达能力: 由于投机器每个块只需运行一次,开发人员可以采用更大、更深的架构,在不增加延迟的情况下捕捉更复杂的上下文并实现更高的接受率。
  2. 简化调优: 将草拟成本与块长度解耦,消除了在服务器负载波动期间进行超参数微调的运维负担。

虽然 Medusa 和 PARD 等早期概念探索过并行草拟,但 P-EAGLE、DFlash 和 DSpark 将这种并行执行与深度的验证器状态调节相结合。

P-EAGLE、DFlash 和 DSpark 的技术对比

这三种算法都利用验证器模型的隐藏状态来生成并行草拟,但在架构实现和训练策略上有所不同。

P-EAGLE

P-EAGLE 使用验证器模型的隐藏状态作为输入特征,并将其同时映射到多个未来位置,从而一步输出一系列候选 token。为了管理训练成本,它使用了草拟块稀疏化 (draft block sparsification),以递减的速率丢弃前瞻维度 (K) 上的 token,从而将优化集中在最关键的即时 token 上。

DFlash

DFlash 将验证器隐藏状态进行投影,并将其直接注入到投机模型的 KV-cache 中。这在不增加输入序列长度的情况下,使投机器的注意力机制受限于验证器的状态,并利用块扩散 (block diffusion) 来生成候选 token。在训练方面,DFlash 使用序列长度稀疏化 (sequence length sparsification),仅在序列中的随机锚点计算块预测,以节省 GPU 内存。

DSpark

DSpark 基于 DFlash 的骨干网络进行了两项额外的增强:

  • 自回归修正头 (Autoregressive Correction Head): 一个轻量级头部,允许未来的 token 与过去的 token 建立更强的条件关系,将并行吞吐量与序列连贯性结合起来。
  • 置信度头 (Confidence Head): 一种在草拟 token 到达验证器之前对其进行评分的机制,仅转发那些可能被接受的 token,以减少浪费的验证计算并提高吞吐量。

推理性能与基准测试

并行草拟算法在各种模型和任务上都表现出比 EAGLE-3 显著的性能提升:

模型 算法 用例 硬件
Qwen3-8B P-EAGLE 数学推理 (GSM8k) 1xA100
Qwen3-30B-A3B DFlash 代码 (HumanEval) 2xA100
gemma-4-31B-it DSpark 代码 (HumanEval) 2xA100

在 vLLM 中的生产集成

并行草拟通过 Speculators 仓库集成到 vLLM 中。该生态系统为训练和评估这些模型提供了一个统一的框架。用户可以通过在 vLLM 初始化期间在 speculative-config 标志中指定模型和方法来启动一个基于并行的投机引擎:

vllm serve Qwen/Qwen3-30B-A3B \
  --tensor-parallel-size 2 \
  --reasoning-parser qwen3 \
  --speculative-config '{
    "model": "RedHatAI/Qwen3-30B-A3B-speculator.dflash",
    "num_speculative_tokens": 7,
    "method": "dflash"
  }'

由于投机解码使用拒绝采样来保持验证器模型的输出分布,最终的输出质量在数学上与标准解码保持一致。

Sources