跳到正文
动手理解 · CONCEPT LAB

半自回归草稿怎样把并行、依赖和验证预算连起来?

DSpark 先用并行 backbone 产整块 base logits,再用轻量 Markov head 左到右补前驱依赖;confidence 只帮助调度器选验证前缀,真正的接受与拒绝校正仍由目标模型分布决定。

已经发生 正在观察 接下来
01 / 03

状态传导图

ANCHOR 上一轮锚点
BACKBONE 并行 Backbone
LOGITS 整块 Base Logits
MARKOV 轻量 Markov Head
DRAFT 草稿前缀

读数只表达计算职责,不是论文公布的 FLOPs 百分比。

观察点 01

重计算并行一次做,token 依赖由轻量头串行补回

Parallel backbone 一次产生所有位置的 base logits;Markov head 再把前一个已采样 token 变成低秩偏置,左到右形成真正的 draft block。

重计算并行化机制示意
块内前驱依赖由串行头补回
此刻要记住

它不是“所有 token 完全并行”:并行的是重 backbone,串行的是很轻的采样修正。

SYSTEMS · SPECULATIVE DECODING

DSpark:不让大模型更聪明,而让它 「吐字更快」

DSpark 是 DeepSeek 与北京大学作者提出的投机解码(Speculative Decoding)框架:冻结目标模型,另训轻量草稿模型(drafter)先提出一段 token,再由目标模型并行验证。它用半自回归生成提高长草稿质量,再用置信度调度按负载裁掉不值得验证的尾部;严格遵守非预见调度与拒绝采样校正时,最终采样分布仍与目标模型一致。

先修 不熟悉猜测、验证和校正?先读 《投机解码》入门专题

IDENTITY推理加速框架不是更强的新模型 OFFLINEaccepted length不等于端到端 speedup LIVE TRAFFICFlash +60–85%Pro +57–78% · 同吞吐 V4 RECIPE7-token greedy 示例长度可配 · v0.25.1 无动态 confidence
一组轻量草稿 token 先并行提出候选,中间由目标模型批量验证,通过的连续前缀被快速输出
直觉总览:便宜的草稿先多走几步,昂贵的目标模型一次验一段;DSpark 的新增价值,是让草稿后缀更连贯,并让验证长度随负载变化。
01 · 一句话讲清

它优化的不是「答得准不准」,而是「答得快不快」

大模型生成通常是逐 token 自回归的:键值缓存(Key–Value Cache, KV Cache)避免重算历史 K/V,却没有消除输出位置间的串行依赖。DSpark 不改变目标模型本身的能力,而是减少昂贵的目标模型解码轮数。这里的「无损」是分布意义:在相同目标采样设置、精确拒绝采样和因果调度下,最终输出的概率分布等于目标模型本体;并不是每个被接受 token 都直接由目标模型重新采样,也不是浮点实现绝对零误差。

普通解码 / 投机解码 / DSpark
普通解码:大老板每次亲自写一个字,写完一个再写下一个。
投机解码:实习生先快速写一小段草稿,老板一眼扫过去审核——审核通过的部分直接采用,一次就前进好几个字。
DSpark:实习生写草稿时还会看着前一个字顺手修一下语感(半自回归);同时秘书会看老板现在忙不忙,决定这次让老板审几个字最划算(置信度调度)。
为什么「快」还能保持目标分布
草稿 token 以 min(1,pt/pd) 接受;若被拒,不能简单改为目标分布重抽,而要从 max(0,pt−pd) 归一化后的校正分布采样。若整块都通过,才从目标模型的下一位置分布采 bonus token。严格执行这套规则时,最终边缘分布等于目标模型。它主要改变延迟/吞吐/成本,不应被解读为提高目标模型 benchmark 准确率。

← 左右滑动查看完整闭环 · 打开原图

一轮精确数据流:重计算集中在并行 backbone,串行 head 只补块内前驱依赖;confidence 不决定 token 是否被接受,只供 scheduler 选择值得送去验证的前缀。最终接受、拒绝校正与 bonus token 仍由目标模型分布决定。
02 · 背景

