DeepSeek-AI × 北京大学 · 2026.06.27

DSpark 论文精读 Confidence-Scheduled Speculative Decoding with Semi-Autoregressive Generation

一种把「并行草稿的高吞吐」和「负载感知的智能验证」缝合在一起的推测解码框架。已在 DeepSeek-V4 线上真实流量中部署,相对老基线 MTP-1,单用户生成速度提升 60%–85%。本文按论文章节逐节忠实还原全部事实、公式与数字,并为每个关键概念挑选最合适的讲法和配图。

📄 33 页技术报告 🐋 DeepSeek-V4 已上线 🔓 开源 DeepSpec + checkpoint 🎯 方向:Speculative Decoding
00

背景:大模型推理为什么慢

用「背景铺垫」开场——先交代清楚 DSpark 出现之前的状况,读者才有落脚点。

大语言模型是自回归生成文本的:每生成一个新 token,都要基于前面所有 token 跑一次完整的前向传播,因此推理延迟与输出长度成正比。论文开篇点明,由此带来的低 GPU 利用率高用户感知等待时间,构成了生产环境 LLM serving 的主要瓶颈,尤其在实时对话助手、多轮 agent 工作流这类对延迟敏感的场景。

推测解码(speculative decoding)是一条公认有原理依据的解法。但论文指出:当人们想用「并行草稿器 + 长草稿块」把这条路推到极致时,会撞上两个关键瓶颈——一个在生成质量,一个在系统效率。DSpark 的全部设计就是分别拆掉这两堵墙。

🧭一句话定位:DSpark = 半自回归生成(解决质量瓶颈,对应「让草稿更准」)+ 置信度调度验证(解决系统效率瓶颈,对应「让验证更聪明」)。两个机制互补。
01

推测解码的基本盘

这是后面一切机制的地基。先用三段式立定义,再用「逐步推演」走一遍加速公式,最后用类比卡落地。

📝 推测解码(Speculative Decoding)
是什么

用一个轻量草稿模型 $M_d$ 加速一个大的目标模型 $M_t$。每个解码周期,草稿模型先提议 γ 个候选 token $x_1,...,x_γ$;目标模型用一次前向传播并行验证整块,通过拒绝采样接受「与自己分布一致的最长前缀」,并在末尾补一个 bonus token(本文与 anchor token 同义,指上一轮目标模型生成的最后一个 token)。

为什么

因为验证是并行的(一次前向查完整块),且接受规则在数学上精确保持目标分布不变——所以它是无损加速:输出分布与原模型逐 token 解码完全一致,只是更快。这是它区别于「直接换小模型」等有损方法的根本。

例子

具体到验证规则:在每个位置 k,目标模型算出自己的分布 $p^t_k$,与草稿分布 $p^d_k$ 比较,以概率 $\min(1, p^t_k(x_k)/p^d_k(x_k))$ 接受该 token。

验证从左到右严格进行:在位置 k 第一次拒绝,会把后面所有 token $x_{k+1},...,x_γ$ 全部丢弃,无论它们本身质量如何。这个「前缀生存」特性贯穿全文——越靠前的 token 杠杆越大

逐步推演:加速到底来自哪三条杠杆

论文用一个公式把加速空间拆得很清楚。设 τ 为每周期接受的 token 数,$T_{draft}$、$T_{verify}$ 为草稿与验证耗时,则平均每 token 延迟:

L = (T_draft + T_verify) / τ

顺着这个式子推:要把 L 压小,只有三条路——

  1. 降低 $T_{draft}$ —— 草稿打得更快

    让草稿生成本身耗时更短。

  2. 提高 τ —— 草稿打得更准

    每轮被接受的 token 更多,分母变大。

  3. 减少有效 $T_{verify}$ —— 验证得更聪明

    不在注定被拒的 token 上浪费验证算力。

记住这三条:DSpark 的两个机制,恰好分别对应「升 τ」(半自回归)和「降有效 $T_{verify}$」(置信度调度)。

类比
🔗 草稿模型 = 帮你打草稿的实习生

