Speculative Speculative Decoding — 把 draft↔verify 的串行依赖也打掉

Tanishq Kumar (Stanford) · Tri Dao (Princeton / Together AI) · Avner May (Together AI) · ICLR 2026 · arXiv:2603.03251v3 · 2026-05-04
关键词: speculative decoding · async drafting · verification-outcome prediction · Saguaro · Llama-3.1-70B · H100

速读卡片 (TL;DR)

一句话:SD 里 draft 和 verify 仍然串行(verify 完了才能开始下一轮 draft);SSD 让 draft 在 verify 还没完成时就预测可能的 verification outcome 并对每种可能预先 speculate,真实 outcome 命中缓存就立刻返回,把 drafting 时间藏到 verifier forward 后面。Saguaro 是其参考实现。

~30%
vs 最强 SD baseline 平均加速
≈5×
vs AR (Llama-3.1-70B, GSM8k)
90%
bonus token 命中率上限

立场:SSD 是把 SD 的 latency Pareto wall 从 "drafting 的串行成本" 这一面凿开的方案。它不是 tree-SD 也不是 Mirror-SD —— 不去并行化 verifier、不动 verifier compute,而是在另一台 GPU 上花 (K+1)F 倍的 draft 成本去赌 verification 结果。lossless,跟 EAGLE/Medusa/tree-SD 全部正交。


1 · 动机:SD 自己也有一道 Pareto wall

1.1 历史脉络: 从 AR 到 SD,然后 SD 内部的串行难题

Speculative decoding (Leviathan 2023, Chen 2023) 的核心 trick 是: 用并行替代串行 —— 让 draft 一次猜 K 个 token,target 在一次 forward 里并行算 K+1 个位置的 logits,然后用 rejection sampling 保证产出分布等价于纯 AR。这是把 token-level 串行依赖打破的第一刀。但每一轮 SD 本身 仍是串行的:

Vanilla SD: 一轮中 draft 与 verify 仍然串行 draft spec round T spec round T+1 target verify T (1 forward) verify T+1 idle draft idle (waiting verify) idle time → 每一轮的 latency = T_draft + T_verify (串行相加)
SD 的内部串行: draft 和 verify 互相等。draft 跑 K 步 forward 时 target 闲着;target 做并行验证时 draft 闲着。一轮的 wall-clock = Tdraft + Tverify。即使 draft 极快 (Tdraft ≪ Tverify),它也没有重叠到 verify 上

SSD 的设计目标就是把这个 "draft 等 verify、verify 等 draft" 的乒乓打掉,让两者在两台不同 GPU 上真正并行执行:

SSD: 在 verify T 进行时,draft 同时 pre-speculate 多个 outcome draft (1×H100) spec T pre-speculate F·(K+1) outcomes cache hit! pre-speculate T+2 outcomes target (TP=4 H100) verify T verify T+1 verify T+2 time → 命中: 一轮 latency = max(T_p, T_verify) ≈ T_verify 未命中: latency 退化到 T_verify + T_backup_draft (尽量便宜)
SSD 在另一台 GPU 上跑 draft,verify 期间就开始为 K+1 种"接受多少个 token"× F 种"bonus token 是哪个"共 F·(K+1) 种 verification outcome 各预先生成一条 length-K 的 speculation,存到 speculation cache。verifier 的实际 outcome 一旦命中 cache,draft 直接把那条 chain 发回去,drafting 时间被完全隐藏在 verify 后面。

1.2 别的"破壁"方案为什么不够

SSD 不是第一个想要并行 draft 与 verify 的工作 —— 但前作要么只覆盖一种 outcome、要么动 verifier、要么在大 batch 下崩。