投机解码:把「逐字生成」换成「猜一段 + 验一次」

一轮投机解码:草稿模型 Md 提出 γ 个候选 token,目标模型 Mt一次前传并行验证全部候选,从左到右接受「与自己分布一致」的最长前缀。第一个被拒的位置,后面的全部丢弃。

① 草稿模型猜 γ 个 token(一次或多次便宜前传) 机器 学习 一种 ② 目标模型一次前传验证 → 接受前缀;拒绝处按校正分布补 token 机器✓接受 学习✓接受 ✗拒绝 一种丢弃 让→人工校正 token 本轮一次前进 3 个 token 「机器 学习 让」← 拒绝点后重采样 关键:验证是「一次前传并行」的,所以一轮能前进多个 token——这就是加速来源
γ (gamma) 一轮草稿提出的 token 数(block size) τ (tau) 一轮平均被接受的 token 数(越大越快) 校正 / bonus token 被拒时采校正分布;全接受时再采下一位置 分布无损 严格算法使最终边缘分布 = 目标模型
两种 token 的手算:为什么拒绝后不能随便重抽
假设词表只有 A/B,目标分布 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,正好还原目标分布。
min ⁣(1, ptk(xk)pdk(xk))\min\!\left(1,\ \dfrac{p^{k}_{t}(x_k)}{p^{k}_{d}(x_k)}\right)
pcorr(x)=max(0,pt(x)pd(x))ymax(0,pt(y)pd(y))p_{\mathrm{corr}}(x)=\dfrac{\max(0,\,p_t(x)-p_d(x))}{\sum_y\max(0,\,p_t(y)-p_d(y))}
那「能快多少」由什么决定?
每生成一个 token 的平均延迟可以写成一条公式:
L=Tdraft+TverifyτL=\dfrac{T_{\text{draft}}+T_{\text{verify}}}{\tau}

Tdraft = 草稿耗时、Tverify = 验证耗时、τ = 每轮平均接受的 token 数。要更快,只有三个杠杆:① 草稿更快(降 Tdraft)② 草稿更准(升 τ)③ 验证更聪明(减少无效的 Tverify)。DSpark 三个杠杆一起拉——这是它和很多只优化其中一个的工作的根本区别。

03 · 它要解决的两难

传统草稿模型:要么「准但慢」,要么「快但糊」

草稿模型的设计,本质是在 Tdraft(草稿速度)和 τ(接受率)之间权衡。已有两条路,各有死穴。

自回归草稿(如 EAGLE-3)— 准但慢
每个草稿 token 都看着前面已采样的草稿 token 生成 → 有依赖、后缀稳、接受率高。
死穴:草稿耗时随块长线性增长Tdraft ∝ γ),逼得它只能用短块 + 浅网络,否则草稿本身就拖慢了。
并行草稿(如 DFlash)— 一次前传,但后缀易衰减
一次前传同时给出整块 logits;论文观察其 drafting latency 在测试长度内近似不随块长线性增长,因而可用更深网络与更长块。Figure 4 把「γ 个 proposal + 1 个 anchor」的总 draft length 从 4 扩到 16,即 γ 从 3 到 15。这不等于计算复杂度严格为 O(1):block 变长仍会增加张量与采样工作。代价是每个位置不依赖块内已采样的前驱,后缀 conditional acceptance 容易下降。
「多峰碰撞(multi-modal collision)」是什么:当上下文有多个合理续写,比如「of course」和「no problem」,并行草稿因为每个位置都对「所有可能的前一个词」取平均、而不是盯着实际采样出的那个词,就可能拼出「of problem」「no course」这种串味组合。位置越靠后、可能性越多,越容易翻车——这就是后缀掉速的根源。
位置条件接受率 草稿位置 1 → 7(越往右越靠后) 1234567 EAGLE-3 DFlash DSpark 趋势示意(据论文 Figure 2):并行起点高但掉得快、自回归低开稳走、DSpark 高开且稳
位置 1 最关键 一旦第 1 个被拒,整块全废 → 起点高的并行草稿反而总体更划算 后缀掉速 并行草稿越往后接受率越低
04 · 核心创新①