实习生(草稿模型)先把一段话草拟出来,你(导师/目标模型)扫一眼,从头往后看,看到哪句不对就从那句开始作废,把之前认可的留下,自己补上正确的下一句。实习生干活快,你只需做一次并行审阅。「从某句开始作废、后面全丢」正好对应推测解码「第一次拒绝就丢弃整个后缀」的规则。

02

两类草稿器,与各自的坑

草稿模型架构决定 T_draft 和 τ 怎么权衡。这里用「对比解释」立两派,用「误区澄清」处理一个反直觉点,再「机制拆解」DFlash。

对比解释:自回归 vs 并行

🐌 自回归草稿器 如 Eagle3
  • 每个位置依赖前面已采样 token,建模能力强、有 token 间依赖。
  • 但草稿成本随块长线性增长:$T_{draft} ∝ γ$。
  • 为压住延迟,被迫用很短的块 + 很浅的网络
  • 有的用树状验证扩展候选,但验证 token 太多又拖低吞吐。
⚡ 并行草稿器 如 DFlash
  • 一次前向产出全部 γ 个 token,$T_{draft}$ 几乎与块长无关
  • 因此能用更深的网络 + 更长的块(如 γ=16)。
  • 但每个位置独立预测,无法建模 token 间依赖
  • → 后缀接受率快速衰减(suffix decay)。
🤔误区澄清:很容易想当然地以为「逐步自回归一定比并行生成质量更高」。论文实测恰恰相反——并行草稿器(DFlash)和半自回归(DSpark)常常比纯自回归(Eagle3)接受长度更长。原因下一节用数据揭示:并行模型靠深网络在第一个 token(杠杆最大的位置)精度更高,这份开局优势被前缀生存机制放大,足以盖过它后段的衰减。

误区背后的元凶:多模态碰撞

💥 多模态碰撞(Multi-modal Collision)
是什么

并行草稿器后缀接受率骤降的根本原因。每个位置预测时是对「所有可能的前文」做边缘化平均,而非基于实际采样出的那一个前文做条件预测,于是拼出前后矛盾的组合。

为什么

当上下文有多个合理续写(如「of course」和「no problem」)时,位置 1 选了「of」,位置 2 却独立地选了「problem」,拼成不存在的「of problem」。每个位置「单独正确」,合起来却错。

例子

像两个不通气的翻译各译半句:一个按英式起头,一个按美式收尾,各自通顺,拼一起不伦不类。DSpark 要做的,就是让后半句那位「看到」前半句实际写了什么。

机制拆解:SOTA 并行草稿器 DFlash(DSpark 的骨干)

DSpark 的并行骨干基于 DFlash,论文把它的关键机制讲清了:

03

机制一:半自回归生成

核心思路——保留并行骨干的高吞吐,只挂一个极轻的串行小头注入「块内依赖」,专治后缀衰减。对应三杠杆里的「升 τ」。

📎 需先理解 多模态碰撞:它正是这个机制要消除的毛病。
① 并行骨干 (DFlash) 一次前向 · 重计算 · 与块长无关 h₁,U₁ h₂,U₂ h₃,U₃ h₄,U₄ base logits(互相独立,易碰撞) 😵 多模态碰撞 ② 串行小头(轻量 · 左到右) 给每个位置补转移偏置 Bₖ x₁=E x₂=F x₃=G x₄=H 条件于前一个实际采样的 token ✅ 后缀连贯
机制拆解图:并行骨干干「重活」一次产出所有位置的 base logits;轻量串行头从左到右补 prefix 依赖,把易碰撞的并行输出「捋顺」。串行部分必须极轻(T_sequential ≪ T_parallel),整体延迟仍由并行阶段主导。
🔗 半自回归结构(Semi-Autoregressive)
是什么

把草稿生成拆成两段:并行阶段(骨干一次前向产出所有 hidden state $h_k$ 和 base logits $U_k$)+ 串行阶段(轻量小头给每个位置补一个 prefix 相关的转移偏置 $B_k$,让它能条件于块内前面已采样的 token)。论文对原 DFlash 骨干只做一处微改:把 anchor 本身当作第一个预测位置(γ 个输入 = anchor + γ−1 个 mask,产出 γ 个 draft logits),从而减少草稿计算又维持质量。

为什么

