Mirror Speculative Decoding: Breaking the Serial Barrier in LLM Inference
速读卡片 (TL;DR)
一句话:把 draft 从"target 输出之后才开始跑"提前到"target 中间层 early-exit 时就开始 branch-complete 速推",并把 draft 物理上搬到 NPU、target 留在 GPU——把 SD 从串行 pipeline 改成双向、异构、并行的镜像结构,在 14B–66B target 上拿到 2.8×–5.8× wall-time。
立场:这不是一个新 draft 架构,而是一个 system–algorithm co-design:用早退信号 + 跨设备 overlap 把 EAGLE-3 框定的 acceptance–latency 折衷曲线整体下移,代价是要有一颗 NPU(或第二类加速器)。
1 · 动机:为什么 SD 卡在串行墙上
1.1 历史脉络:从 Leviathan 2023 到 EAGLE-3 的"局部最优陷阱"
把时间线拉一下,SD 的演化基本就是沿着同一条 Pareto 曲线在挪点:
- 2023:Leviathan & Chen 的 vanilla SD。draft 是个独立小模型,γ 个 token AR 生成,target 一次 forward 验证。serial pipeline 写在公式里:
T_SD = T_draft + T_target。 - 2023 末:Medusa。把 draft 拆成 target 上的 K 个并行 head,γ 步压缩成一步——但 head 之间没自回归依赖,acceptance 上限低。
- 2024:Hydra。在 Medusa 基础上给 head 加上序列耦合,acceptance 回升,但开销也回来了。
- 2024:EAGLE-1/2/3。改用共享 target hidden state 的轻量 draft layer,EAGLE-3 还引入 multi-layer fusion + token-level 预测,把 acceptance 推到当前最强(对应 SpecBench 上 2.5×–3.5×)。
- 2024:tree drafts (SpecInfer / EAGLE-2 dyn-tree)。draft 不再是一条直线,而是个候选树,target 一次验证一棵树。
但所有这些仍然是单一加速器、单一时间轴上的串行:draft 必须先把 γ 步推完,target 才能开 verification(或 verification 必须等 target 完整 forward 才出 logits)。本文用一句话把这条天花板拍死:
"larger speculative modules improve acceptance at the cost of higher draft construction latency, while smaller ones reduce overhead but lower acceptance and limit speedup. ... Eq. 5 exposes the core limitation: improvements in acceptance must compensate for the added draft latency, intrinsically coupling acceptance with latency."
1.2 别的方案为什么不够
| 方案 | 动了什么 | 本质代价 |
|---|---|---|
| 更大的 draft / 更深 EAGLE | ↑ acceptance ρ | draft 时间 T_draft 同步上升,串行链条更长 |
| 更小的 draft / Medusa head | ↓ T_draft | acceptance 跌,γ 受限 |
| Tree draft (SpecInfer / EAGLE-2) | 多分支并行验证 | verification 时 attention pattern 变贵,draft 还是要 AR |
| Async / pipeline 两 step 重叠 | 把 step t+1 的 draft 提前到 step t 的 verify 中 | policy lag(用旧 logits)→ acceptance 漂移 |
| Lookahead / PLD / REST(retrieval) | 不用 draft 模型,用 n-gram 或 KV 检索 | 域外失效,长尾 ρ 低 |
| Mirror-SD | 用 target 自己的中间层做 draft 触发器,跨设备 overlap | 需要异构硬件 + 一次小 cross-device 通信 |
本文最尖锐的 framing 是:前面所有方法都在 "acceptance ↔ latency" 这条二维曲线上挪——你想要 acceptance 高就要付 latency。Mirror-SD 不是挪,而是给曲线加一个新的维度("跨设备时间"),让 draft 时间在临界路径上消失。
1.3 为什么"对称速推"不平凡
简单想:既然 target 的中间层 hidden 已经"差不多知道下一个 token 是什么了"(Pal et al. 2023 早就报过 logit lens 现象),那为啥不在中间层就让 draft 启动?三个非显然的难点:
- Early exit 的分布 ≠ 最终分布。如果你直接拿 ℓ_e 层的 token 提交,会污染输出分布(违反 lossless)。所以 early exit 只能当路标(top-κ 候选 + 概率),最终接受还是要看第 N 层 logits。
- Draft 收到 top-κ 路标后,要替每一个候选准备好后续 γ 步——这是 branch-complete。不是 draft 一条线 γ 个 token,而是 κ 棵深度 γ 的子树。κ=8、γ=7 时 draft batch 显著膨胀,如何让它仍能在 target suffix 时间内跑完?这逼出了 SS draft + NPU 上的特殊 sharding。
- "Mirror" 的另一半:target 同时也在为 draft 做 correction。当 draft 选错分支(early-exit top-κ 没命中真正的下一 token),target 在第 N 层算出 correction 后,要么命中树里某条预算分支(reuse,见 §3),要么必须 fallback 重新启 draft。这一对称(draft 在猜 target / target 在校 draft)就是名字里"mirror"的来源。
把这三件事合在一起:Mirror-SD 既不是单纯"提早启 draft"(那只是 early-exit decoding),也不是"换硬件"(那只是异构推理),而是三件事必须同时成立才能保 lossless 又拿到加速。这是它跑 v.s. 看起来"好像谁都能想到"的差距所在。
2 · 背景速查
| 符号 | 含义 |
|---|---|
γ | speculative window 长度(本文默认 7) |
κ | early-exit top-κ 宽度(默认 8) |
ℓ_e | early-exit 层(默认 N/2,目标网络中点) |
p(ℓ) | 把 LM head 应用在第 ℓ 层 hidden 上得到的 proxy 分布 |
p(N) | target 最终(top layer)分布,验证就用它 |
M_t | early-exit 信道载荷:top-κ token IDs + log-probs,大小 O(Bκ) |
A_t | step t 的 accepted-prefix 长度(0..γ) |
𝓣_t | draft 在 NPU 上以 M_t 为 κ 个根、深度 γ 的"假设树" |
τ = A_t + 1 | 第一次 mismatch 的 depth(correction 位置) |
SS | Speculative Streaming(本作者 2024 年的 multi-stream attention) |
SPD | SPD draft 架构(Kim et al. 2025),把 N_d 层切成两段、每段 G_D 个 track |
G_T / G_D | target / draft 的 TP degree(本文都是 8) |
Δ ≜ T_targetℓ_e+1:N | "overlap budget":target suffix 时间,draft 要钻进这个窗口 |
Ω_κ(ℓ_e) | top-κ overlap mass:在 q=p(N) 下落入 top-κ(p(ℓ_e)) 的概率,fallback frequency 的下界控制者 |
Vanilla SD 复习一遍。step t:
- draft 从 (x, y_
- target 一次 forward 算出 p(N)(·| y_
- 取最长前缀 r,使所有 ŷ_{t+j} = argmax p(N);若 r<γ,补一个 correction token c,从 (p(N) − p(draft))+ 重采(stochastic 模式)。
- commit y_{t+1:t+r}(+ c),进入下一 step。
- target 一次 forward 算出 p(N)(·| y_
关键观察:第 2 步 target forward 必须等第 1 步 draft 完成,这就是"serial barrier"。
3 · 方法 A:Early-exit + branch-complete 速推
3.1 关键动作:在 ℓ_e 层"分叉"
step t 开始,target 像往常一样跑 1..ℓ_e 层。在 ℓ_e 层,做两件事 同时:
- 把 LM head 应用到 ht(ℓ_e) 得到 p(ℓ_e);取 top-κ,打包成 Mt={(v_i, log p̃_i)}i=1..κ 通过低带宽 token channel 发给 draft 所在的 NPU(O(Bκ) 字节,微秒级)。
- target 自己继续 ℓ_e+1..N 层,生成最终的 p(N)——这是 verifier 真正要看的分布。
NPU 这边,draft 收到 κ 个候选根之后,同时对每一个 v_i 跑深度 γ 的 rollout(branch-complete):
这个"对每个候选都把后面 γ 步铺开"就是 branch-complete。draft 不再是一条直线,而是 κ 棵深度 γ 的树,合在一起记作 𝓣_t。
3.2 Verification vs. reuse 规则
target 跑完到 N 层得到 p(N),沿"当前 draft 选定路径"做标准 SD verify,得到 A_t。两种情况:
- A_t = γ:整个 window 全接受,直接 commit;下一步从树根重新出发。
- A_t < γ: 在深度 τ=A_t+1 处出现 mismatch,target 用 ct+τ ∼ p(N)(·) 修正。
关键的"reuse"判定:被 commit 的 prefix Πt+ = (accepted...,c) 在不在 𝓣_t 已经预算好的 paths 里?
Reuse 命中 = 下一 step 的 draft 不用重来,直接拿树里那条分支当新 window;fallback = draft 必须从被修正后的 context 重新 rollout,白费一次 NPU 时间。
3.3 Worked example: 一个 token "积" 的命运
设 target = Qwen3-32B,N=64,ℓ_e=32,κ=8,γ=7。当前 prefix = "微积" 之后,要预测下一个字。
- target 跑完 32 层,LM head(h(32)) → p(32)。top-8 = ["分", "学", "公", "(", "方", "在", "运", "的"](假设)。把这 8 个 token + log-prob 通过 token channel 发给 NPU(8 项 × bf16,几十字节)。
- 同一时刻:GPU 继续跑 33..64 层。NPU 上,draft 同时在 batch 维度展开 8 棵 γ=7 的树,例如对 "分":"分→法→是→一→种→重→要" 之类。SS draft 实际只需 J ≤ ⌈γ/η̄⌉ 步(后面会讲),通常 J=2~3 而非 7。
- GPU 第 64 层算出 p(64),argmax = "分"——命中 v_1!
- 用 "分" 这条分支沿深度 verify:draft 给 "分→法→是" 而 target 给 "分→法→中"。则 A_t=2(接受了 "分", "法"),τ=3,correction c="中"。
- 检查 reuse:Πt+=("分","法","中") 在不在树里?如果 draft 在 "分→法" 的 depth-2 节点下还展开了多个分支(包括 "中"),那就 reuse 命中,下一 step 直接用预算好的 "分→法→中→…" 当 window;否则 fallback。
反向论证: 如果不做 branch-complete(只让 draft 给一条线),那么 step t 的 fallback 概率 = P(target argmax ≠ draft 选的那个根 v*),通常 30%–50%——白费一半。Branch-complete 把它降到 P(ct+τ ∉ 任何已展开 path),实测 0.1–0.3(见 §8 fallback 曲线)。
4 · 方法 B:Speculative Streaming on draft(只动 draft,不动 target)
问题:branch-complete 让 draft 要在很短时间内吐出 κ·γ 个 token。如果 draft 还是普通 AR,要 γ 个内部步——很可能撑爆 overlap budget Δ。
解法:把作者自己 2024 年的 Speculative Streaming (SS) 装到 draft 上(不是装到 target 上,这个区分很重要)。SS 的核心是 multi-stream attention:每一层除了主 stream Mt(ℓ),还附带 γ 个 lookahead stream St,j(ℓ)(j=1..γ),每个 lookahead 只看前面已 verified 部分 + 比它早的 lookahead。一次 forward 同时给出:
- 主 stream 的下一 token 分布(用来 verify 上一轮 draft)
- γ 个 lookahead 的下一 token 分布(用来填本轮 window)
每个内部 step 因此能吐 η_j ≥ 1 个 token,平均 η̄ > 1。要覆盖 γ 个 token,只需 J ≤ ⌈γ/η̄⌉ 步而不是 γ 步。实测 J ≈ 2–3 时,T_draft 砍掉 50%+。
5 · 方法 C:GPU↔NPU 异构 sharding
这一节是论文最"systems"的部分,也是 EAGLE-3 没做的(EAGLE-3 把 draft 和 target 全堆在 GPU 上,共享 KV)。Mirror-SD 用 8 张 GPU + 8 颗 NPU(Apple M2 Ultra 系统),分工:
| 角色 | 设备 | Sharding | 每 step 同步次数 |
|---|---|---|---|
| Target(N=64,32B) | 8 张 M2 Ultra GPU | Megatron-style TP:每 MHA / MLP 块 2 次 all-reduce | 2N = 128 次 / step |
| Draft(N_d=16,0.6B) | 8 颗 NPU | SPD:layers 切 2 段,每段 G_D=8 个 track,每 track 一颗 NPU 常驻自己的 weight shard | 2 次 / step(段边界 1 次 + 输出端 1 次) |
SPD 这件事关键到不能含糊。普通 TP 是每一层都要 all-reduce,因为权重是按 hidden dim 切的。SPD 把 draft 的 N_d 层切成两段,段内每个 NPU 跑全部层(用自己那份权重 shard),段间才同步。代价是每个 NPU 都要装一份权重,但 draft 才 0.6B,16 层 × 256 hidden / shard 完全装得下。
跨设备 token channel:每 step 两次小消息——M_t(early exit)和 final verify 触发——都是 O(Bκ) 个 token IDs + log-probs(bf16),通过 GPU→CPU→NPU 拷贝走。论文说微秒级,几乎可忽略。
6 · Latency 公式 + 灵敏度
把上面三件事合到一个 step 的时间公式里:
记 Δ ≜ T_targetℓ_e+1:N(overlap budget,target 后半段时间)。
| 情形 | T_Mirror | 对比 vanilla SD |
|---|---|---|
| T_draftgen(γ) ≤ Δ (理想) | T_target + T_rv | vanilla = T_target + T_draftgen;省了 T_draft 减去 T_rv |
| T_draftgen(γ) > Δ (draft dominated) | T_target1:ℓ_e + T_draftgen(γ) + T_rv | 仍省了 Δ(target 后半段被 hide),但 draft 把临界路径拉长 |
所以本作的全部工程目标可以用一句话总结:把 draft 时间塞进 Δ 这个时间窗里。方法 B (SS) 缩 T_draft;方法 C (SPD) 把 draft sync 从 2N_d 砍到 2;ℓ_e 选在 N/2 让 Δ 最大化但又保证 early-exit 信号还够准。
6.1 灵敏度小表
| 调旋钮 | 影响 | 权衡 |
|---|---|---|
| ↑ κ (top-κ 宽度) | Ω_κ ↑ → fallback ↓ → 复用率高 | draft 树变大,T_draft↑;token channel payload ↑(O(Bκ)) |
| ↑ γ (window 长度) | 每接受一次产出更多 token | T_draft↑,可能掉出 Δ;且 Δ 取决于 N - ℓ_e |
| ↓ ℓ_e (浅一点) | Δ ↑(给 draft 更多时间) | p(ℓ_e) 离 q 远 → Ω_κ ↓ → fallback ↑ |
| ↑ ℓ_e (深一点) | Ω_κ ↑(命题 2 严格证明:fallback 单调下降) | Δ ↓,draft 没时间钻进 overlap |
| ↑ B (batch size) | 更多 token 摊销 GPU compute | draft compute ∝ B·κ·γ 也涨,且 NPU 受 channel 限制;论文 B≥16 时砍 κ 到 4/2/1 |
论文实测 sweet spot:κ=8, ℓ_e = N/2, γ=7。这个组合在 SpecBench 6 个域 (Humanities/Math/Roleplay/STEM/Coding/Math-reasoning) 上 fallback frequency 都落在 0.1–0.3,Ω_κ 接近饱和。
命题 1 + 2:为什么 κ 越大越好,ℓ_e 越深越好(直觉版)
命题 1(κ 单调):把 top-κ 集合扩大只会"添根",不会"减根",所以 fallback 只能不增。极限 κ→|V|,fallback→0。bound 是 FF ≤ 1 − Ω_κ(ℓ_e)。
命题 2(ℓ_e 单调):logit lens 现象保证 p(ℓ) 随 ℓ→N 收敛到 q。Ω_κ(ℓ) ≥ q(S*) − 2κ ε_ℓ,ε_ℓ→0 时 Ω_κ→max,fallback bound 也对应下降。如果 q 的 top-κ 边界有 margin,ε_ℓ 足够小后 Top-κ(p(ℓ)) = Top-κ(q) 完全一致,fallback 触底。
这两条单调性同时存在,但 ℓ_e 增加会缩 Δ,所以才需要中点 ℓ_e=N/2 这种折中——κ 那边没有这么尖锐的约束(只要 κ 不超过 channel 带宽即可),所以 κ=8 已经接近 saturation。
7 · Worked example:一条序列穿过双 pipeline
把 §3.3 的"积分"例子完整跑一遍,把所有计时也填进去。Qwen3-32B,N=64,ℓ_e=32,γ=7,κ=8,M2 Ultra GPU+NPU 集群 (×8)。
时刻 0(target step t 开始): commit 到 prefix "微". 假设 target 单层 ≈ 0.4 ms。
| 时间(ms) | GPU(target)做什么 | NPU(draft)做什么 | 注释 |
|---|---|---|---|
| 0–12.8 | 跑 L1..L32(prefix forward) | 等 | T_target1:ℓ_e=32×0.4=12.8 ms |
| 12.8 | L32 → LM head → top-κ M_t = ["分","学","公","(","方","在","运","的"] | — | 同时:GPU 把 M_t 扔进 token channel |
| 12.8 + 几 μs | L33..L64 继续 | NPU 收到 M_t,启动 8 棵 γ=7 树 | token channel: 8 IDs × bf16 ≈ 16 B |
| 12.8–25.6 | L33..L64(用 SPD-fused matmul + 2 collective) | SS draft:J=3 步,每步 2 个 lookahead,共出 8 棵深度 7 的 partial tree | Δ=12.8 ms;T_draft^gen ≈ 11 ms (J=3 × 3.5 ms) |
| 25.6 | L64 → p(N);argmax = "分" | 把 8 棵树的 logits 通过 token channel 推回 GPU | final verify rendezvous |
| 25.6 + ε | 沿 v="分" 这棵树往下 verify;match 到深度 2,τ=3,c="中" | idle / 准备下一 step | A_t = 2,γ-A_t = 5(本步 commit 3 个 token: 分、法、中) |
| 25.6 + ε | 检查 reuse:("分","法","中") 在 𝓣_t 的某条 path 里? 命中 → 下 step 直接接 | — | 这一 step e2e ≈ 26 ms 出 3 token,有效 8.7 ms/token |
对比 vanilla SD 同 prefix:需要 draft AR 7 步(7×3.5≈24.5 ms)+ target 整 forward(64×0.4=25.6 ms)= 50 ms,假设接受 2 个产出 3 token,16.7 ms/token。≈1.9× 加速,与 Math 域报的 5×–5.8× 相比稍低,因为这只是 single step 的简化估计;实际增益还要乘上"reuse 把下 step T_draft 也省了"那部分。
8 · 实验关键结果 + 30% 拆分
8.1 SpecBench 主表(摘录)
| Target | 任务 (T=0) | EAGLE-3 | Mirror-SD | Δ % |
|---|---|---|---|---|
| Qwen3-14B | Math reasoning | 3.36× | 5.32× | +58% |
| Qwen3-14B | Translation | 2.53× | 4.13× | +63% |
| Qwen3-14B | RAG | 2.66× | 3.49× | +31% |
| Qwen3-14B | Multi-turn conv | 3.29× | 3.70× | +12% |
| Qwen3-32B | Math reasoning | 3.77× | 5.84× | +55% |
| Qwen3-32B | QA | 2.76× | 3.04× | +10% |
| Mistral-24B / OPT-66B | 多任务 | — | 2.8–4.5× | (通泛化,见 Fig 4) |
"30% 平均"是几十个 task × temperature × model 的 micro-average。从分布看:长输出、高确定性的任务(数学、翻译、长 reasoning)增益最大(高 acceptance + 长 window 都能稳定 hide draft);高熵任务(多轮对话、QA)增益最低(频繁 fallback 把 NPU 计算白白浪费)。
8.2 30% 增益拆分(我的解读)
论文没给一张正经的 ablation table 把 30% 切成 (cross-device + mirror + early-exit + SS) 四个分量,但从 Fig 4 (OPT/Mistral 上的 4-way) 和 Fig 6 (SS 单独 speedup) 能反推:
8.3 Fallback 曲线(Apdx E.4)
论文给了 6 个域的 FF (fallback frequency) vs κ × ℓ_e 曲线:
- κ 从 1 到 128:FF 单调降,κ=8 时已经在膝盖处,16+ 收益边际递减——支持 κ=8 的默认。
- ℓ_e ∈ {1/4, 1/2, 3/4} N:深一点 fallback 更低,但论文最终选 1/2 是因为要兼顾 Δ(深一点 Δ 太小,draft 钻不进去)。
- Math/Math-reasoning 域 FF 最低(0.1 左右),Multi-turn / Roleplay 最高(0.3+)——直接对应 SpecBench 表里这俩 domain 的加速差异。
8.4 Batching 影响(Apdx D.1)
B 从 8 → 128:vanilla SD 加速从 2.84× 跌到 1.77×;Mirror-SD 从 3.05× 跌到 1.95×。两者都跌(因为 target verify 越来越主导),但 Mirror-SD 始终领先。论文的对策是随 B 增大动态缩 κ(κ=8 → 4 → 2 → 1)以控制 draft 端 compute——这意味着大 B 部署时 mirror 优势会变小,但仍存在。
9 · 与同类工作对比
| 工作 | 核心 trick | 与 Mirror-SD 的关键差异 |
|---|---|---|
| EAGLE-3 (02) | multi-layer fusion + token-level head 共享 hidden | 单设备、单时间轴;acceptance 高但 T_draft 仍在临界路径 |
| DFlash (07) | DraftAttention + tile-aware sparsification | 专攻 draft 内部的 attention overhead;Mirror-SD 是把整个 draft 搬出 GPU |
| Hidden States Drift (08) | 分析 EAGLE 在 RL post-training 中 hidden states 漂移 | 诊断性论文;Mirror-SD 对 RL 不敏感(因为 draft 0.6B 完整训自 UltraChat,不依赖 target hidden 形态稳定) |
| SpecInfer / Tree drafts | candidate tree + tree-aware verify | Mirror-SD 也用树(branch-complete),但树是 NPU 上离线生长的,verify 沿"被 target 选中的那条路径"走,不需要 tree-aware attention |
| Async / pipeline SD(LlamaRL 等) | step t+1 的 draft 提前到 step t 的 verify 中 | 它们靠"用旧 logits"换并行,有 policy lag;Mirror-SD 严格 lossless,因为最终 commit 永远基于 p(N) |
| Draft-larger 路线(更深 / 1.7B 自回归 draft) | 更准的 draft → ρ↑ | 本文 Fig 3a 直接画了:vanilla SD 用 1.7B AR draft 也跑到 acceptance ≈ 4.5,但 latency 同步爆掉;Mirror-SD 用 0.6B SS draft 在更低 latency 拿到同等 acceptance |
| CALM / MoD(early-exit decoding) | shallow exit 直接 commit | 它们牺牲 lossless;Mirror-SD 只把 early-exit 当"路标",最终 commit 仍走完整 N 层 |
立场总结: 90% 的 SD 改进论文都在"单一加速器内"挖榨;Mirror-SD 把 axis 加到"跨加速器异构 + 早退路标 + 双向校正"。代价是需要 NPU——这是它的硬件假设,也是它的硬伤。
10 · 局限 / 个人 take / 待验证问题
论文承认的局限
- 大 batch 下 mirror 优势缩小(Apdx D.1);本质是 draft 也变成 compute-bound,overlap 窗口被吃掉。
- 需要异构硬件;论文用 Apple M2 Ultra(GPU+ANE),换到 H100-only 集群没法直接用——你要么虚拟出"两组 GPU",要么完全没法跑 mirror 这部分。
- Apdx F.1 透露,跨 SoC 用 Thunderbolt 5 (120 Gbps)互连,8 节点拓扑是纸糊的:groups of 2,group 间靠 fabric。Inter-group sync 论文说"sub-millisecond",但具体怎么 schedule 没展开,扩展性堪忧。
- Lossless 证明依赖"draft 在 verification 时呈现的分布与 vanilla SD 同分布"——Apdx B Eq.12。这要求 branch 选择策略是 conditional law-preserving 的;论文用"按 v_i 概率加权"暗示了一种实现,但没证全。
我的疑问
- 真无 NPU 能复现多少?把 NPU 替换成"target 同集群里的另一组 GPU + DGL 切到 PCIe 通道",overlap 还在,但带宽完全不同。希望看 H100-only ablation。
- RL post-training 的 hidden states drift(见 08 号笔记)对 mirror 多敏感? 早退用的是 target 中间层,如果 RL 让中间层漂移加快(早期 fine-tune 后 logit lens 退化),Ω_κ 会跌得多猛?
- 30% 拆分中"branch-complete reuse"那 10% 是否过高估?论文没单独 ablate,我从 fallback 0.1–0.3 推测的;实测 reuse rate 想看个真实曲线。
- τ=0 vs τ=1 的差距并不剧烈,意味着 Mirror-SD 对 stochastic decoding 也稳。但 nucleus / top-p 没测,top-κ 在 ℓ_e 是硬切的——和 nucleus sampler 在 N 层组合可能违反 lossless。
- γ=7、κ=8 是否对所有 14B–66B 都最优?论文说"是",但 OPT-66B 比 Qwen3-14B 大 5 倍,Δ 也大 5 倍,直觉上 OPT 应该可以承受更激进的 γ。
- "Mirror" 的真正双向是不是被夸大了?读全文,target 主要在做 verify + 给 correction;draft 在做 branch-complete。论文修辞上说"target speculates correction paths for the draft",我看更像"target 给 single-token correction,draft 自己看在不在树里" — 这并不算 target 在主动 speculate。
记忆点
公式 T_Mirror = T_target1:ℓ_e + max{Δ, T_draft^gen} + T_rv;Δ=N-ℓ_e 层
钥匙 early-exit top-κ 路标 + branch-complete 树 + SS draft + SPD-on-NPU,四件事缺一不可
默认 γ=7, κ=8, ℓ_e=N/2, draft 0.6B, G_T=G_D=8
硬伤 需要异构加速器(NPU);单 GPU 集群直接 fall back 到 vanilla
数字 14–66B target 上 SpecBench 2.8–5.8×;比 EAGLE-3 平均 +30%;Math reasoning 上 5.84×
命题 FF ≤ 1 - Ω_κ(ℓ_e),κ 单调,ℓ_e 单调(eq.bounded by logit-lens convergence)
精读笔记 v1 · 2026-05-07 · 配套 PDF: /data/szhang967/papers/paper-notes/spec-rl/MirrorSD_2510.13161.pdf
相关:01 NeMo-RL × EAGLE-3 · 02 EAGLE evolution · 07 DFlash · 08 Hidden States Drift