方案核心思路覆盖 outcome缺陷 (作者点名)
AMUSD / PEARL提前 spec T+1,但只准备"全接受"那一种 outcome1 (out of (K+1)V)实际 acceptance < 1,大部分情况落 fallback
DSI多份 verifier 拷贝并行 verify 多条序列verifier 侧并行verifier 复制成本极高 (它本来就是大模型)
Mirror-SD (2510.13161)用 target 的 early-exit 信号触发 branch-complete 推测,异构执行多分支需 target 提供 early-exit 信号,改 verifier;见 sibling notes
SwiftSpec大缓存 + token tree,greedy 设定下加速tree-shapedfallback = just-in-time spec;高 temperature / 大 batch 下 cache miss 暴涨,优势消失
SpecBranch在 spec 上加一个 branching point;近似 SSD 的特例1 个 branchingfallback 速度不优,大 batch 下也崩
Tree-based SD (SpecInfer / EAGLE-2/3)draft 提议树,verifier 一次验整棵树多个 next-token 候选仍然串行;还增加 verifier compute (整棵树都得跑一遍 target)
SSD (本文)draft 在另一台 GPU 上 pre-speculate F·(K+1) 种 outcome,各对应一条 chain多个 (k, t*)需要解决: 怎么挑 outcome / sampling tradeoff / fallback
SSD 与 tree-SD 的关键差异:tree-SD 把额外 compute 放到 verifier(verify 整棵树),因为 verifier 是大模型,这个成本很高。SSD 把额外 compute 放到 draft(在独立 GPU 上 fan-out 出 F·(K+1) 条 chain),draft 是小模型,且独占 1 张 H100,几乎"白送"。两者 正交、可组合:每个 verification outcome 对应的 chain 也可以是一棵树。

1.3 为什么"双重投机"不平凡 — 它不是再套一层 SD

读到 "speculative speculative" 这个名字,第一反应往往是: 在 draft 上再加一个 mini-draft 去 spec draft 的结果。错。SSD 的 unlock 不在递归,而在预测 verifier 会怎么裁决。三个真正的难点:

  1. Outcome 空间是 O((K+1)·V): 一个 verification outcome 由 (k, t*) 唯一确定,k ∈ [0, K] 是接受的 token 数,t* ∈ V 是 bonus token。V ≈ 128k,K = 5 时空间是 ~10^6。穷举不可能 → 必须在预算 B 下选 top-B 个最可能的 outcome。这是 §5 解决的约束优化。
  2. cache hit rate vs acceptance rate 的张力: 想让 cache hit 率高,直觉上要让 bonus token 集中(残差分布尖锐),但这往往要求 draft 分布远离 target,而那又会降 acceptance rate。两个目标都进 §3.2 的 Theorem 7 分子分母 → 必须在同一个 sampling 设计里平衡。这是 §6 的 Saguaro sampling 解决。
  3. 大 batch 下 cache miss 概率 → 1: batch 元素的 cache hit 是独立事件,batch=b 时 batch 整体命中率 ~ p_hit^b。b=16, p_hit=0.8 → 整 batch hit 率仅 ~3.5%。一旦 miss,整 batch 都得等 backup speculator,这时 backup 必须极便宜(随机 token / n-gram),否则 SSD 比 SD 还慢。这是 §7 的 Saguaro fallback 解决。

三个问题环环相扣。Saguaro 的贡献就是给三个分别 propose 一个有理论 + 实证的解,组合起来在 H100 上稳赢 SGLang/vLLM/EAGLE-3 30%。


2 · 背景速查

2.1 关键术语

术语含义
Speculation lookahead Kdraft 一轮自回归提议的 token 数
Speculation sTround T 中 draft 提议的长度-K 序列 (s1T, …, sKT)
Verification outcome vT = (k, t*)verifier 接受了 k 个 token,t* 是 bonus token
Acceptance rate α (ap)给定前 token 都接受的条件下,下一个 draft token 被接受的概率;α = 1 - ½‖ptarget - pdraft‖₁
Residual distribution r(·)r ∝ max(ptarget - pdraft, 0);拒绝时从中重采样 t* 保证 lossless
Speculation cache STSSD 关键数据结构:dict[outcome v → 预先 speculate 好的 chain s]
Fan-out Fkcache 中"刚好接受 k 个 token"那一层放了几种 bonus token guess
phit,p / phit,bcache hit 率;条件于上一轮是 primary / backup speculator 提议的
Primary / Backup speculatorSSD 双层 draft: primary 慢但准 (主用); backup 快但糙 (cache miss 时兜底)
Tp, Tbprimary / backup speculate 一轮的耗时,以 verifier forward 时间为单位
Saguaro本文的优化版 SSD 实现 (PyTorch + PagedAttn + FlashAttn + custom mask)