纯并行快但碰撞、纯自回归连贯但慢。半自回归取两者之长:昂贵主体留在并行骨干(保速度),只用极轻串行环路注入局部转移信息(补依赖)。因串行采样天然顺序,小头必须足够轻,整体草稿延迟才仍由并行阶段主导。

例子

回到「of course」:一旦位置 1 采样出「of」,串行头就在位置 2 抬高「course」、压低「problem」,碰撞被化解。它不重算整句,只在原始 logits 上「微调口径」。

论文给出串行头的分布——通过自回归因式分解诱导一个「因果块分布」,而非全局归一化能量模型(这点关键,见下文相关工作):每个位置概率是 base logit 加转移偏置后再 softmax,$x_0$ 是上一轮 anchor token:

p_k(v | x₀, x<k) = softmax( U_k(v) + B_k(x₀, x<k, v) )
💬 没看懂这个公式?点这里换种说法
并行骨干先给每个词位算了一份「初步打分」$U_k$。串行头不推翻这份打分,而是根据「前面刚定下来的词」追加一份「修正分」$B_k$,两份相加再归一化(softmax)成最终概率。所以它叫「半」自回归:大部分计算是并行一次算完的,只有这层薄薄的修正是顺序进行的。因为修正项依赖前一个实际采样的词,块内 token 就不再各自为政了。

两种串行头实例(论文给了两个)

🎲 Markov 头(默认采用)
是什么

最简单的实例:转移偏置只依赖前一个 token,退化成一阶转移 $B(x_{k-1},x_k)$。原则上是 V×V 大矩阵,用低秩分解 $B=W_1W_2$ 近似($W_1∈ℝ^{V×r}$ 当 embedding 查表,$W_2∈ℝ^{r×V}$ 当 logit 投影,默认秩 r=256)。

为什么

低秩分解让存储和每步计算都很小,即使词表很大,串行环路也跑得动。一阶马尔可夫看似简单,却足以化解绝大多数相邻 token 碰撞,且实测性价比最高,故选作默认。

例子

位置 1 采样「of」后,Markov 头查表取出「of」对应那一行偏置,直接加到位置 2 的 logits 上把「course」顶上去。一次查表 + 一次投影,几乎零成本。

🧠 RNN 头(更强但更复杂)
是什么

Markov 头只记得前一步;RNN 头维护循环状态 $s_k$ 累积块内整段前缀历史。每步把上一状态 $s_{k-1}$、前一 token embedding $W_1[x_{k-1}]$、骨干 hidden $h_k$ 拼成输入,做一次门控更新,再投影成转移偏置(状态 $s_0$ 初始化为零)。

为什么

它能看到更长历史,理论上更准。但论文实验发现:RNN 头相对 Markov 头只带来很边际的提升(主要在更长块上),却有更高实现复杂度和更差部署特性。性价比不划算。

例子

好比从「只看上一个词」升级到「记得整句开头」。听起来更聪明,但对推测解码这种「块不长」的场景,多记那点历史换不回成本——于是论文最终选 Markov 头。

📌关键设计哲学:「一点点自回归就能走很远」。实验显示,2 层 DSpark 就能干过 5 层 DFlash——靠轻量串行头注入局部依赖,比单纯堆深并行层划算得多(详见第 06 节)。
04

机制二:置信度调度验证

能生成长草稿块 ≠ 端到端就快。盲目验证整块在高并发下反而拖垮吞吐。对应三杠杆里的「降有效 T_verify」。

因果链:为什么不能一股脑全验

论文把这个瓶颈拆成两个交织因素,可串成一条因果链:

🎯所以要的是一个统一机制,只把目标模型算力投向「期望回报为正」的 token。DSpark 用两个零件实现:置信度头(预测前缀生存概率)+ 硬件感知前缀调度器(按当前负载动态决定验证长度)。
🌡️ 置信度头(Confidence Head)
是什么

对每个草稿位置 k 输出一个 (0,1) 标量 $c_k$。关键在于它建模的是条件生存概率——「在前面所有 token 都已被接受的前提下,位置 k 通过目标验证的概率」。结构很轻:线性投影 + sigmoid,输入是骨干 hidden $h_k$ 与 Markov embedding $W_1[x_{k-1}]$。

