状态传导图
读数只表达计算职责,不是论文公布的 FLOPs 百分比。
观察点 01
重计算并行一次做,token 依赖由轻量头串行补回
Parallel backbone 一次产生所有位置的 base logits;Markov head 再把前一个已采样 token 变成低秩偏置,左到右形成真正的 draft block。
- 重计算并行化机制示意
- 块内前驱依赖由串行头补回
它不是“所有 token 完全并行”:并行的是重 backbone,串行的是很轻的采样修正。
DSpark 先用并行 backbone 产整块 base logits,再用轻量 Markov head 左到右补前驱依赖;confidence 只帮助调度器选验证前缀,真正的接受与拒绝校正仍由目标模型分布决定。
状态传导图
读数只表达计算职责,不是论文公布的 FLOPs 百分比。
观察点 01
Parallel backbone 一次产生所有位置的 base logits;Markov head 再把前一个已采样 token 变成低秩偏置,左到右形成真正的 draft block。
它不是“所有 token 完全并行”:并行的是重 backbone,串行的是很轻的采样修正。
状态传导图
论文生产系统会随负载收缩预算;公开 V4 recipe 是 7-token greedy 示例,vLLM 长度可配,但 0.25.1 尚未接入 confidence 动态调度。
观察点 02
Confidence head 估计逐位置条件接受率,STS 校准累积前缀存活概率;scheduler 再把它与实测 SPS(B) 成本曲线、当前负载合在一起选验证长度。
Confidence 决定“值不值得送去验证”,不决定“这个 token 是否被接受”。
状态传导图
只要这些规则成立,调度改变计算量而不应改变目标采样分布;浮点逐位一致另受实现影响。
观察点 03
目标模型一次前传并行给保留位置打分,从左到右执行接受检验;首个拒绝处从 positive-part 校正分布采样,整块通过时再取 bonus token。
草稿结构再聪明,也不能跳过严格接受、拒绝校正与 non-anticipating 调度。
你现在应该能解释:草稿结构再聪明,也不能跳过严格接受、拒绝校正与 non-anticipating 调度。
DSpark 是 DeepSeek 与北京大学作者提出的投机解码(Speculative Decoding)框架:冻结目标模型,另训轻量草稿模型(drafter)先提出一段 token,再由目标模型并行验证。它用半自回归生成提高长草稿质量,再用置信度调度按负载裁掉不值得验证的尾部;严格遵守非预见调度与拒绝采样校正时,最终采样分布仍与目标模型一致。
先修 不熟悉猜测、验证和校正?先读 《投机解码》入门专题。
大模型生成通常是逐 token 自回归的:键值缓存(Key–Value Cache, KV Cache)避免重算历史 K/V,却没有消除输出位置间的串行依赖。DSpark 不改变目标模型本身的能力,而是减少昂贵的目标模型解码轮数。这里的「无损」是分布意义:在相同目标采样设置、精确拒绝采样和因果调度下,最终输出的概率分布等于目标模型本体;并不是每个被接受 token 都直接由目标模型重新采样,也不是浮点实现绝对零误差。
min(1,pt/pd) 接受;若被拒,不能简单改为目标分布重抽,而要从 max(0,pt−pd) 归一化后的校正分布采样。若整块都通过,才从目标模型的下一位置分布采 bonus token。严格执行这套规则时,最终边缘分布等于目标模型。它主要改变延迟/吞吐/成本,不应被解读为提高目标模型 benchmark 准确率。← 左右滑动查看完整闭环 · 打开原图
一轮投机解码:草稿模型 Md 提出 γ 个候选 token,目标模型 Mt 用一次前传并行验证全部候选,从左到右接受「与自己分布一致」的最长前缀。第一个被拒的位置,后面的全部丢弃。
pt=(0.7,0.3),草稿分布 pd=(0.5,0.5)。草稿若采 A,接受率是 min(1,0.7/0.5)=1;若采 B,接受率是 0.3/0.5=0.6。B 被拒时,校正分布只在 A 上有质量,因为 max(pt−pd,0)=(0.2,0)。于是最终 A 的概率是 0.5×1 + 0.5×0.4 = 0.7,B 是 0.5×0.6 = 0.3,正好还原目标分布。Tdraft = 草稿耗时、Tverify = 验证耗时、τ = 每轮平均接受的 token 数。要更快,只有三个杠杆:① 草稿更快(降 Tdraft)② 草稿更准(升 τ)③ 验证更聪明(减少无效的 Tverify)。DSpark 三个杠杆一起拉——这是它和很多只优化其中一个的工作的根本区别。
草稿模型的设计,本质是在 Tdraft(草稿速度)和 τ(接受率)之间权衡。已有两条路,各有死穴。
Tdraft ∝ γ),逼得它只能用短块 + 浅网络,否则草稿本身就拖慢了。DSpark 的思路很「贪心」:既要并行草稿的高吞吐起点,又要自回归草稿的后缀连贯。做法是把草稿拆成两段——重的并行骨干负责绝大部分计算,在论文测试范围内让 Tdraft 不随块长线性增长;再挂一个极轻的串行头,只给每个位置按「前一个字」加一点修正偏置。
B = W₁W₂(W₁ 当查表、W₂ 当投影,秩 r=256)压成又小又快。
半自回归让 DSpark 能高效产出长草稿块,但「产得多」≠「快得多」。如果系统很忙,你还把一长串低置信度的尾部 token 都丢给大模型验,就会白占 batch 容量、拖垮整体吞吐。DSpark 用「置信度头 + 硬件感知调度器」两件套解决。
ck——在「前面都被接受」的条件下,这个 token 能通过大模型验证的概率。它的监督信号不是「猜没猜中」,而是草稿分布与目标分布的接近程度(解析接受率):
SPS(B),存成轻量代价表。在线时,调度器在一批请求里,把所有候选 token 按累积存活概率(前缀连乘 ar,j=∏ci)全局排序,贪心地一个个「录取」,目标是最大化系统级吞吐:
投机解码并非 DSpark 发明;DeepSeek 此前生产基线是 Multi-Token Prediction(MTP,多 Token 预测)模块提供的 MTP-1。DSpark 研究的是两个具体问题:并行 drafter 的后缀接受衰减,以及固定长块在高并发时的验证浪费。下面的比较都应按论文训练设置和生产引擎理解,不代表所有 MTP 或所有 Eagle/DFlash 实现的永久属性。
| 方法 | 草稿怎么来 | 块内依赖 | 验证长度 | 老毛病 |
|---|---|---|---|---|
| 朴素投机解码 2023 | 用一个单独的小模型逐字猜 | 有(自回归) | 固定 | 草稿慢、还得额外维护一个模型 |
| MTP-1 论文中的旧生产基线 | 使用模型自带的 MTP module,多投机 1 个 | 由该模块建模 | 静态 budget = 2 1 个常规位置 + 1 个草稿 | 在 DeepSeek 的引擎与高并发流量下,静态 MTP-3/5 会降低 aggregate throughput |
| EAGLE-3 自回归 drafter | 融合 target 多层特征,直接预测 token;逐 token 串行 | 强 | 固定 | Tdraft∝γ,通常被迫用短块 + 浅网络 |
| DFlash 并行 drafter | 一次前传吐整块 | 无前缀依赖 块内可双向看,但不依赖已采样的前一字 | 固定(盲验整块) | 后缀掉速、盲验浪费 batch 容量 |
| DSpark | 并行骨干 + 串行头 | 半自回归 | 论文生产系统按负载动态 | 固定 draft-side 成本;训练、校准与变长 kernel 更复杂 |
准确说法是:MTP 是模型内的训练/预测模块,并不天然等于「固定 2」;论文只说明 DeepSeek 当时部署的是 MTP-1 静态基线。DSpark 另训并共部署 drafter + confidence head,不重训 V4 target weights,并在报告的中等并发区间把平均 target verification budget 从 2 扩到约 4–6,再随负载收缩。
并行 backbone 一次生成 block logits,轻量 sequential head 再按前一 token 加偏置;在论文消融里缓解 suffix decay,而 draft latency 没有随 block size 线性增长。
用校准后的 prefix survival 与实测 SPS(B) 决定每请求验证长度;理论算法靠 early stop 保因果,生产异步版靠两步历史 capacity 形成因果屏障。
用总变差 / L1(Total Variation / L1, TV/L1)损失直接优化接受率(不只优化交叉熵,Cross-Entropy, CE)、STS 校准让置信度可信;再配异步 ZOS、变长 kernel,把它从「论文加速」做成生产系统。
DSpark 训练时冻结目标模型,草稿模型共享并冻结它的 embedding 和输出头,只训:骨干 + 串行头 + 置信度头。关键不是「token 交叉熵最低」,而是让草稿分布尽量像目标分布——因为这才直接决定接受率。
| 损失项 | 作用 | 权重 |
|---|---|---|
| CE Cross-Entropy · 交叉熵 | 让草稿能预测对的下一个 token | 0.1 |
| TV Total Variation · 总变差 | 主力:罚草稿与目标分布的 L1 距离(接受率 = 1 − ½·L1,故 L1 是接受率的直接代理);最小化它=直接最大化期望接受率 | 0.9 |
| Conf Confidence · 置信度 | 二元交叉熵,训练置信度头去预测「解析接受率」这个软标签 | 1.0 |
三项还都按位置加权 wk=exp(−(k−1)/γloss),更看重靠前的位置(前缀验证下,前面的 token 贡献更大)。这里把衰减超参数记作 γloss,避免和前文的草稿长度 γ 混淆;公开 Qwen3-4B 配置是 loss_decay_gamma=4.0、block_size=7。一句话:不只让草稿「猜对答案」,而是让它「像大模型那样不确定」——因为投机解码的接受看的不是 top-1 对不对,而是整个分布像不像。
训练数据用 Open-PerfectBlend 约 130 万条,论文给出的配比是 chat 17.6%、math 39.4%、code 38.9%、instruction-following 4.1%;只取 prompt,回答由每个 target 以推荐采样参数重生成,non-thinking 模式训练 10 epoch。公开 Qwen3-4B 配置还对应 5 个 draft layers、Markov rank 256;这些是该 checkpoint 的复现实例,不是 DSpark 定义里不可更改的常数。
分两块看:离线 benchmark(衡量草稿质量,关掉调度器、固定块长)和线上生产(衡量调度器,真实用户流量)。
| 对比 | Qwen3-4B | Qwen3-8B | Qwen3-14B |
|---|---|---|---|
| DSpark vs EAGLE-3(自回归) | +30.9% | +26.7% | +30.0% |
| DSpark vs DFlash(并行) | +16.3% | +18.4% | +18.3% |
在作者统一重训的 EAGLE-3 / DFlash / DSpark、temperature=1、non-thinking、block/TTT horizon=7 的 Table 1 中,DSpark 在 4 个 target × 9 个 benchmark 的每个单元格都最高。例:Qwen3-4B 的 GSM8K accepted length 为 6.11(DFlash 5.40 / EAGLE-3 5.14),MT-Bench 为 3.64(3.07 / 2.39)。accepted length 包含论文所称 target-generated bonus token;这不是端到端 speedup,也不代表换训练配方后仍必然领先。
| 部署 | 同等吞吐下单用户提速 | 说明 |
|---|---|---|
| V4-Flash | 60% – 85% 更快 | 中等 SLA(80 tok/s/用户)吞吐 +51% |
| V4-Pro | 57% – 78% 更快 | 中等 SLA(35 tok/s/用户)吞吐 +52% |
生产实验使用 DSpark-5(最大 draft length γ=5、Markov head)。在严格 SLA(Flash 120 / Pro 50 tok/s/user)下,MTP-1 已进入极小并发的边界区,所以名义 +661% / +406% 主要说明可行 frontier 被推开,不是对满载基线的典型倍数。60%–85% / 57%–78% 是匹配 aggregate throughput 后沿拟合 frontier 读取的 per-user speed range,来自 DeepSeek 内部 live traffic 与 engine 配置,尚非跨硬件第三方复现。
| 从哪个层面看 | MTP 与 DSpark 的关系 | 为什么 |
|---|---|---|
| 训练 vs 服务(分层) | ✅ 可并存 | target 可带 MTP 训练历史,同时在服务时使用独立 DSpark drafter |
| 谁来产投机草稿(角色) | ❌ 互相替代 | MTP-1 和 DSpark 抢同一个 drafter 位置,DSpark 把保守的 MTP-1 换掉了 |
一句话:本页上面说「MTP 是模型内自带的预看能力、DSpark 是外挂的猜+验+调度加速器」讲的是分层那一面(正交);说「取代了 MTP-1」讲的是抢 drafter 位置那一面(替代)。两句话其实在分别描述 MTP 的两个身份——所以不是纯正交。
截至 2026-07-16,不能把「论文方法」「DeepSpec 研究仓库」「V4-DSpark + vLLM」和「DeepSeek 内部生产系统」画成一个完全等价的实现。最关键的缺口是:公开 vLLM 路径能跑半自回归草稿,但还没有复现论文生产系统的硬件感知动态验证闭环。
| 证据层 | 现在公开了什么 | 验证长度 / confidence | 能证明什么 |
|---|---|---|---|
| DeepSpec 研究仓库 | 数据准备、target cache、DSpark / DFlash / EAGLE-3 训练与离线评估;发布 Table 1 对应 checkpoints | 可做固定块和静态 confidence threshold、记录 ECE/AUC;未见论文的 STS + SPS(B) 硬件调度器实现 | 可复现 drafter 质量与离线 accepted length;不等于生产 Serving 曲线 |
| V4-DSpark + vLLM | V4-Pro / Flash 同一 target checkpoint 加附加 speculative module;vLLM 0.25.1 含并行 backbone + Markov 串行采样 | 官方 recipe 示例设为 7-token greedy,但 num_speculative_tokens 可配置;v0.25.1 源码明确暂未接入 confidence head,加载时丢弃其权重 | 证明公开权重可走 DSpark drafter;不应宣称已获得论文的动态调度收益 |
| 论文生产系统 | 内部 HAI-LLM 训练优化、两步历史 capacity、异步 ZOS、变长 query kernel 与 V4 live-traffic telemetry | DSpark-5,按负载把平均验证预算从约 4–6 再向下收缩 | 证明作者测得的生产 Pareto frontier;目前不是第三方同硬件复现 |
--speculative-config '{"method":"dspark","num_speculative_tokens":7,"draft_sample_method":"greedy"}'示例机器为单节点 4×GB300。vLLM recipe 给 DSpark variant 标注最低 0.25.0,并仍要求跟随 nightly recipe;核查日最新稳定发布是 0.25.1。具体硬件、轮子与参数应以当前 recipe 为准。投机解码怎样改变每轮前进长度 → 推理 & 部署
DeepSeek 系的 MTP 模块怎样训练 → DeepSeek-V3 拆解
拒绝采样怎样守住目标分布 → 投机解码专题
本页核查日为 2026-07-16。截至核查时 arXiv 仍为 v1:DeepSpec 仓库最早提交在 2026-06-26 12:42:03 UTC,论文提交于 2026-07-06 14:28:06 UTC;二者不是同一个“6 月论文发布日期”。时效性强的框架版本、recipe 与权重包均按核查日快照表述。
| 主题 | 一手来源 | 核查重点 |
|---|---|---|
| 方法、理论与实验 | DSpark 论文 v1 | 半自回归 head、confidence/STS、Algorithm 1 的单峰与 non-anticipating 边界、训练损失、Table 1、生产异步因果屏障和 V4 live-traffic 曲线 |
| 研究代码与配置 | deepseek-ai/DeepSpec;Qwen3-4B 配置;首个 commit | block 7 / 5 draft layers / rank 256 / 10 epochs、单机 8 GPU 默认假设、约 38 TB target cache;仓库 MIT,但改编文件保留各自许可与 NOTICE |
| 离线 checkpoints | DSpark Qwen3-4B drafter;全套 released checkpoints | Table 1 的 Qwen3 4B/8B/14B 与 Gemma4-12B drafter;README 明确要求对齐训练设置,并建议 thinking / 领域任务重新训练 |
| V4 公开权重包 | V4-Pro-DSpark;V4-Flash-DSpark | 模型卡明确“同一 checkpoint + speculative module”;两套所列仓库与权重标注 MIT License;官方 vLLM recipe 采用 7-token greedy 示例,不能与论文 DSpark-5 生产曲线混算,第三方依赖仍按各自许可证 |
| vLLM 当前实现 | DSpark speculator;V4 DSpark loader;官方 recipe | v0.25.1 的并行 backbone、Markov 顺序采样与固定 speculative steps;loader 注释明确 confidence head 尚未接入并丢弃权重;recipe 的最低版本、nightly 与硬件参数 |
| 生产训练与 Serving | HAI-LLM;DeepSeek-V4 技术报告 | 内部训练框架背景与 V4/MTP 身份;DSpark 论文另给 hidden-state communication、anchor-bounded packing、ZOS 与变长 kernel,公开仓库未等价复刻完整生产栈 |
| 对照方法 | DFlash;EAGLE-3 | 并行 block diffusion 与自回归 / Training-Time Test drafter 的原始身份;本页成绩只采用 DSpark 作者统一重训后的同口径 Table 1 |
| 分布无损原理 | Fast Inference via Speculative Decoding;Speculative Sampling | 接受概率、拒绝后的 positive-part 校正分布与全接受时的 bonus token;“无损”指目标采样分布,不指浮点逐位一致或每个 token 由 target 直接重抽 |