半自回归生成:保留并行的快,补回一点串行的准

DSpark 的思路很「贪心」:既要并行草稿的高吞吐起点,又要自回归草稿的后缀连贯。做法是把草稿拆成两段——重的并行骨干负责绝大部分计算,在论文测试范围内让 Tdraft 不随块长线性增长;再挂一个极轻的串行头,只给每个位置按「前一个字」加一点修正偏置。

锚点 token上轮大模型输出 ① 并行骨干(重) DFlash 式,一次前传 给每个位置 base logits 一次前传;实测延迟近似不线性随块长增长 ② 串行头(极轻) 按「前一个字」加修正偏置 B_k 从左到右采样,补回块内依赖 默认 Markov 头 · 低秩 r=256 草稿块高开 + 稳走 Markov 头在做什么? 位置1 一旦采样到「of」,它就给位置2 的「course」加分、 给「problem」减分 → 化解「of problem」式串味。 骨干扛算力、串行头补依赖:两段分工是 DSpark 的核心
base logits 并行骨干给每个位置的初始打分 转移偏置 Bk 串行头按前一个 token 给当前位置的微调 低秩 r=256 把 V×V 大矩阵拆成 W₁W₂,省存储省计算
Markov 头(默认)
最简版本:偏置只依赖紧邻的前一个 token,是个一阶转移。本应是 V×V 大矩阵,用低秩分解 B = W₁W₂(W₁ 当查表、W₂ 当投影,秩 r=256)压成又小又快。
B(xk1,)=W1[xk1]W2RVB(x_{k-1},\cdot)=W_1[x_{k-1}]\,W_2\in\mathbb{R}^{V}
像个很小的「接词器」:of→course、New→York、machine→learning。不重跑大模型,只用极便宜的方式把「前字对后字的影响」补回来。
RNN 头(可选)
Markov 头只显式看紧邻一步;循环神经网络(Recurrent Neural Network, RNN)头用循环 state 汇总块内前缀。论文在 Qwen3-4B 的消融里发现 RNN 主要在长块上比 Markov 略有提升,但实现更复杂、部署属性较差,因此作者的默认实验与 V4 内部生产配置使用 Markov 头。这是该实验范围内的工程取舍,不是“一阶依赖普遍足够”的定律。
消融实验中的代价
在 Qwen3-4B、batch 128、context length 512/1024/2048/4096 取平均的设置中,总 draft length(γ 个 proposal + 1 个 anchor)从 4 扩到 16,相对 DFlash 的 full-round latency 多 0.2%–1.3%,accepted length 最高提升 30%;同一消融里 2-layer DSpark 超过 5-layer DFlash。它说明局部自回归在这组设置里有效,不能直接外推为任意硬件、batch 或目标模型的固定开销。
05 · 核心创新②

置信度调度:不是验得越多越好,要「按负载验得聪明」

半自回归让 DSpark 能高效产出长草稿块,但「产得多」≠「快得多」。如果系统很忙,你还把一长串低置信度的尾部 token 都丢给大模型验,就会白占 batch 容量、拖垮整体吞吐。DSpark 用「置信度头 + 硬件感知调度器」两件套解决。

置信度头:预测「这个草稿 token 能不能活过验证」

confidence head
做了什么:给每个草稿位置输出一个 0~1 的分 ck——在「前面都被接受」的条件下,这个 token 能通过大模型验证的概率。它的监督信号不是「猜没猜中」,而是草稿分布与目标分布的接近程度(解析接受率):
ck=112pdkptk1c^{*}_{k}=1-\tfrac{1}{2}\,\lVert p^{k}_{d}-p^{k}_{t}\rVert_1
两个分布越像,理论接受率越高。这也解释了 DSpark 的训练为什么死磕「分布对齐」而不是「token 对错」(见下一节)。

STS 校准:神经网络的置信度天生「过度自信」,得掰正