为什么

有了每位置条件接受概率,累乘(链式法则)即得「整段前缀被接受」的联合概率,调度器才能据此算期望接受长度 τ。监督信号用「解析接受率」$c_k^* = 1 - ½‖p^d_k - p^t_k‖_1$(由草稿与目标分布的总变差距离决定)。

例子

像给草稿里每个词标「存活率」:这个词大概率能过(0.95),那个悬(0.4)。调度器看这串数字,就知道该在哪儿下刀截断。

📐 序贯温度缩放(STS, Sequential Temperature Scaling)
是什么

一种后处理校准。神经网络给的置信度通常过度自信,而调度器需要的是准确的绝对概率值(不只是排序)。STS 用留出验证集,从左到右逐位置做一维网格搜索,找最优温度标量,最小化累乘概率的期望校准误差(ECE),且固定已校准位置的分数。

为什么

因为调度器要靠累乘概率估吞吐,原始的过度自信分数会扭曲估算、导致次优调度。而温度缩放是保序变换:只把概率校准到匹配真实接受率,不打乱置信度头学到的相对排序。实测 ECE 从 3%–8% 降到约 1%。

例子

像给一个总打高分的考官「校准尺度」:他打 90 实际只值 75,乘个系数把刻度掰正,但谁强谁弱的排名不变。掰正后调度器据此算账才不会算错。

硬件感知前缀调度器:把概率变现

论文把「验证长度选择」formulate 成全局吞吐最大化问题。对一批 R 个活跃请求,每个选验证长度 $ℓ_r$;由于推测解码只接受连续前缀,位置 j 的生存概率是累乘 $a_{r,j}=∏_{i≤j}c_{r,i}$。一次验证步发给目标模型的总 batch 是 $B=∑(1+ℓ_r)$,期望接受 token 数 $τ=∑(1+∑a_{r,j})$。目标是最大化系统级吞吐 $Θ=τ·SPS(B)$,其中 SPS(B) 是引擎在批大小 B 下的「每秒步数」能力曲线——这条曲线在引擎初始化时只 profile 一次,存成轻量成本表,运行时 O(1) 查表

同一套草稿,不同负载 → 不同验证预算(对比分叉) 🌤️ 轻载 / 低并发 E ✓ F ✓ G ✓ H ✓ I ✓ 算力有空闲 → 多验几个,榨干 idle compute 🔥 重载 / 高并发 E ✓ F ✓ G ✂ H ✂ batch 紧张 → 裁掉低置信尾,护住容量
对比分叉图:调度器按累乘生存概率给所有请求的候选 token 全局排序,贪心从高到低纳入验证;轻载时多纳几个吃满空闲算力,重载时提前截断、剪掉低置信尾 token,避免它们挤占关键 batch 容量。

逐步推演:贪心 + 早停怎么求解

这个看似组合爆炸的优化,因为 $a_{r,j}$ 随 j 单调非增,可用贪心高效求解:

  1. 全局排序

    把所有请求的所有候选前缀扩展,按生存概率 $a_{r,j}$ 降序排成一个全局池。

  2. 逐个纳入 + O(1) 更新

    从高到低逐个纳入验证,每纳一个就更新 batch B 和期望接受 τ,再用成本表 O(1) 查出当前吞吐 $Θ=τ·SPS(B)$。

  3. 早停截断

    一旦吞吐不再上升($Θ ≤ Θ_{best}$)立即 break,返回此前最优的各请求验证长度。

⛓️ 非预知性(Non-anticipating)与早停的因果意义
是什么

无损推测解码的硬约束:纳入决策不能依赖未来的候选 token。但 DSpark 的置信度头依赖「前一个已采样 token」的 Markov 特征,算下一个生存概率 $a_{r,k+1}$ 需要当前候选 $x_{r,k}$ 已实例化——一个回溯式全局搜索会把 $x_{r,k}$ 泄漏进决策,引入选择偏差,破坏无损(论文附录 A 给了反例)。

为什么