2.2 SD 流程复习 (一行版)

① draft 自回归 K 步出 (s1, …, sK)。② target 一次 forward 算 K+1 个位置的 ptarget。③ 顺序拒绝采样: 每个 si 以 min(1, ptarget(si)/pdraft(si)) 接受,首次拒绝处从 r ∝ max(ptarget - pdraft, 0) 抽 bonus token t*;若全接受则 t* 直接从 ptarget 抽。④ 输出长度 ∈ [1, K+1]。Theorem (Leviathan): 输出分布 = 纯 AR target 分布。


3 · SSD 框架: 算法骨架与 lossless 论证

3.1 算法 1 的两个并发 process

SSD 把 SD 的单一控制流拆成两个并发 process,跑在不同设备上:

Speculator process (1×H100) primary_draft.prefill(prompt) spec_tokens ← primary.speculate(prompt) SEND spec_tokens → verifier (verifier 开始 verify 这一轮) // §5 Saguaro cache build outcomes ← predict_verify_outcomes(...) cache ← speculate_for_outcomes(outcomes) WAIT verify_outcome from verifier if verify_outcome ∈ cache: hit → return chain else: fallback_speculate (§7) Verifier process (4×H100, TP) target.prefill(prompt) WAIT spec_tokens from speculator verify_outcome ← target.verify(spec_tokens) (单次并行 forward, K+1 位置) append outcome.tokens → output SEND verify_outcome → speculator WAIT next spec_tokens loop until end_token spec outcome
Algorithm 1 拆成两个并发 process。橙色 step 是 SSD 新增、SD 没有的: 在等待 verifier 返回 outcome 的同一时间窗,speculator 已经在为下一轮的 F·(K+1) 种可能 outcome 各 spec 出一条 chain 存进 cache。一旦真实 outcome 命中,直接返回 cache;否则走 fallback。

3.2 Lossless 论证

这一点必须看清楚 —— 否则会觉得 SSD "猜得不对"会破坏分布。

类比: 这正像 CPU 里的speculative execution(Gonzalez 1997)— 用空闲算力预先执行多条可能分支,真正用到哪条由实际控制流决定。猜错的分支白干,但猜对的能直接上 retire 阶段。SSD 等价于 token-level 的 speculative execution。


4 · 公式: 加速量、cache 几何分布、bound

4.1 Theorem 7 (主加速公式)

speedupSSD = ( phit·Ehit + (1-phit)·Emiss ) / ( phit·max(1, Tp) + (1-phit)·(1+Tb) )

分子: 一轮期望产出 token 数。分母: 一轮期望耗时(以 verifier forward = 1 单位时间)。把 SSD 全过程归约成一个 条件期望比

关键直觉:命中时 latency = max(1, Tp),只要保证 Tp < 1(primary draft 在 verify 完成前结束),就 = 1 — drafting 完全被隐藏。Tokens 仍是 Ehit ≈ K+1 个/轮。这就是 "5× over AR" 的来源。

4.2 Corollary 9 (Speedup Sandwich)

(1+TSD)·(Ehit/ESD)·phit ≤ speedupSSD/speedupSD ≤ (1+TSD)·(Ehit/ESD)

双向 bound 表明: SSD 相对 SD 的额外加速 = (1) 隐藏 draft latency 的因子 (1+TSD) × (2) 因为 draft 可以慢慢算所以 Ehit 比 ESD 大的因子(Tp 比 TSD 可以更大)。

TSDphit=0.7phit=0.85phit=0.95
0.2 (draft 较快)1.20×1.20×1.20×
0.3 (典型 1B/70B)1.30×1.30×1.30×
0.5 (大 draft)1.50×1.50×1.50×

(此处取 Ehit/ESD = 1, 上界形式) — 上界与 phit 解耦,但下界严重依赖 phit。所以最大化 phit 是 SSD 的核心工程目标