Sequential Temperature Scaling
做了什么:调度器需要的是绝对准确的概率值(要拿它算期望接受长度),但原始神经网络置信度往往偏高。STS 是一种事后温度校准:在留出验证集上,从左到右逐位置做一维网格搜索,最小化累积乘积的期望校准误差(Expected Calibration Error, ECE)效果:把 ECE 从 3%–8% 压到约 1%,且是保序变换(不打乱原排序)。

硬件感知前缀调度器:把「验几个」变成一道吞吐最大化题

hardware-aware prefix scheduler
做了什么:引擎启动时测一次「不同 batch 大小 B 下每秒能跑几步」的每秒步数(Steps per Second, SPS)曲线 SPS(B),存成轻量代价表。在线时,调度器在一批请求里,把所有候选 token 按累积存活概率(前缀连乘 ar,j=∏ci)全局排序,贪心地一个个「录取」,目标是最大化系统级吞吐:
Θ=τSPS(B)max1,,R Θ\Theta=\tau\cdot \mathrm{SPS}(B)\quad\Rightarrow\quad \max_{\ell_1,\dots,\ell_R}\ \Theta
最优性的边界:当总验证 batch size B 固定时,按累积存活概率从高到低选是最优分配,因为这些概率沿每条请求前缀单调不增。Algorithm 1 再沿这条路径搜索 B;「吞吐首次下降就停」只有在目标 Θ 单峰时才得到全局最大值。早停同时保证当前 admission 不依赖尚未处理的未来草稿 token,从而满足 non-anticipating 条件。
生产实现面对锯齿状 SPS 与 Zero-Overhead Scheduling(ZOS,零开销调度)/CUDA Graph,使用两步前的预测来定 capacity K、当前 confidence 只负责 top-K 排序;这个历史屏障允许移除早停并做全路径搜索。论文据此主张仍保持因果性与目标分布,但这是作者系统的实现论证。
直觉一句话系统空闲就多验几个(争取一轮前进更多)、系统拥挤就只验高置信前缀(别把 GPU 浪费在大概率被拒的尾巴上)。MTP-1 老基线的验证预算固定为 2(约等于 1 个常规目标 token + 1 个 MTP 草稿 token);DSpark 在论文生产的中等并发区间把平均预算扩到约 4~6,并发再升高时会继续收缩。
系统空闲(低并发) 多验几个(~5)→ 一轮前进更多 token 空闲算力不用白不用 系统拥挤(高并发) 只验高置信前缀(~2)→ 省 batch 容量给别人 别为大概率被拒的尾巴买单
06 · 和传统方法的区别

和传统 MTP / 投机解码到底差在哪?创新点小结

投机解码并非 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,再随负载收缩。

那么,DSpark 的「创新点」到底是哪几条?

① 半自回归生成

并行 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,把它从「论文加速」做成生产系统

和 MTP 的关系,别搞混
V4 预训练仍包含 MTP 辅助目标;服务时,MTP module 也可以充当 drafter。DSpark-5 在论文所述的 V4 preview 内部生产系统里,替换的是 MTP-1 作为 drafter/验证方案,并未删除已经训练进 target model 的 MTP 目标影响。这个部署事实也不能自动推断核查日的所有 DeepSeek 公共 API 请求都走同一条 DSpark 路径。
07 · 训练目标

为什么它的 loss 直接对着「接受率」优化

DSpark 训练时冻结目标模型,草稿模型共享并冻结它的 embedding 和输出头,只训:骨干 + 串行头 + 置信度头。关键不是「token 交叉熵最低」,而是让草稿分布尽量像目标分布——因为这才直接决定接受率。

损失项作用权重
CE
Cross-Entropy · 交叉熵
让草稿能预测对的下一个 token0.1
TV
Total Variation · 总变差
主力:罚草稿与目标分布的 L1 距离(接受率 = 1 − ½·L1,故 L1 是接受率的直接代理);最小化它=直接最大化期望接受率0.9
Conf
Confidence · 置信度
二元交叉熵,训练置信度头去预测「解析接受率」这个软标签1.0
L=0.1Lce+0.9Ltv+1.0Lconf\mathcal{L}=0.1\,\mathcal{L}_{\text{ce}}+0.9\,\mathcal{L}_{\text{tv}}+1.0\,\mathcal{L}_{\text{conf}}