为强制严格因果,调度器用早停:吞吐一旦下降就 break,使截断决策只依赖到该步为止已处理的前缀,与未来 token 隔离,保证精确还原目标分布。前提是 Θ 关于纳入数单峰(隐含假设硬件能力曲线平滑下降——真实硬件的非平滑问题在第 05 节处理)。

例子

像考试只能根据「已答的题」决定要不要答下一题,不能偷看后面答案再回头决定——一旦偷看,结果分布就会偏离「老老实实逐题做」的真值。

05

训练目标与系统级落地

怎么训出这套草稿器,以及把理论算法搬到 DeepSeek-V4 生产引擎要踩平哪些坑。

训练:三项损失 + 位置加权

训练时从每条目标序列随机采多个 anchor 位置,组成 γ-token 块作训练数据。目标模型全程冻结;草稿模型共享其 embedding 层和 LM head(也冻结),只更新骨干草稿器、串行块、置信度头。三项损失都按 $w_k=\exp(-(k-1)/γ)$ 位置加权(强调靠前位置,因它们对期望接受长度贡献更大):

总目标:L = α_ce·L_ce + α_tv·L_tv + α_conf·L_conf(默认权重 0.1 / 0.9 / 1.0)。

两项训练系统优化(在内部框架 HAI-LLM 内)

📡 Hidden state 通信
  • 传目标全词表 logits(V≈10⁵)跨 worker 是带宽瓶颈。
  • 改为只传 LM head 之前的 hidden states;LM head 投影在草稿 worker 本地、只对采样位置做。
  • 每 token 通信复杂度降到 O(d)(d 为隐藏维度)。
📦 Anchor 有界序列打包
  • 从序列采固定数量草稿 anchor,把孤立预测块密集打包成训练 batch。
  • 用 token 级 attention 索引(而非标准 2D mask)管理,保持精确因果掩码。
  • 让草稿成本与目标上下文长度解耦,避开 padding 开销。

调度器落地:与真实基础设施的两个冲突

算法 1 理论无损,但直接上生产暴露两个冲突:

⚡ 冲突一:能力曲线不平滑
  • 算法假设平滑单峰能力曲线。
  • 真实硬件 SPS(B) 是锯齿状阶梯式退化的。
🔁 冲突二:与 ZOS 冲突
  • 算法要每步动态调度变长草稿 token。
  • CUDA Graph 重放零开销调度(ZOS)冲突。

解法是把调度器改成异步运行:ZOS 要求下一步 batch size 在当前步完成前就已知,所以 DSpark 用两步之前的置信度头输出近似即将到来的验证容量(仅用于定截断长度 K,候选仍按当前最新累乘置信度严格排序)。这把纳入变成动态 top-K 选择,排序保序;而且这个「两步前」的时间错位恰好天然构成因果屏障——决策与当前 token 的实现隔离,于是论文得以去掉早停、放开无约束全局搜索来跨越锯齿悬崖,同时仍保证无损。

🔧执行层还有一硬骨头:动态路由产生变长查询,而标准 decode kernel 为定长优化。DSpark 把所有请求的 token 拍平成独立元素统一处理,用一个 marker tensor 在稀疏注意力里传递序列内依赖。在 DeepSeek-V4 架构上,只需改 index-attention 和 compress 两个 kernel 就能支持变长路由,调度器无低层执行开销地运转。
06

离线实验:草稿质量

为隔离纯草稿质量,离线评测关掉置信度调度器,强制所有草稿器提固定长度块,只比每轮接受长度 τ(越高越好)。

评测在 4 个目标模型(Qwen3-4B/8B/14B、Gemma4-12B)、3 大领域(数学推理 / 代码生成 / 日常聊天)、共 9 个 benchmark 上进行;对手是 SOTA 并行草稿器 DFlash 和自回归草稿器 Eagle3(基于 Training-Time Test)。为公平,所有草稿器在同一框架、同一数据上重训;Eagle3 的 TTT horizon(7)对齐 DFlash/DSpark 的块大小(7),并用相同目标特征层。层数:Eagle3 用 1 层,DSpark 和 DFlash 用 5 层。训练数据用 Open-PerfectBlend(130 万样本:聊天 17.6%、数学 39.4%、代码 38.9%、指令 4.1%),每个草稿器训 10 epoch,非思考模式;采样温度 1.0。除非特别说明,DSpark 指 Markov 头变体。

