DeepSeek 开源 DSpark 投机解码框架,加速 DeepSeek-V4 生成速度 60-85%
阅读原文· marktechpost.comDeepSeek 开源的这个投机解码框架让 V4 生成提速 60% 以上,关键在于不换模型就能加速,对用 API 做产品的人是立即可用的性能提升。代码和权重都给了,值得一试。
DeepSeek 发布 DSpark 投机解码框架并开源检查点与训练代码。该框架不是新模型,而是在 DeepSeek-V4 权重上附加草稿模块,通过半自回归生成(并行骨干 + 轻量级顺序头)实现无损加速。生产环境下,DeepSeek-V4-Flash 和 V4-Pro 每用户生成速度较 MTP-1 基线分别提升 60–85% 和 57–78%。离线测试中,接受长度比 Eagle3 高 26–31%,比 DFlash 高 16–18%。配套 DeepSpec 训练代码库采用 MIT 许可证。
DeepSeek 发布了 DSpark,一个投机解码框架,并开源了检查点和训练代码。这是一项服务优化,而非新模型。检查点 DeepSeek-V4-Pro-DSpark 和 DeepSeek-V4-Flash-DSpark 复用了现有的 V4 权重,并附加了一个草稿模块。
DeepSeek 研究团队还开源了 DeepSpec,一个采用 MIT 许可证的代码库,用于训练和评估投机解码草稿模块。这项工作瞄准一个问题:在繁忙的生产服务中实现更快的大模型推理。
摘要
- DSpark 将并行草稿主干与一个极小的顺序头配对,以减少后缀衰减。
- 一个置信度头和负载感知调度器在 GPU 空闲时验证更多 token,在繁忙时验证更少。
- 离线场景下,接受长度相比 Eagle3 提升 26–31%,相比 DFlash 提升 16–18%。
- 在 DeepSeek-V4 的生产环境中,每用户生成速度比 MTP-1 基线快 60–85%。
- 输出保持无损,检查点及 DeepSpec 训练代码均已开源。
什么是 DSpark?
投机解码将生成拆分为两个角色。一个小型的草稿模型提议一个 token 块。完整的目标模型随后在一次前向传播中验证该块。
拒绝采样接受最长的有效前缀,并附加一个额外的 token。由于该规则精确保持目标分布,因此不存在质量损失。DSpark 保留了这一保证。它改变了 token 的草稿方式以及验证的数量。
它优化的延迟公式
每个 token 的延迟遵循论文中的一个公式:L = (Tdraft + Tverify) / τ。这里 τ 是每轮接受的 token 数量。加速仅来自三个杠杆。
你可以更快地草稿,从而降低 Tdraft。你可以更好地草稿,从而提高 τ。或者你可以更智能地验证,减少浪费的 Tverify。DSpark 同时拉动全部三个杠杆。
工作原理:半自回归生成
先前的草稿模块强制进行权衡。像 Eagle3 这样的自回归草稿模块使每个 token 依赖于先前的 token。这提供了很强的接受率,但草稿成本随块大小增长。
像 DFlash 这样的并行草稿模块一次生成整个块。草稿成本低廉,但每个位置忽略其邻居。结果是“多模态冲突”和沿着后缀的快速接受衰减。
DSpark将草稿生成分为两个阶段。其设置中的DFlash是一个重型并行主干,为每个位置生成基础logits。然后,一个轻量级的顺序头部在采样每个token之前添加一个依赖于前缀的偏置。
默认的顺序头部是马尔可夫头部。它只查看紧邻的前一个token。低秩分解(秩为256)使其即使在词汇量大的情况下也保持低成本。
一旦位置一采样到 'of',头部就会提升 'course' 并抑制 'problem'。一个可选的RNN头部会跟踪整个块的前缀。它带来的收益微乎其微,因此默认采用马尔可夫头部。
收益逐位置显现。DSpark继承了并行主干的高首token准确率。然后顺序头部使得接受率在块深处保持稳定。
训练冻结目标模型并复用其嵌入和输出头部。总变差损失是关键项。最小化该距离直接最大化草稿的接受率。
工作原理:置信度调度验证
更多的草稿token并不总是意味着更快的速度。在重负载下,验证将被拒绝的token会浪费批处理容量。DSpark添加了两个部分来解决这个问题。
一个置信度头部为每个草稿位置输出一个分数。该分数估计在给定已接受的前驱token的情况下,该token通过验证的概率。它由解析的每步接受率进行监督。
原始的神经网络置信度通常过于自信。因此研究团队应用了顺序温度缩放,这是一种事后校准步骤。它将期望校准误差从3–8%降低到大约1%。
然后,一个硬件感知的前缀调度器为每个请求设置验证长度。它使用在启动时测量一次的剖析吞吐曲线SPS(B)。当GPU空闲时,它验证更多的token。当GPU繁忙时,它验证更少的token。
调度器使用提前停止规则以保持无损。附录部分给出了一个反例,说明为什么朴素的全局搜索会泄露信息。
指标
离线测试涵盖数学、代码和日常聊天。目标包括Qwen3-4B、8B、14B和Gemma4-12B。DSpark在每一个领域上的接受长度均优于两个基线。
在 Eagle3 上,三种 Qwen3 尺寸版本的平均接受长度分别提升 30.9%、26.7% 和 30.0%。在 DFlash 上,提升幅度分别为 16.3%、18.4% 和 18.3%。仅两层 DSpark 即可超越五层 DFlash。
顺序头带来的额外成本极低。将草稿长度从 4 扩展到 16,每轮延迟仅增加 0.2%–1.3%。作为回报,接受长度提升最高达 30%。
生产环境结果来自 DeepSeek-V4-Flash 和 V4-Pro 在真实流量下的表现。基线为 MTP-1(之前的单 token 方案)。在相同吞吐量下,Flash 版每用户速度提升 60–85%,Pro 版提升 57–78%。已上线配置为 DSpark-5,即一个包含马尔可夫头的五 token 草稿块。
| 草稿模型 | 草稿生成方式 | 块计算成本 | 后缀接受率 | 验证长度 |
|---|---|---|---|---|
| Eagle3 | 自回归 | 随块大小增长 | 高且稳定 | 固定 |
| DFlash | 并行 | 近似恒定 | 快速衰减 | 固定(完整块) |
| MTP-1 | 单 token(MTP) | 低 | — | 静态 2 token |
| DSpark | 并行 + 顺序头 | 近似恒定 | 高且稳定 | 动态、负载感知 |
用例及示例
结构化任务从更长的验证中获益最多。在代码生成中,接受率天然较高。调度器可以验证较长的前缀而几乎没有浪费,因此编码智能体能够更快地输出结果。
开放式对话的表现则不同。通过置信度阈值扫描,对话接受率从 45.7% 提升至 95.7%。置信度头会标记不确定的后缀 token,以便将其裁剪。
数学推理介于两者之间。在相同的扫描中,其接受率从 76.9% 提升至 92.5%。长流程的逐步推理轨迹受益于稳定的深层块接受率。
高并发服务是主要应用场景。在中等负载下,调度器每个请求大约验证 4–6 个 token。随着并发度上升,它会缩减该预算以保障吞吐量。
尝试使用
DeepSpec 运行分为三个阶段:数据准备、训练,然后评估。配置文件用于选择算法和目标模型。评估在九个数据集上对训练好的草稿检查点进行基准测试。
# Install dependencies
python -m pip install -r requirements.txt
# Train a DSpark draft against a Qwen3-4B target.
# The algorithm and target are chosen by the config, e.g.
# config/dspark/dspark_qwen3_4b.py
bash scripts/train/train.sh
# Evaluate the trained draft across the 9 benchmark datasets.
# Set in the eval config:
# target_name_or_path = Qwen/Qwen3-4B
# draft_name_or_path = ~/checkpoints/deepspec/dspark_block8_qwen3_4b/step_latest
bash scripts/eval/eval.sh默认配置假设单节点配备 8 块 GPU。减少 CUDA_VISIBLE_DEVICES 可适配更少 GPU。请注意,目标缓存可能很大,Qwen3-4B 设置下接近 38 TB。
对于生产检查点,草稿模块会附着在现有的 V4 权重上。Hugging Face 模型卡在 inference 文件夹中提供了一个最小推理示例。无需对目标模型进行重新训练。
下方的交互式演示展示了这一机制。选择一个起草器、一个领域以及一个 GPU 负载级别。观察草稿块、置信度分数以及调度器的验证预算如何实时变化。这些数字仅作示意,基于论文中报告的行为建模。