vLLM Speculators: 用于投机解码的并行草拟技术
vLLM Speculators: 用于投机解码的并行草拟技术
vLLM 和 Speculators 项目引入了对三种并行草拟算法——P-EAGLE、DFlash 和 DSpark——的开源支持,旨在克服传统自回归投机解码的延迟瓶颈。通过在单次前向传播中预测整个候选 token 块,这些方法将草拟延迟与投机 token 的数量解耦,从而能够使用更具表达力的投机模型,并减少对手动参数调优的需求。
自回归草拟的局限性
传统的投机解码框架(如 EAGLE 和 MTP)通过利用验证器模型的内部隐藏状态来提高 token 接受率。然而,像 EAGLE-3 这样的高级迭代版本仍然依赖于自回归草拟,即投机器必须为生成的每一个 token 执行单独的前向传播。
这种顺序执行的要求带来了两个主要的生产挑战:
- 模型大小限制: 为了防止草拟过程消耗掉验证过程中节省的时间,投机模型必须保持极小且轻量化。
- 运维复杂度: 由于草拟成本随 token 数量线性增长,工程团队必须根据具体用例和实时服务器负载不断调整投机长度 (K)。
并行草拟:架构转型
并行草拟通过在单次前向传播中同时预测一个候选 token 块,消除了顺序执行。这种转变带来了两个主要优势:
- 提高表达能力: 由于投机器每个块只需运行一次,开发人员可以采用更大、更深的架构,在不增加延迟的情况下捕捉更复杂的上下文并实现更高的接受率。
- 简化调优: 将草拟成本与块长度解耦,消除了在服务器负载波动期间进行超参数微调的运维负担。
虽然 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"
}'
由于投机解码使用拒绝采样来保持验证器模型的输出分布,最终的输出质量在数学上与标准解码保持一致。