1. DSpark 在 LLM 服务中的位置:只改 decode cycle,不改模型语义

长 prompt 的 prefill、KV cache 分页、请求 admission 和持续批处理仍然存在。DSpark 出现在 decode 阶段:1 个轻量 drafter 先提出候选块,完整 target 在 1 次较宽的前向中验证其中的前缀,接受的 token 才能进入最终序列。官方 V4-Pro-DSpark 模型卡明确说明这是原 V4-Pro checkpoint 外加 speculative module,而不是新的基础模型。

因此 DSpark 的收益只可能体现在输出 token 的关键路径。它不减少预填充、不会凭空降低 KV 大小,也不能取代 02 · Prefill、decode 与批处理 中的 chunking 和 PD 设计。

2. 1 个标准 speculative cycle:提出、验证、提交、回滚

令已经提交的 token 为前缀 \(x\)。drafter 从自己的条件分布 \(q\) 按顺序产生 \(y_{1:\gamma}\)。target 对 \(x\mathbin{\Vert} y_{1:\ell}\) 做带因果 mask 的 verify,获得各位置 target distribution \(p_{1:\ell}\)。验证从左向右:一旦 \(y_k\) 被拒绝,后面的草稿都在不成立的条件前缀下生成,必须丢弃。

DRAFT: x -> y1 -> y2 -> ... -> y_gamma
VERIFY: target(x, [y1 ... yl]) -> p1 ... pl
COMMIT: accept longest valid prefix; on first rejection sample one correction; free the suffix

所有候选都被接受时,可从 target 的 bonus distribution 继续产生 1 个 token;首次拒绝时,系统用 target 的残差分布生成 correction。这样每轮至少有 1 个 target-correct token,且不必把验证后的每个 candidate 都对外输出。

3. 概率不变量:无损来自 residual sampling,不来自 drafter 准确

对候选 token \(v\),标准接受概率是 \(\min(1, p(v)/q(v))\)。若拒绝后直接从完整 \(p\) 采样,drafter 与 target 重叠的概率质量会重复记账,分布将偏离 target。正确的修正只取 target 相对于 drafter 额外拥有的质量。

\[ \begin{aligned} \operatorname{accept}(v) &= \min\left(1, \frac{p(v)}{q(v)}\right) \\ Z &= 1 - \sum_u \min\left(p(u), q(u)\right) \\ \operatorname{residual}(v) &= \frac{\max\left(0, p(v)-q(v)\right)}{Z} \\ P(\mathrm{output}=v) &= q(v)\operatorname{accept}(v) + Z\operatorname{residual}(v) = p(v) \end{aligned} \]

所以 drafter 可以很差而仍然无损,只是速度会差。反过来,接受率很高也不说明实现正确:top-k 直接接受、只在 target 或 drafter 一侧施加 JSON grammar、不同 temperature/top-p、不同 tokenizer 或不同 LoRA revision 都会破坏上述等式。完整通用推导见 21 · Speculative Decoding 与 MTP;本页以后只讨论 DSpark 怎样改善草稿质量和验证预算。

4. 动态长度也要无损:admission 不能利用未来 token 的实际值

“验证到第几位”的决定也会影响输出概率。若 scheduler 观察了第 \(k\) 个 token 的采样结果,或观察到由它决定的后继置信度,随后才决定是否验证第 \(k\) 位,选择过程就会偏向某些 token。被选中这一事件不再独立于 token 的实现值,标准 rejection-sampling 证明随之失效。

DSpark 论文将这个要求描述为 causal / non-anticipating admission。理论 greedy 版本在预计吞吐不再提升时停止继续看后缀;生产版使用历史容量估计来给下一轮定物理容量,避免用当前 candidate 的真实值回看筛选它。这个限定比“confidence 高就多验几个”严格得多。

工程检查:每个 admitted candidate 都应可追溯到 decision epoch、所用 confidence、容量估计、target/draft revision 与 RNG 状态。若 admission 日志可以读取该 candidate 或后代的实际 sampled token,不能把路径标为严格 lossless。

5. 速度账本:后缀接受率与 target batch 容量必须一起优化

1 次 cycle 的延迟可以分为 drafter、scheduler、target verify 和 commit。令 \(\tau\) 为最终输出 token 数,时间是否下降取决于候选前缀带来的期望输出能否抵消额外 verify。后缀位置只能在此前所有位置通过时被提交,因此每位价值是条件接受率的连乘,不是独立相加。