三项还都按位置加权 wk=exp(−(k−1)/γloss)更看重靠前的位置(前缀验证下,前面的 token 贡献更大)。这里把衰减超参数记作 γloss,避免和前文的草稿长度 γ 混淆;公开 Qwen3-4B 配置是 loss_decay_gamma=4.0block_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 定义里不可更改的常数。

08 · 成绩

它到底快多少:先把三种口径分开

分两块看:离线 benchmark(衡量草稿质量,关掉调度器、固定块长)和线上生产(衡量调度器,真实用户流量)。

离线:接受长度 τ(每轮接受的 token 数,越高越好;论文口径含大模型补的赠送 token)

对比Qwen3-4BQwen3-8BQwen3-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,也不代表换训练配方后仍必然领先。

内部生产:DeepSeek-V4 preview 引擎,相比 MTP-1 旧基线(论文 telemetry)

部署同等吞吐下单用户提速说明
V4-Flash60% – 85% 更快中等 SLA(80 tok/s/用户)吞吐 +51%
V4-Pro57% – 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 配置,尚非跨硬件第三方复现。

09 · 定位 & 局限

DSpark ≠ 新模型;它和 V4 / MTP 是什么关系

和 DeepSeek-V4 / MTP 的关系
DSpark 不是「V4.1」或更强版本,而是「同一个 V4 target checkpoint + 附加 speculative module」,目标模型不重训。
MTP(多 token 预测):模型训练/架构里自带的「预看几步」能力。
DSpark:服务系统里外挂的「先猜一段、再让大模型一次验、还按负载调度」的加速器。
论文里的 DSpark-5 生产 drafter:3 个混合专家(Mixture-of-Experts, MoE)层 + 流形约束超连接(Manifold-Constrained Hyper-Connections, mHC) + 128-token 滑动窗口注意力,γ=5、Markov head;作者称它在 V4 preview 发布两周后取代内部 MTP-1。核查日官方另发布了 V4-DSpark 权重包,模型卡的 vLLM 示例使用 7 speculative tokens;这与论文生产曲线的 DSpark-5 不是同一配置口径。
局限 / 注意
① 加速依赖草稿与目标的一致性:越开放、越长尾、越多分支的生成,后缀越易被拒;调度器能减少浪费,但变不出高质量草稿。
② 即便调度器砍掉尾部验证,草稿侧产首块的算力是固定成本,低接受率的难题上「不可回收」(未来可做难度感知早退)。
③ 「无损」依赖严格的验证/采样规则与因果性(不偷看未来 token),工程上还要抠数值精度、CUDA graph、ZOS 等细节。
④ 训练成本不低:DeepSpec 仓库 README 提示,默认 Qwen3-4B 设置下目标缓存约 38 TB——这是训练前的缓存开销,不是推理部署成本。
A/B

那 DSpark 和 MTP 是「正交」的吗?——只对了一半

关键:MTP 有两个身份
很多人会问:DSpark 和 MTP 是不是正交(互不相干、可叠加)?答案是一半正交、一半替代——因为 MTP 同时扮演两个角色,对这两个角色的答案不一样。
身份 A · 预训练辅助目标
DeepSeek-V3/V4 在 next-token loss 之外加入 MTP objective;V4 配置的 MTP depth=1。它为未来 token 提供额外训练信号,论文把它作为训练配方保留,但不能单独量化它对 V4 质量的贡献。
↔ DSpark:阶段上可并存。DSpark 冻结 target weights,另训 drafter;所以已有 MTP 预训练不妨碍服务时挂 DSpark。
身份 B · 当投机解码的 drafter
推理时,把那个多 token 头拿来「预看 1 个」当草稿做投机解码——这就是「MTP-1」
↔ DSpark:不正交,是替代。它俩抢的是同一个位置「谁来产投机草稿」;DSpark-5 取代的正是「拿 MTP 头当 drafter」的 MTP-1——二选一,不是叠加
从哪个层面看MTP 与 DSpark 的关系为什么
训练 vs 服务(分层)✅ 可并存target 可带 MTP 训练历史,同时在服务时使用独立 DSpark drafter
谁来产投机草稿(角色)❌ 互相替代MTP-1 和 DSpark 抢同一个 drafter 位置,DSpark 把保守的 MTP-1 换掉了

