Reference · 打印友好

Speculative Decoding 与 MTP 速查

统一符号:p 是 target,q 是 draft。Chen et al. 原文采用相反字母,请阅读时先映射。

符号表

符号含义常见误读
pᵢ(x)target 在候选前缀第 i 个位置的实际采样分布不要拿 raw logits 直接代入
qᵢ(x)draft 产生第 i 个候选 token 时使用的分布必须对应真实 proposal processor
γ每轮 draft token 数不等于最终每轮 token 数,最大是 γ+1
β某位置的接受概率,Σmin(p,q)不等于简单 top-1 命中率
α跨上下文/位置的平均接受率,用于简化性能模型真实 acceptance 往往随位置递减
c一个 draft step / 一个 target step 的成本比不是参数量比,也不是单看 FLOPs

精确 speculative sampling

a(x) = min(1, p(x)/q(x))
β = Σₓ min(p(x),q(x)) = 1 − TV(p,q)
p′(x) = norm((p(x)−q(x))+) = max(p(x)−q(x),0)/(1−β)

q(x)=0 时不会真的被 draft 采出,因而不会发生除零;若 p(x)>0,该质量由 residual 补回。

一次迭代伪代码

draft: for i = 1..γ:
    q_i = Q(prefix + y[:i-1])
    y_i ~ q_i

target: [p_1, ..., p_(γ+1)] = P(prefix + y_1..y_γ)

for i = 1..γ:
    accept y_i with probability min(1, p_i[y_i] / q_i[y_i])
    if rejected:
        z ~ norm(max(p_i - q_i, 0))
        return accepted_prefix + z

bonus z ~ p_(γ+1)
return y_1..y_γ + z

正确性证明骨架

  1. 接受路径给 token x 的质量:q(x)min(1,p(x)/q(x)) = min(p,q)
  2. 拒绝概率:1−β = Σ[p(x)−min(p(x),q(x))]
  3. 拒绝路径给 token x 的质量:(1−β)p′(x)=p(x)−min(p,q)
  4. 两条互斥路径相加:min(p,q)+p−min(p,q)=p
  5. 在每个仍有效的条件前缀上重复,得到整条序列分布保持。

期望进展与速度

E[tokens/iteration] = 1 + α + … + αγ = (1−αγ+1)/(1−α)
ideal speedup = E[tokens/iteration] / (1 + γc)
practical speedup ≈ E[tokens/iteration] / (v(γ,B,L) + γc + o)

v 是 target verification 相对 baseline 单 token decode 的成本;o 包括调度、采样张量搬运和 KV 状态管理。任何实测都应报告 batch、context、γ、采样方式、硬件和指标。

MTP 的两种结构

结构核心计算作为 proposer 时的含义
并行 future heads(Gloeckle et al.)共享 trunk 表示 z≤t,多个 heads 分别预测 xₜ₊ᵢ便宜地产生多位置候选,但后续位置未必条件化在前一候选上;需要 verify
顺序 MTP modules(DeepSeek-V3)hᵢᵏ 接收前一深度状态与未来 token embedding保留完整 causal chain,更自然地生成 draft chain;仍需 target verify

源码检查清单

  1. proposal 的 token 与 qᵢ 是否从同一个 sampling processor 得出?
  2. target logits 的位置是否对应 prefix + candidate 的 causal shift?
  3. accept 是否是最长前缀,而非每个位置独立过滤?
  4. 首拒后的 token 是否从 residual 采样,而不是从完整 target p 重采?
  5. 全接受时是否正确使用 pγ+1 bonus token?
  6. 无效候选后缀的 token、KV block、sequence length、RNG 语义是否回收/截断?
  7. 性能计数是否拆开 draft、verify、accept/correct 和 state management?

术语边界

术语一句话定义
speculative decoding用便宜 proposal 先猜、用 target 批量验证,并通过规则保证最终输出语义。
speculative sampling随机采样场景下的 modified rejection sampling;核心是接受率与 residual。
self-speculative decodingproposal 与 target 来自同一模型体系,例如 early exit、MTP heads/modules。
MTP训练/结构范式:在一个位置预测多个未来 token;不是完整的解码协议。
blockwise parallel decoding较早的 greedy 版本:并行提出候选,target 接受最长匹配前缀。
acceptance rate候选被 verifier 接受的概率/比例;它影响速度,不直接定义质量。
回忆提示

合上页面后回答四句:① q 过度提出一个 token 时怎么处理?② q 欠缺的 p 质量在哪里补?③ 为什么首拒后不能继续用 logits?④ MTP 哪一部分提供候选,哪一部分保证正确性?想核对答案时回到对应课程。