\[ \begin{aligned} L_{\mathrm{per\_token}} &\approx \frac{T_{\mathrm{draft}} + T_{\mathrm{schedule}} + T_{\mathrm{verify}}(l) + T_{\mathrm{commit}}}{\mathbb{E}[\tau]} \\ \mathbb{E}[\tau] &= 1 + \sum_{k=1}^{l}\prod_{i=1}^{k}\alpha_i \end{aligned} \]

在低并发、target 没有饱和时,多验 1 个低置信 token 的机会成本较小;在高并发时,它直接占用另一个用户可用的 target query slot。DSpark 的第 2 个问题正是把“最大草稿长度”转换为“本轮每个 request 的正期望回报验证长度”。

6. DSpark 的半自回归思想:并行 backbone 负责容量,顺序头补块内依赖

纯自回归 drafter 能让第 \(k\) 位条件在已采样的前缀上,后缀质量通常更好,但 drafting latency 随 \(\gamma\) 近似线性增长。纯并行 block drafter 1 次前向给出全部位置,速度很高,但各位置未条件于块内实际采样到的 token;当上下文有多种可行延续时,多个边缘分布会组合成不一致的后缀,接受率通常越往后越低。

DSpark 的公开设计分成两段:较重的 parallel backbone 1 次生成每个位置的 base logits 与 hidden states;轻量 sequential head 根据 anchor 和已采样的块内前缀,修正下 1 位置的 logits。完整 target decoder 不会为草稿重复执行多次,顺序工作只加在成本较低的 drafter 上。

DSpark 论文的半自回归草稿、置信度调度和 target 验证架构图
原始/官方结构图:DSpark, Figure 1。target 先给 anchor,parallel backbone 产生候选,轻量 sequential block 修正块内依赖,confidence scheduler 保留 prefix,再由 target 并行验证并修正拒绝位置。
纯并行 drafter

1 个 forward 提出整块,后缀可能忽略已抽到的前一 token。

DSpark

parallel logits 提供主体概率质量,轻量顺序模块提供局部条件偏置。

完整 AR drafter

块内条件最直接,但草稿本身重新成为串行关键路径。

8. Confidence head:需要预测“前缀存活率”,不能只给 token 打分

第 4 个 candidate 的收益以“前 3 个都被接受”为前提。DSpark 的 confidence head 因此需要估计各位置的条件接受率 \(c_{r,k}\),scheduler 使用累积 survival probability \(a_{r,k}\) 评估验证到此处的期望价值。只看本位的 logit margin 或 entropy,无法正确量化后缀可提交的概率。

\[ \begin{aligned} c_{r,k} &\approx P\left(\operatorname{accept}(y_{r,k}) \mid y_{r,1:k-1}\ \mathrm{accepted}\right) \\ a_{r,k} &= \prod_{i=1}^{k} c_{r,i} \\ \mathbb{E}[\mathrm{accepted\ drafts\ for\ request}\ r] &= \sum_{k=1}^{l_r} a_{r,k} \end{aligned} \]

如果 confidence 只是排序对、绝对值却过度自信,用它乘硬件吞吐曲线会做出错误的 capacity 决策。论文因此采用按位置从左到右的后验温度校准来校正累计概率。实际服务要按 model revision、sampling 参数、domain、量化和上下文长度重测校准;代码、数学、开放聊天和工具调用不能共用 1 张永不过期的 calibration table。

9. Hardware-aware prefix scheduler:全局选择 prefix-closed 的 target work

本轮有 \(R\) 个请求,每个请求挑 1 个验证前缀长度 \(\ell_r\)。总物理 query token 数为 \(B\),实测引擎在该形状的步骤吞吐记作 \(\operatorname{SPS}(B)\)。scheduler 的目标不再是“让每个请求都用最大 \(\gamma\)”,而是选择所有 request 的前缀集合,使预计有效输出乘以实际硬件速率最大。

\[ \begin{aligned} B &= R + \sum_r l_r \\ \mathbb{E}[\mathrm{output}] &\approx R + \sum_r \sum_{k=1}^{l_r} a_{r,k} \\ \Theta(l) &= \mathbb{E}[\mathrm{output}] \times \operatorname{SPS}(B) \end{aligned} \]

候选必须 prefix-closed,不能只验证某个 request 的第 5 位。论文的 causal greedy 过程按累积存活率加入候选,发现 \(\Theta\) 不再改善就停止。相比每 request 固定阈值,这能随全局 batch 负载变化决定“本轮应把 target 算力留给谁”。

10. CUDA Graph 与异步容量:预测物理 shape,当前分数决定逻辑选择

