D DSpark 原理课Interactive explainer
基于 DSpark 论文 v1 · 2026-07-06

让大模型少跑几趟,
答案仍由它拍板。

DSpark 不是“换一个更聪明的 Transformer”,而是一套推理解码加速框架: 轻量草稿器先猜一小段,目标模型一次验一段;再根据“这段有多可能通过”和“GPU 此刻有多忙”,决定究竟验多长。

开始 6 分钟导览 →
不用先学矩阵。 你只需知道:Transformer 会根据前文给“下一个 token”打分。公式默认收起,随时可跳过。
一轮 DSpark
LIVE
目标模型先给锚点
锚点
草稿器并行 + 轻串行
一次验证一段答案
调度器挑前缀
一次验证一段答案
目标模型并行验收
一次 ✓验证 ✓一段 ✓草稿 ↺
点击“播放”,看一轮中谁先猜、谁裁剪、谁拍板。
Chapter01

先看瓶颈:模型明明很大,为什么还要一个词一个词地吐?

生成阶段通常是自回归的:第 2 个 token 要等第 1 个 token 出来,第 3 个又要等前两个。每多写一个 token,庞大的目标模型就要再做一次前向计算。

🧭 这一节只建立直觉;“注意力”细节不是理解 DSpark 的前置条件。

亲眼看一次“逐 token 生成”

下面每亮一次“大模型”,就代表一次昂贵的目标模型前向计算。

目标模型 一次只决定下一个 token
提示词:“请用一句话解释春天:”
目标模型前向次数0
已生成 token0 / 9
依赖关系必须排队
准备好后点击“逐字生成”。
1
速度问题不是“模型不会并行计算”,而是输出之间有先后依赖。一次前向内部当然高度并行;但下一次前向要等待刚生成的 token,形成串行链条。
你需要知道的 Token

token 是模型处理文字的基本片段,可能是一个字、半个词、标点或代码片段。这里把它画成“词块”,只是为了便于观察。

核心延迟公式的直觉

若一次循环花费“草稿时间 + 验证时间”,却能一次接收更多 token,那么平均每个 token 的时间就会下降。DSpark 的全部设计都在优化这三个量。

Chapter02

第一层加速:让轻量草稿器先猜一段,目标模型一次验一段。

这叫 。关键不是盲信草稿,而是利用已知候选 token,让目标模型在一次前向中同时评估多个位置。

演示:猜 4 个,验 4 个,错处由大模型纠正

为降低认知负担,动画省略了标准算法中“bonus token”等实现细节。

目标模型 最终分布与答案由它决定
已知前文:“它让大模型”
轻量草稿器先提出
目标模型一次验证后
草稿生成1 小步
目标验证0 次
最终句子尚未生成
目标模型不会被草稿“绑架”:遇到第一个不接受的位置,就从那里纠正。

普通自回归

大 1大 2大 3大 4
每个 token 都要等上一个产生,目标模型连续跑多次。

投机解码

小:草稿大:并行验
一次验证可能接收多个 token;接收越长,平均每个 token 越便宜。
2
草稿器负责“提高命中率”,目标模型负责“保持原答案分布”。在标准 rejection sampling 与非预见调度条件下,投机解码可以无损加速;它不是让小模型代替大模型。
Chapter03

但“并行猜得更多”会撞上两个新问题。

DSpark 的价值不只是做投机解码,而是同时修复:草稿后半段容易失去一致性,以及高并发时验证太多会拖垮吞吐。

A

后半段容易“串台”

纯并行草稿的多个位置同时预测,后一个位置不知道前一个位置最终采样了什么。两个都合理的表达,可能被拼成不合理的混合。

合理表达 A:当然|可以
合理表达 B:没|问题
点击下方开始抽样
连贯比例
教学模拟的草稿耗时
教学模拟数值,不是论文实测。重点看“独立预测”与“条件预测”的差别。
B

验证越长,不总是越划算

后面的 token 只有在前面全部被接受时才有机会生效。GPU 空闲时多验几个几乎免费;GPU 忙时,多验一个低成功率 token 可能挤掉别人的请求。

拖动“系统压力”
空闲:愿意多验35%繁忙:只验高回报
前缀存活概率 aₖ = c₁ × … × cₖ
!
当前保留 4 个候选系统仍有余量,低一些的后缀也值得一试。

论文观察到的“后缀衰减”

看条件接受率随草稿位置变化:纯并行 DFlash 后段下滑,DSpark 用轻量顺序依赖把曲线托住。

DFlash · 纯并行 Eagle3 · 自回归 DSpark · 半自回归
根据论文 Figure 2 近似重绘,用于理解趋势,不用于复现精确数据。
Chapter04

DSpark 的答案:重活并行,轻活串行;先估“值不值得”,再按硬件余量分配验证。

你可以把 DSpark 记成两个互补的补丁:半自回归草稿修质量,置信度调度修系统效率。

展开一点数学:四个式子就够

① 顺序头给基础 logits 加“转移偏置”:

pₖ(v) ∝ exp(Uₖ(v) + Bₖ(已采样前缀, v))