+26.7~30.9%
vs Eagle3 接受长度
(Qwen3 三规模)
+16.3~18.4%
vs DFlash 接受长度
(Qwen3 三规模)
2 层 > 5 层
2 层 DSpark
干过 5 层 DFlash

具体地,Qwen3-4B/8B/14B 上,DSpark 宏平均接受长度比 Eagle3 分别高 30.9% / 26.7% / 30.0%,比 DFlash 分别高 16.3% / 18.4% / 18.3%;且优势跨模型族成立(Gemma4-12B 同样提升)。

表 1(节选)|每轮接受长度 τ,Qwen3-4B 目标模型,加粗为最优
草稿器GSM8KMATHAIME25MBPPHumanEvalLCBMT-BenchAlpacaArena-Hard
Eagle35.144.623.923.694.163.772.392.262.55
DFlash5.404.854.154.404.744.183.072.962.83
DSpark6.115.704.895.135.384.863.643.543.29

表 1 还显示强烈的领域效应:结构化任务接受长度天然更高(Qwen3-4B 数学约 5.57、代码约 5.12),开放式聊天更低(约 3.49)。这种数据可预测性的内在差异,正说明静态验证长度会在「注定被拒的尾 token」上浪费算力——直接引出置信度调度。

为什么并行能赢过自回归?逐位置条件接受率分析

论文用一个很有洞见的指标逐位置条件接受率(图 2)拆解:它只统计「前面 1..k−1 都被接受」的样本里,位置 k 也被接受的比例,从而剥离前缀错误的连累,看清每个位置的「真实预测力」。三条发现:

架构设计空间:深度与块长

⚖️延迟开销几乎可忽略:batch=128、对 {512,1024,2048,4096} 上下文取均值,把草稿长度从 4 拉到 16,串行环路只给整轮延迟增加 0.2%~1.3%,却换来最高 30% 的接受长度提升。

置信度头的剪枝威力(离线阈值扫描)

随阈值升高,置信度头把「终将被拒」的尾 token 剪掉,整体接受率稳步上升,且聊天受益最大(高熵分布):接受率从 45.7% → 95.7%;数学从 76.9% → 92.5%、代码从 67.6% → 92.0%(结构化任务剪得更温和、保留更多草稿 token)。校准方面:原始估计器判别力强(ROC-AUC 0.81~0.90)但过度自信(ECE 3%–8%),经 STS 校准后平均 ECE 降到约 1%。

07

线上部署:DeepSeek-V4 真实流量

离线证明算法增益,线上才检验生产价值。DSpark-5(最大草稿长度 γ=5,Markov 头)在 V4-Flash / V4-Pro 预览版生产引擎里,对打老基线 MTP-1。

草稿器配置:并行骨干含 3 个 MoE 层 + mHC + 滑窗注意力 128;置信度头随草稿模型端到端训练、再经 STS 校准。MTP-1 是 V4-preview 发布两周后被 DSpark 取代的前生产配置——历史上一直用单 token,是因为静态多 token 草稿器(如 MTP-3/5)在高并发下会因过度验证严格降低聚合吞吐。所以拿 DSpark 跟它比,直接证明 DSpark 能在动态服务环境里「安全地」释放长草稿块潜力。图中散点是来自真实用户流量的原始遥测,实线是拟合的性能前沿。

📈 服务的 Pareto 前沿(吞吐 ↔ 交互性)
是什么

生产系统要同时优化两个竞争目标:单请求延迟(每用户生成速度 tok/s/user,决定体验,在 agent 工作负载里愈发关键)和聚合吞吐(决定同时服务多少用户)。SLA 指系统必须保证的最低每用户生成速度。

为什么

DSpark 把这条前沿整体向外推:中等 SLA 下提升吞吐,更重要的是在严格交互约束下守住非退化的服务容量——这些档位是老基线根本达不到的。论文还点出:在他们「batch 长期低于算力饱和阈值」(受 KV 缓存、可用流量、RL 长尾负载所限)的部署 regime 下,「最大化吞吐」与「最大化每用户速度」从竞争变成了高度正相关。