真实 \(\operatorname{SPS}(B)\) 经常不是平滑曲线:CUDA Graph capture size、workspace、kernel tile、通信边界和 KV 容量会形成阶梯。与此同时,zero-overhead scheduling 要求下一步的物理 batch size 在当前 GPU 步尚未完成时便确定;等待同步 confidence 计算会形成 host-side bubble。

DSpark 论文提出以 2 步之前的 confidence 预测即将可用的容量 \(K\),并用当前的累计 confidence 在该容量内做 top-K prefix selection。前者只是对物理 shape 的历史近似,后者仍必须对当前且尚未泄露的 candidate 排序。论文借这个异步边界处理图捕获与因果 admission 的矛盾;“2 步”是其公开实现的设计点,不是可直接复制到所有 runtime 的参数。

11. KV cache 状态机:验证过不等于已经提交

target 已提交的 KV 是可见前缀;target verify 为 candidate 分配临时页或临时 block-table 映射。若 drafter 不能与 target 共用 cache,还会有独立 drafter KV。首个 rejection 后,只有 accepted prefix 与 correction 对应的状态可提升为 committed;所有未提交 candidate 的 K/V、logprob、attention metadata 和 drafter 分支都必须释放或回滚。

常见事故包括先向客户端流式发送、后发现 KV commit 失败;只清 target 临时页而遗留 drafter 页;取消后迟到的 remote draft 写入新 epoch;共享 prefix page 未做 copy-on-write。DSpark 的变长验证不会替你解决这些事务问题,反而要求更严密的状态边界。缓存基础见 04 · KV cache 与内存

12. Continuous batching:调度器的账本从“请求数”升级为 candidate token

1 个 DSpark request 会经过 DRAFTREADY_TO_VERIFYVERIFYINGCOMMITTINGFALLBACK_AR。每轮 scheduler 要同时给普通 decode、prefill chunk、drafter、target verify、temporary KV 和 commit 留预算。只限制 active request 数会掩盖某个 request 贡献 1 个还是 5 个 target positions 的差别。

公开 SGLang 文档要求大于默认 capture batch 的 DeepSeek MTP 同时调整 max-running-requests 与 CUDA graph batch list,并公开 overlap scheduling 参数。这说明 speculation 是 runtime shape 与资源会计问题,不是把 1 个模型 flag 打开即可稳定获益。具体 scheduler 基础见 05 · Runtime scheduler

13. 变长 verify 内核:把逻辑序列关系交给 marker,而不是 padding

若 A 需要验证 3 个 token、B 需要 1 个、C 需要 2 个,朴素实现会把它们 pad 到 3,重新制造验证浪费。DSpark 论文披露的 DeepSeek-V4 路径将这些 logical tokens flatten 成一段连续物理 query rows,再将每条序列的边界和可见关系以 marker tensor 交给 sparse attention。物理 kernel 因而处理规则的 token list,逻辑依赖仍由 block table 和 marker 表达。

论文称 V4 的 index-attention 与 compress kernels 需要为这种变长路由适配。实现时要分别测量 marker 构造、flatten/gather、index-attention、compress kernel 与通信 overlap,避免把多段执行成本合并成 1 个 kernel 名称。

14. TP、EP 与 MoE:candidate token 小,验证后的 hidden-state 流很大

草稿 token id 本身只占很少字节。成本主要来自 target verify 逐层触发的 tensor-parallel collective、expert-parallel all-to-all、attention/KV 读写、dispatch/combine 和 GPU stream 同步。每多验证 1 个 token,即使最后被拒绝,也可能已经支付 expert 选择与通信成本。

数据路径DSpark 会改变什么必须监控
Tensor parallelverify 宽度改变 layer-wise collective 的消息形状。all-reduce / all-gather 时间、rail 偏载、stream wait。
Expert parallel候选越多,可能触及更多 experts 和 all-to-all token。touched experts、A2A bytes、expert imbalance、rejected-token ratio。
Colocated drafter候选与局部状态不用跨网络,但抢 HBM 与 SM。drafter weights、temp KV、draft/verify overlap。
Remote drafter可独立扩缩容,但需要一致的 request epoch 与 cancel。RPC RTT、版本错配、迟到结果和 cache locality。

V4-Pro 官方模型卡示例组合 data parallel、expert parallel、MoE backend 和 DSpark,说明它必须与并行策略协同。算子与通信基础见 03 · GPU 算子,更宽泛的 speculative/MTP 比较见 21 · 总览