4.3 Theorem 12 (Saguaro Cache 几何分布)

给定 cache 预算 B = ΣFk,假设 cache hit 率随 fan-out F 服从 power-law (1 - 1/Fr),最优 Fk 服从 capped 几何级数:

Fk = F0 · apk/(1+r) (k < K)
FK = F0 · apK/(1+r) · (1-ap)-1/(1+r)

物理直觉:验证恰好接受 j 个 token 的概率本身就是几何分布 aj(1-a) — 越深(j 越大)越罕见,所以越深 fan-out 越小,把预算花在最常发生的 outcome 上。最深的 j=K(全接受)单独一档 — 它的概率 aK 没有几何衰减,所以 FK 反而被放大 (1-a)-1/(1+r)

几何 fan-out 示意 (K=4, a=0.7, r=1, B=20) F₀=8k=0 (拒绝在第 0 位) F₁=6k=1 F₂=4k=2 F₃=2k=3 F_K=10k=K=4 (全接受)
预算 B=30 在 5 档 fan-out 上按 capped geometric 分配。中间档 (k=1..3) 几何衰减,最深档 (k=K=4, 全接受 / 从 ptarget 直接抽 bonus) 单独突起 — 因为它对应真正 "happy path" 而且 bonus 来自 ptarget 而非 residual,边际收益高。

4.4 Theorem 15 (Saguaro Sampling 单调性)

σF,C(z)t ∝ C·exp(zt) if t ∈ topF(z), else exp(zt)

即 draft sampling 时把 cache 里的 top-F 个 token 的概率 压低 C 倍。phit 单调随 C → 0 增加(可证)。