例子

像一条本来「要快就只能少载客、要多载客就只能慢」的产线;DSpark 让它在同样载客量下更快,且在「要求极快」的高标准下还能保持像样产能,而非产能崩盘。

60–85%
V4-Flash
每用户提速(同吞吐)
57–78%
V4-Pro
每用户提速(同吞吐)
+51~52%
中等 SLA 下
聚合吞吐提升

V4-Flash:在 80 tok/s/user 的中等 SLA 下,DSpark 聚合吞吐比 MTP-1 提升 51%;在更严格的 120 tok/s/user 下,MTP-1 逼近运行边界、只能撑很小并发批,此时 DSpark 名义达到 661% 吞吐优势——论文诚实说明,这个高 SLA 点主要应解读为「DSpark 把可行交互前沿延伸到基线够不着的区域」,而非对一个充分利用的基线的真实倍数提速。在更稳定的「同实际吞吐」比较下,每用户提速 60%–85%。V4-Pro 同模式:35 tok/s/user 下 +52%,50 tok/s/user 下名义 406%;同系统容量下每用户提速 57%–78%。

负载自适应:验证预算随并发自动伸缩 并发请求数 → 每请求验证预算 DSpark:轻载放到 4–6,重载收回 MTP-1:固定 2 token
对应论文图 8 机制:中低并发时(Flash < 200、Pro < 150 并发),调度器把验证预算从 MTP-1 的静态 2 token 放大到约 4–6 token,多接受 token 直接贡献前沿上的吞吐增益;并发升高、目标容量饱和时,验证长度随负载平滑收缩,在低置信尾 token 吃掉关键 batch 容量之前就剪掉它们。
⚠️论文坦诚的局限:前缀调度器能省掉浪费的目标验证,但 DSpark 仍要付一份固定的草稿侧成本——用并行骨干生成最初的 γ-token 块。对那些天然低接受率的复杂查询,这份预付草稿算力是收不回的。未来方向:在草稿模型里引入「难度感知的提前退出」,让这类请求跳过整块生成。
08

要点回顾 + 术语表

把全文压成一张可带走的速记,外加一张术语速查表。

术语速查表

推测解码草稿模型提议、目标模型一次前向并行验证、拒绝采样接受最长前缀的无损加速框架。
τ(接受长度)每个解码周期被目标模型接受的 token 数(含 bonus token);越高越快。
多模态碰撞并行草稿器各位置独立预测,拼出前后矛盾组合,导致后缀接受率衰减。
半自回归并行骨干 + 轻量串行头:主体并行算、局部依赖串行补。
Markov 头只依赖前一 token 的一阶转移偏置,低秩分解(r=256),DSpark 默认串行头。
置信度头预测每位置「条件生存概率」$c_k$ 的轻量线性头 + sigmoid。
STS序贯温度缩放,保序校准累乘概率,把 ECE 从 3–8% 降到约 1%。
SPS(B)引擎在批大小 B 下的每秒步数能力曲线;初始化时 profile 一次,运行时 O(1) 查表。
非预知性无损要求:纳入决策不得依赖未来候选 token;靠早停 / 两步前异步隔离实现。
MTP-1DeepSeek-V4 的前生产基线,单 token 草稿;被 DSpark 取代。
SLA服务等级协议,这里指系统必须保证的最低每用户生成速度(tok/s/user)。
「Draft better, verify smarter.」 —— DSpark 的两个机制,正好对应加速公式 L=(T_draft+T_verify)/τ 里的两条杠杆:半自回归升 τ(草稿更准),置信度调度降有效 T_verify(验证更聪明)。它没改模型,只是把推理这件事的工程做到了更靠近理论上限。

🐋 一句话收尾

DSpark 是推理侧的工程胜利:在不动模型、不损失输出分布的前提下,通过「并行打草稿 + 串行捋顺 + 按负载智能验证」,把 DeepSeek-V4 在生产高并发下的单用户速度提了一大截,并解锁了老基线根本撑不住的严格交互档位。对关注 RL / 推理经济学的人来说,这是攻击 rollout / 延迟瓶颈的一记直球。