15. 失败模式:算法正确、状态正确、性能正确是三套独立测试

  • 算法:p/q 采用不同 tokenizer、adapter、sampling policy 或 grammar;拒绝后没从 residual 采样;admission 读取未来 token。
  • 状态:temporary KV 未回滚;block table 和 streaming output 非原子;RNG 走不同拒绝分支后失同步;cancel 后仍 commit。
  • 性能:drafter 权重和临时页挤掉普通 decode;固定 gamma 在高并发下吞掉 batch capacity;graph shape miss 静默退回 eager。
  • 分布式:各 TP/EP rank 对 candidate layout 认识不一致;A2A token counts 与 marker 错位;远端草稿返回旧 model epoch。
  • 观测:只看平均 accepted length 或单请求 tok/s,遗漏 P99 ITL、wasted verify、KV peak、A2A 与 fallback。

16. 测量 DSpark:先验证 target-equivalence,再看在线 Pareto 曲线

DSpark 论文在 live traffic、匹配 aggregate throughput 的计时边界下,相对既有 MTP-1 baseline 报告 V4-Flash 每用户生成速度提高 60%–85%,V4-Pro 提高 57%–78%。这些数字受硬件、并发、模型和计时边界约束,不能直接换算成 API 用户会看到的固定倍数。

  1. 用小词表或可穷举 target 验证 acceptance/residual 实现;sampling 比较输出频率或 logprob 容差。
  2. 固定 target revision、prompt、输出上限、temperature/top-p、quantization、TP/EP 配置,与 target-only 和 MTP baseline 对比。
  3. 按代码、数学、开放聊天、JSON/tool-call、长上下文分桶,报告每位置的条件接受率。
  4. 扫描并发与 maximum gamma,画 aggregate output throughput 对 per-user tok/s、TTFT、P99 ITL 的 Pareto 曲线。
  5. 逐项采集 draft、scheduler、verify、commit、TP collective、EP all-to-all、temp-KV peak、reclaim 和 fallback rate。
  6. 注入 OOM、cancel、model update、drafter crash、graph-shape miss 与网络抖动,确认都无损回退 target-only。

17. 部署蓝图:把 DSpark 作为受限策略,而不是永久打开的开关

合理的 guardrail 是:给 drafter 与临时 KV 设置硬上限;confidence 失校准、queue 过载或 predicted gain 为负时缩短/关闭 speculation;把 target、drafter、tokenizer、adapter 和 sampling 绑定到不可变 revision;按位置和 domain 分桶监测接受率与延迟。官方模型卡中的 method=dsparknum_speculative_tokens=7 是特定 checkpoint/runtime 的示例起点,不是通用生产命令。

18. DSpark 复现对象与验收项

复现对象验收项
半自回归 drafter、confidence head、hardware-aware prefix scheduleracceptance、verify waste、TTFT/TPOT 与 live-traffic Pareto。
flatten + marker 变长执行、index-attention 与 compress 适配marker 开销、kernel time、CUDA graph shape 与通信 overlap。
V4-Pro-DSpark checkpoint 的 block size、target layer 与 Markov rank锁定 config 后检查输出语义、接受长度和显存。
DeepSpec 训练与评估入口训练曲线、校准误差、评测 harness 与版本清单。

19. Mainline 连接:将 DSpark 放回完整推理系统

请求生命周期

02 · Prefill、decode 与批处理解释 DSpark 不会取代 prefill 与 TTFT 隔离。

GPU 执行

03 · GPU 算子解释 attention、GEMM、MoE dispatch 和 kernel shape。

状态与内存

04 · KV cache 与内存解释 page、block table、refcount 与 eviction。

在线调度

05 · Runtime scheduler解释 continuous batching、QoS 与 token budget。

算法总览

21 · Speculative Decoding 与 MTP对比 DSpark、EAGLE、DFlash 和 MTP。

文章档案

相关文章索引保留标题级索引,不复制公众号正文。

20. 一手来源与版本边界

来源本页使用范围
DSpark, 2026算法、半自回归结构、confidence calibration、causal/asynchronous scheduling、变长 V4 kernel 边界、论文实验与 live-traffic 指标。
DeepSeek-AI / DeepSpec官方训练/评估代码入口与公开可复现实验边界。
DeepSeek-V4-Pro-DSpark 官方模型卡config.jsoncheckpoint 边界、模型规格、示例启动参数和发布变体配置字段。
Speculative Sampling, 2023Fast Inference from Transformers, 2023draft-target rejection sampling 与 probability-correctness 基础。
SGLang DeepSeek MTP 文档SGLang server arguments公开 MTP batch/capture/overlap 配置与 runtime 资源边界。
vLLM / PagedAttention分页 KV、连续批处理和 block-level memory management 背景。