一句话:本页上面说「MTP 是模型内自带的预看能力、DSpark 是外挂的猜+验+调度加速器」讲的是分层那一面(正交);说「取代了 MTP-1」讲的是抢 drafter 位置那一面(替代)。两句话其实在分别描述 MTP 的两个身份——所以不是纯正交

10 · 开源与部署边界

论文讲的是完整闭环,公开代码只开放了其中几层

截至 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 + vLLMV4-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 telemetryDSpark-5,按负载把平均验证预算从约 4–6 再向下收缩证明作者测得的生产 Pareto frontier;目前不是第三方同硬件复现
想复现论文 Table 1
从 DeepSpec 的 Qwen3 / Gemma4 配置开始,并严格对齐 non-thinking、target 生成回答、temperature=1、训练数据和 block/TTT horizon。README 明示默认脚本假设单机 8 GPU;Qwen3-4B 的 target cache 约 38 TB,这是训练数据工程门槛,不是推理显存。
想直接跑 V4-DSpark
官方 Pro 模型卡给出的关键开关是:
--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 为准。
11 · 串起来

它在「推理加速」全景里的位置

推理加速可以按三笔账理解:降低单步计算与运行状态占用减少昂贵的串行目标模型轮次提高批处理与硬件利用率。量化、蒸馏、稀疏 MoE、KV 优化等手段可能横跨多笔账;尤其 MoE 主要减少每 token 激活计算,并不天然减少总权重驻留。DSpark 的主轴是「减少目标解码轮次」,同时用负载感知验证调度照顾服务利用率——这也是它不能只用 accepted length 一个数评价的原因。

减少串行目标轮次

投机解码怎样改变每轮前进长度 → 推理 & 部署

模型内多 token 预测

DeepSeek 系的 MTP 模块怎样训练 → DeepSeek-V3 拆解

验证与分布校正

拒绝采样怎样守住目标分布 → 投机解码专题

来源与核查

离线 drafter 实验、内部生产曲线与开源实现分别取证

本页核查日为 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/DeepSpecQwen3-4B 配置首个 commitblock 7 / 5 draft layers / rank 256 / 10 epochs、单机 8 GPU 默认假设、约 38 TB target cache;仓库 MIT,但改编文件保留各自许可与 NOTICE
离线 checkpointsDSpark Qwen3-4B drafter全套 released checkpointsTable 1 的 Qwen3 4B/8B/14B 与 Gemma4-12B drafter;README 明确要求对齐训练设置,并建议 thinking / 领域任务重新训练
V4 公开权重包V4-Pro-DSparkV4-Flash-DSpark模型卡明确“同一 checkpoint + speculative module”;两套所列仓库与权重标注 MIT License;官方 vLLM recipe 采用 7-token greedy 示例,不能与论文 DSpark-5 生产曲线混算,第三方依赖仍按各自许可证
vLLM 当前实现DSpark speculatorV4 DSpark loader官方 recipev0.25.1 的并行 backbone、Markov 顺序采样与固定 speculative steps;loader 注释明确 confidence head 尚未接入并丢弃权重;recipe 的最低版本、nightly 与硬件参数
生产训练与 ServingHAI-LLMDeepSeek-V4 技术报告内部训练框架背景与 V4/MTP 身份;DSpark 论文另给 hidden-state communication、anchor-bounded packing、ZOS 与变长 kernel,公开仓库未等价复刻完整生产栈
对照方法DFlashEAGLE-3并行 block diffusion 与自回归 / Training-Time Test drafter 的原始身份;本页成绩只采用 DSpark 作者统一重训后的同口径 Table 1
分布无损原理Fast Inference via Speculative DecodingSpeculative Sampling接受概率、拒绝后的 positive-part 校正分布与全接受时的 bonus token;“无损”指目标采样分布,不指浮点逐位一致或每个 token 由 target 直接重抽