物理直觉:residual r ∝ max(pt - pd, 0)。压低 cache 内 token 在 pd 上的质量 → 它们在 residual 上的质量增加 → bonus token 更可能落在 cache 内。代价: pd 偏离 pt → acceptance α 下降。C 是这个 trade-off 的旋钮,Theorem 19 (Appendix A.3.1) 构造了一个 4-token 例子证明存在 α 不变但 phit 升的 C(具体: pt=(.48,.48,.02,.02), pd=(.49,.49,.01,.01), C=47/147 → p'd=(.47,.47,.03,.03), α 仍 = 0.98, 但 phit 从 50% 升到 100%)。


5 · Challenge ①: 怎么预测 verification outcome

5.1 Saguaro 的 cache 构造算法

给定预算 B 和几何 fan-out {Fk},Saguaro 的 cache 构造异常简洁:

在 draft 给出 spec s = (s1, ..., sK) 的每个位置 k,取 draft logits 的 top-Fk 个 token (排除 sk 本身,因为 sk 已经送去 verify,不会成为 bonus token),作为该位置的 bonus token guess。然后对每个 (k, t*) 用 draft 自回归 K 步,得到 length-K speculation 存入 cache。
送去 verify 的 spec s = (s₁, s₂, s₃, s₄, s₅), K=5 verifier 会接受其中前 k 个 (k ∈ [0,5]),并采样一个 bonus token t* Saguaro cache (B=20): k=0 F₀=8 个 bonus 候选(top-8 draft logits, 排除 s₁): t*₁ t*₂ t*₃ t*₄ …(共 8) → 各 spec 5 token k=1 F₁=4 个 bonus 候选: t* t* t* t* → 各 spec 5 token k=2 F₂=2: t* t* → 各 5 token k=3 F₃=1: t* → 各 5 token k=4 F₄=1: t* → 各 5 token k=K=5 F₅=4 (从 p_target 直采): t* t* t* t* → 各 5 token
Saguaro cache 结构: 共 ΣFk = 20 条 chain,每条 chain 长 K=5,合计 100 个 token 通过 custom-mask 一次并行 decode 出来。命中时只需返回对应 chain。注意 k=K 的"全接受"档,bonus token 是从 ptarget 直采(不是 residual),所以分布更尖、可预测性反而更高,值得多投资。

5.2 命中率有多高?

论文 Figure 3 实测: rejection rate (1 - phit) 随 fan-out F 服从 power-law,r ≈ 1。这意味着翻倍 cache size,miss 率减半。在 1B Llama draft + Llama-3.1-70B target 上:


6 · Challenge ②: cache hit vs acceptance 的张力 — Saguaro Sampling

6.1 问题

残差 r 是 bonus token 的来源(rejection 时)。r 难预测 是因为它依赖 ptarget - pdraft 的差;两个尖锐分布相减得到的可能很扁平。要让 r 集中,必须人为把 pdraft 在 cache 候选 token 上压低。但这同时让 pdraft 远离 ptarget,acceptance α 下降。

Saguaro sampling: 用 C ∈ (0,1) 旋钮控制残差形状 Before (C=1, vanilla) t1* t1 t2* t2 t3 t4 残差扁平: r 在 t1*,t2*,t3,t4 都有概率 cache (假设含 t1*, t2*) hit 率低 After (C=0.3, Saguaro) t1* t1↓ t2* t2↓ t3 t4 残差集中到 cache 内 t1*, t2* p_hit ↑, α 略 ↓ 图例: 红=p_target, 蓝=p_draft. 把 cache 内 token 的 p_draft 乘 C, 残差 max(p_t-p_d,0) 在 cache 上变大
vanilla draft sampling (C=1) 让残差落到所有非热门 token 上,bonus 飘出 cache;Saguaro sampling (C<1) 主动压低 cache 候选 token 在 pdraft 上的概率,把残差质量"赶"进 cache。代价是 pdraft 与 ptarget 的 TV 距离上升 → α 下降。两者通过 Theorem 7 的分子分母综合作用决定 end-to-end speed。

6.2 实证 trade-off 形状

论文 Figure 5 (left) 给出 cache hit rate vs acceptance rate 曲线随 C 变化:典型场景 C 从 1 → 0,hit rate 从 0.65 → 0.80,acceptance rate 从 0.80 → 0.50。曲线非单调推 speedup,需要选 sweet spot。论文采用经验扫描选 C(没有解析最优),原因是 ptarget 形状随上下文变化。


7 · Challenge ③: cache miss 的 fallback 策略

7.1 大 batch 是 SSD 的死穴

Corollary 16: batch size = b 时,只要任何一个 batch 元素 cache miss,整个 batch 都得等 backup speculator → effective miss 率是 1 - phitb

batch b124816
phit=0.85,整 batch 命中率85%72%52%27%7%

b=16 时 93% 的轮次都进 fallback 路径 → fallback 速度决定大 batch 性能。Theorem 17 给临界 batch size b*: b < b* 用 primary (慢但准),b ≥ b* 切到 backup (快但糙)。Saguaro 的 backup 实现:

batch 扩展行为 (Llama-3.1-70B/1B, T=0) batch size b → decode tok/s/seq 1 2 4 8 16 Fast backup (random) Neural backup Sync SD baseline b* 临界点
(Figure 6 重绘) 小 batch (b ≤ 2) 用 neural backup 更快 (因为它产出 token 多);b ≥ 4 后 cache miss 概率太高,整 batch 等 neural backup 跑完反而拖慢,fast backup 占优。Theorem 17 给出 b*。 Saguaro 实测在 b=16 仍比 sync SD 快 ~20%。

8 · Saguaro 的实现: H100×5, FlashAttention, custom mask

8.1 系统架构

Saguaro 是 PyTorch 自研推理引擎,集成 PagedAttention + continuous batching + TP + BF16 + torch.compile + CUDAGraphs。

Verifier 4×H100 (TP=4) Llama-3.1-70B, BF16, TP=4 PagedAttention + continuous batching Coordinator + Scheduler + BlockManager target.verify (1 forward, K+1 位置) Page-table 双重维护 含 draft 的 block_table (target host 持有) Speculator 1×H100 Llama-3.2-1B-Instruct draft Custom sparse attention mask FlashAttention-3 / FlashInfer B·F·(K+1) chains 并行 decode Speculation cache (~ 100s MB) B·K·(K+1)·F·(V+1) bits NCCL NVLink, 1× / 轮 ↑ outcome: O(B) bits ↓ chain+logits: O(B·K·V) bits
系统拓扑: 4 张 H100 跑 70B target (TP=4),独立 1 张 H100 跑 1B draft。每轮通过 NCCL 仅交换两个超薄 payload。关键: KV cache 不跨设备,target 和 draft 各自维护,communication 不是瓶颈。Coordinator 在 target host 上同时管两边的 page table。

8.2 Custom attention mask: 一次 forward 出 F·(K+1) 条 chain

整个 SSD 的工程难点。每轮 draft 要为 F·(K+1) 个 outcome 各 spec K 步,共 B·K·(K+1)·F 个 token forward。如果用普通 dense attention 这是 (K+1)F 倍 SD 的 FLOPs。Saguaro 用稀疏 mask + FlashAttention 让所有分支在同一个 forward 里完成。

Custom SSD attention mask 示意 (B=1, K=3, F=4, depth i=2) Prefix (verified) 所有 branch 都看 prefix Glue & Recurrence prev spec 已 prefilled 每条 branch 只看自己 fork path key positions → query positions →
(Appendix B Figure 8 简化) 三块结构: ① 左侧 dense block — 所有 branch 都 attend 已验证的 prefix; ② 中间 "Glue & Recurrence" — 上一轮已被并入 KV 的 spec tokens; ③ 右侧对角带 — 每条 branch 只 attend 自己 fork 出来的路径。这样 F·(K+1) 条 chain 物理上塞在同一个 batch dim 里跑,但逻辑上互不干扰,FlashAttention-3 (Shah 2024) 处理 dense 部分,FlashInfer (Ye 2025) 处理稀疏 mask 部分。

8.3 Compute / Memory / Communication 开销

资源SSD vs SD 倍数瓶颈?
Draft FLOPs(K+1)·F 倍 (这一轮多 decode 这么多 token)不是 — draft 在独立 GPU,且小模型
Verifier FLOPs1× (完全没动)
Speculation cache 内存B·F·K·(K+1)·(V+1) bits ≈ 100-300 MB不是 — H100 HBM 80GB
NCCL 通信量O(B·K·V) bits / 轮不是 — NVLink 几 GB/s 余量
Custom-mask attention 调度稀疏访存 dominates draft critical path — 限制 K 不能太大

关键观察 (作者明言): "most end-to-end speedup comes from hiding draft latency rather than increasing lookahead." 即 SSD 的核心收益不是 "更长 K 让 Ehit 大",而是把整个 drafting 时间从 critical path 上拿掉。这与我们直觉里"花更多 draft compute 换更长 chain"是不同的故事。


9 · Worked example: 一个 verification cycle 全流程

把上面所有抽象具体化。设定: Llama-3.1-70B target,Llama-3.2-1B draft,K=5,几何 fan-out F=(F0..F5) = (8,5,3,2,1,4),B=23,batch=1,greedy。当前 prefix 已生成到 "The integral of x squared dx is"

Step 1 (T=0, sync prefill): primary draft 提议 K=5 个 token

draft 在 prefix 后自回归 5 步,greedy 出 (假设):

s = ("equal", "to", "(", "x", "^")

(逻辑上的 token id, 不严格匹配真实 tokenizer)

Step 2: speculator 同时启动两件事

(a) NCCL SEND s 到 verifier process (4×H100); verifier 立刻开始 forward。

(b) speculator 不等! 立即开始为下一轮的 23 种 outcome 各 spec 5 个 token:

这 115 个 token 通过 custom-mask attention 一次 forward 完成 (FlashAttention-3),写入 speculation cache。预计耗时 ≈ 0.6 × Tverify (论文要求 Tp < 1 by construction)。

Step 3: verifier 完成,outcome = (k=3, t* = "x")

verifier 接受了前 3 个: "equal", "to", "(",拒绝了 s₄="x"(注意 s₄ 也是"x"但 verifier 在那里采样了一个不同的 "x" — token id 不同)。从 residual 采到 bonus = "x" (recovery token, 不是 s₄)。 NCCL SEND (k=3, t*="x") 回 speculator,O(B)=O(1) bits。

Step 4: 命中检查

speculator 查 cache[(k=3, t*="x")]. F3=2,假设 cache 在 k=3 那档放了 ("x", "y") 两个 bonus guess。命中! 取出对应的 length-5 chain,例如 ("squared", "+", "C", ".", " The")。

SEND 这 5 个 token 给 verifier — verifier 立刻开始下一轮 verify,无需等 draft。

Step 5 (alternative: cache miss)

若 outcome = (k=3, t*="z") 且 cache k=3 档不含 "z" → miss。Saguaro fallback (batch=1, b < b*) → 用 primary draft 同步 spec 一次 (Tp 时间)。这一轮等同于 vanilla SD,损失 SSD 的加速收益。

本轮 wall-clock 分解 (命中)

阶段耗时说明
verifier forward1.0 (基准单位)K+1 = 6 位置并行 forward
speculator 并行 (115 token, custom mask)~0.6与 verifier 重叠,被吸收
NCCL outcome → cache lookup~0.01可忽略
有效 latency1.0= max(1.0, 0.6) = 1.0
本轮产出 token 数43 个接受 + 1 bonus
等价 AR 速度4 tok/forward对比 vanilla SD 同样 outcome 是 (1.0+TSD) 时间产 4 tok

SSD 把这 4 token 用 1 单位时间产出,vanilla SD 要 1+TSD ≈ 1.3 单位时间。30% 提升的微观来源就在这里。


10 · 实验关键结果

10.1 端到端: Llama-3.1-70B/1B (Table B.3)

DatasetAR tok/sSD tok/sSSD tok/sSSD/SDSSD/AR
HumanEval54.71762831.60×5.17×
UltraFeedback54.71382151.55×3.93×
Alpaca54.71452241.55×4.10×
GSM8k54.71883011.60×5.50×
Average54.7161.8255.81.58×4.68×

读法:SSD 比作者自己的 SD 实现快 1.58×,而后者作者声明已经接近 vLLM/SGLang 水平。HumanEval / GSM8k (代码 / 数学,token 分布更可预测) 加速最猛 → 印证 cache hit rate 是 deterministic-style 任务的优势区。

10.2 SGLang/vLLM/EAGLE-3 比较

论文实测在 SGLang 0.5.9 上 Llama-3.1-70B/1B EAGLE-3 最优配置(steps × topk 搜索)峰值 ~201 tok/s,vLLM EAGLE-3 ~197 tok/s。Saguaro SSD 的 255 tok/s 比这些都快 ≥ 25%。注脚 4: 在该实验里 Llama-3.2-1B 作为 draft 比 EAGLE-3 还略好,作者据此判断没必要再叠 EAGLE-3。

10.3 Pareto frontier (Figure 7 right)

SSD 不仅在 latency 维度赢,在 throughput-latency 双维度都推开 Pareto wall — 即使把多用的 1 张 draft GPU 计入 per-GPU throughput。这意味着作为 cluster level 部署 primitive,SSD 比 SD 节省 GPU

10.4 Qwen-3 32B/0.6B (Figure 11)

在 Qwen3 上加速比 ~2.3×/AR,~1.5×/SD。比 Llama 系列略低 — 因为 Qwen3-32B 比 Llama-3.1-70B 小,verifier forward 本身已经较快,SD 留给 SSD 的 hide 空间小。


11 · 与同类工作对比

vanilla SDtree-SD / EAGLE-3Mirror-SD (sibling note 09)async-overlap (AMUSD/PEARL/SwiftSpec)SSD / Saguaro
额外并行域token-tree (verifier compute ↑)target early-exit branch下一轮 spec (但只覆盖 1 outcome)F·(K+1) outcomes
是否动 verifier是 (verify 整树)是 (early-exit signal)
额外硬件异构+1 张 H100 给 draft
大 batch 鲁棒性★★★★★★★ (cache miss 集中崩)★★ (有 fallback theorem 17)
lossless
组合可能性与 SSD 正交(机制不同)SSD 是其严格泛化组合 EAGLE-3 (Appendix E)
典型加速 vs AR2-3×3-4× (大 model)~3× (论文)~3-4×4.7× avg, 5.5× peak
定位:SSD 与 EAGLE-3 不是替代关系。EAGLE-3 优化 acceptance rate(让 draft 更准),SSD 优化 wall-clock(把 draft 时间藏掉)。SSD-EAGLE-3(Appendix E + Figure 9)讨论了组合时的细节: SSD 的 draft 在 verify 完成前就启动 round T+1,所以拿不到 round T 的 target activations,只能用 self-generated activations 作 surrogate。需要在 draft 训练阶段就让 EAGLE-3 适应较长的 self-conditioning 链。

另见 sibling note 09_MirrorSD_2510.13161.html。Mirror-SD 与 SSD 走的是不同方向:Mirror-SD 利用 verifier 自己的 early-exit 作为信号触发 branch — 它需要修改 verifier 的执行图;而 SSD 完全把 verifier 当黑盒,只在 draft 一侧做文章。两者本质上不冲突。


12 · 局限 / 个人 take / 待验证问题

论文承认的局限

我的疑问 (待验证)

  1. 论文用 1B/70B (1.4% 比例)。如果用 7B/70B 之类更强 primary draft,Tp 会逼近 1,Theorem 7 中 max(1, Tp) 项变 active,SSD 退化到 SD;甜点 draft 大小到底在哪?
  2. Saguaro sampling 的 C 在论文中是 hand-tuned。能否做 per-context 自适应 C(根据当前 ptarget entropy)? 我猜在长 reasoning chain 中,entropy 单调下降,固定 C 是次优。
  3. Theorem 12 假设 r power-law 命中率。论文 Figure 3 只验了 Llama 系列,Qwen 系列只在 Appendix F 验。其他更稀疏家族(MoE 如 Mixtral、Qwen3-235B-A22B)上 r 还成立吗?
  4. 论文测的全是 H100。AMD MI300 / TPU 上 NCCL 路径不一样,custom-mask attention 没有 FlashAttn-3 同等内核 — 实际工程化到非 H100 集群成本未知。
  5. online weight update 场景(如 RL rollout): SSD 用的 draft 是 frozen 还是 follow learner?如果 frozen, drift 在 RL 中会让 cache hit 率下降;如果 follow, NCCL 路径上要传 weight diff,新瓶颈。论文不涉及 RL,但这恰是 sibling note 01 (NeMo-RL) 的应用场。
  6. Theorem 19 的 4-token 反例只证 "存在" sampling 提速;实际 V≈128k 时,phit gain vs α loss 的真实 trade-off 曲线形状是否在所有 prompt 上都"对 SSD 有利"?

我的 take (一句话)

SSD 是 SD 后第一个把"draft↔verify 串行"这道墙凿开且实现工业化的工作。它的价值不在新的 acceptance 改进 (那是 EAGLE 系列的活),而在把 SD 的硬件部署模型从"draft 寄宿在 target 同卡"升级到"draft 独立 GPU + 高频 NCCL"。这一步是不可逆的 — 一旦验证有效,后续 SD 工作大概率会默认在 SSD 拓扑下衡量收益。

记忆点

立场 SSD 不是再套一层 SD;它的 unlock 是预测 verifier 会怎么裁决
公式 speedup = (phit·Ehit + (1-phit)·Emiss) / (phit·max(1,Tp) + (1-phit)·(1+Tb))
三难 outcome 选取 (Saguaro cache, geom fan-out) / sampling 张力 (Saguaro sampling, C) / fallback (random / n-gram, 大 batch 才用)
硬件 4×H100 (target) + 1×H100 (draft) + NCCL/NVLink + FlashAttention-3 + custom mask
数字 5.5× peak vs AR (GSM8k); 30% over best SD; 命中率上限 ~90%
陷阱 大 batch phitb 暴跌 → fallback 必须 zero-latency (random 或 n-gram)
正交 与 EAGLE-3 / token-tree 互不冲突,可叠加 (Appendix E)

精读笔记 v1 · 2026-05-07 · 配套论文 PDF: /data/szhang967/papers/paper-notes/spec-rl/SSD_2603.03251.pdf
sibling notes: 02_EAGLE_evolution_DFlash.html · 09_MirrorSD_2510.13161.html