Uₖ 来自一次并行骨干;Bₖ 很轻,只负责让后缀与已采样前缀保持一致。

② Markov head 的低秩近似:

B(前一 token, ·) = W₁[前一 token] · W₂

论文默认秩 r=256,避免保存巨大的“词 × 词”转移矩阵。

③ 第 k 位前缀存活概率:

aₖ = c₁ × c₂ × … × cₖ

越往后,必须闯过的门越多,所以即使单点 cₖ 尚可,累计 aₖ 也会下降。

④ 调度器优化目标:

期望系统吞吐 Θ = 期望产出 τ × 引擎步速 SPS(B)
“置信度”到底在预测什么?

它不是笼统的“模型自信”,而是更具体的条件概率:在前面草稿都被目标模型接受的前提下,这一位也被接受的概率。训练标签来自草稿分布与目标分布之间的总变差距离。

因为神经网络置信度常偏高,论文又做 Sequential Temperature Scaling(STS)校准,让累计存活概率更接近真实接受率。

训练时学什么?

目标模型保持冻结;训练并行草稿骨干、顺序头和置信度头。损失包含三部分:预测真实 token 的交叉熵、贴近目标分布的总变差损失、以及置信度预测损失。

更靠前的位置权重更大,因为前面一旦拒绝,后面的草稿全部失效。

为什么默认用 Markov head,而不是更强的 RNN head?

RNN head 能记住整段草稿前缀,长块上略有额外收益;但论文实验认为提升有限,而部署复杂度更高。生产配置因此使用更简单的一阶 Markov head。

3
“半自回归”不是把整块重新串行一遍。昂贵的表征计算仍一次并行完成;串行部分只做极轻的 token 转移修正与采样,因此保留了并行草稿的速度优势。
Chapter05

现在轮到你当调度器:有限的 GPU 验证预算,应该给谁?

下面按论文 Algorithm 1 做一个教学模拟:把所有请求的“下一枚候选 token”按累计存活概率排序,逐个加入,直到继续加入反而降低期望吞吐。

请求池

每个小格显示条件接受率 cₖ;颜色表示当前是否送去验证。

GPU 余量
几乎饱和48%较多空闲算力
全局候选队列 · 按前缀存活概率 a 排序
此处 SPS(B) 是为教学构造的平滑曲线,不是 DeepSeek 生产硬件数据。论文的真实部署还使用异步两步滞后、top-K 与针对硬件台阶的适配。
Chapter06

它快了多少?先看证据,再看边界。

离线实验主要衡量“每轮能接受多长”;线上生产实验同时考察单用户生成速度与整机吞吐。两类数字不能混为一谈。

相对基线的平均接受长度提升

在 Qwen3 4B / 8B / 14B 上,DSpark 对比自回归 Eagle3 与并行 DFlash。

Qwen3-4B
vs Eagle3
+30.9%
vs DFlash
+16.3%
Qwen3-8B
vs Eagle3
+26.7%
vs DFlash
+18.4%
Qwen3-14B
vs Eagle3
+30.0%
vs DFlash
+18.3%
V4-Flash · 匹配吞吐
+60%–85%

每用户生成速度(tok/s/user)提升范围。

V4-Pro · 匹配吞吐
+57%–78%

每用户生成速度提升范围。

中等 SLA 吞吐
+51% / +52%

Flash 在 80 tok/s/user、Pro 在 35 tok/s/user 的整机吞吐提升。

怎么看“高 SLA 下 +661% / +406%”?

论文特别提醒:此时旧基线已接近服务边界、并发能力坍塌。大倍率更适合解释为“DSpark 把可行的交互速度边界推远了”,不应当当作日常场景的典型加速倍数。

它不会让模型更聪明DSpark 优化的是 decode 阶段的时间与吞吐,不改变目标模型本身的能力上限。
收益依赖工作负载代码等结构化文本通常更容易猜中;开放聊天熵更高,最佳验证长度会更短。
需要匹配的草稿器与系统实现草稿模型要针对目标模型训练,生产还需支持可变长度验证、校准与调度。
草稿成本并非为零即使调度器裁掉后缀,并行骨干仍已付出生成整块草稿的固定成本;极低接受率请求可能收益有限。
4
真正的系统指标是“延迟—吞吐”的帕累托前沿,而不是孤立的一张速度表。DSpark 的调度器让系统在空闲时大胆投机、在繁忙时及时收手,因此比固定草稿长度更适合真实流量。
Checkpoint

三道题,检查知识是否已经“自然流进去”。

不考术语拼写,只考你能否抓住因果关系。

1

为什么投机解码不会简单地把小模型错误带进最终答案?

2

DSpark 的 Markov head 主要解决什么?

3

为什么同样的置信度,在 GPU 空闲和繁忙时可能得到不同验证长度?

0 / 3

你的心智模型正在成形

完成三题后,这里会生成一段可带走的总结。

① 并行骨干先粗猜一次生成多个位置的基础预测。
② 轻量顺序头防串台用已采样前缀修正后续 token。
③ 置信度估前缀存活越靠后的 token,要连续闯过更多门。
④ 调度器只验值得的目标模型最后拍板,系统按负载收放。