DropMatch · Training-free Dropout Sampling for Semantic Token Acceptance in Speculative Decoding

NAVER Cloud · Jeongtae Lee et al. · 2026-02-11 · arXiv:2603.03333
关键词: speculative decoding · MC dropout · semantic acceptance · LM head · training-free · lossy SD

速读卡片 (TL;DR)

一句话:MC dropout 只挂在 target model 的 LM head 上,用 K 条扰动头给同一个 hidden state 出 K 个分布,把 draft token 的接受判定从"严格 rejection sampling"改成"是否落入这 K 条分布构成的语义簇"——training/data/calibration 全免,直接套上 standard SD / Auto-Judge / EAGLE-3 都能再多榨 1.0–1.3× 速度。

1.64%
K=5+JS 总 forward 开销
1.09–1.33×
over standard SD
+1.09×
stack 在 EAGLE-3 之上

立场:本质上是把 lossy SD 的"语义等价"判别问题重新定位为目标模型自身的不确定性问题——不需要训 judge head、不需要 draft 重训,代价是接受了一个温和的 distortion(p_drop 控制)。读法:这是 lossy SD 路线里"零摩擦"工程方案,不是新的理论保证。


1 · 动机:为什么 token 级精确匹配是浪费

1.1 历史脉络 — 从 lossless rejection 出发

Leviathan / Chen 2023 给的标准 SD 协议很优雅:逐位置 rejection sampling。给定 draft 分布 q 和 target 分布 p,以概率 min(1, p(x)/q(x)) 接受 draft 的 token x;否则按归一化后的残差 (p−q)+ 重采样。这条规则数学上保证最终输出严格服从 p,所以叫 lossless

但这个机制有一个隐含浪费:它判等的对象是 token id。在自然语言里,"积分" 和 "integral"、"计算" 和 "计算出"、"The" 和 "the"、甚至 "0.5" 和 "0.50" 这种从语义上几乎等价的 token,如果 draft 选 A、target 选 B,SD 直接拒绝并丢弃后续整段——尽管两者后续生成的 sentence 大概率是同一个意思。

更致命的是:在 SD 里 一次拒绝 = 后面 L−i 个 draft token 全部作废。因此一个"语义无伤大雅"的 mismatch 把 acceptance length τ 从 8 拉回 1,带来的损失是非线性的

1.2 别的方案为什么不够

这两年涌现了 lossy SD 一支,允许"语义等价"的 token 通过。但每条路线都有自己的代价:

方案怎么定义"等价"代价
Vanilla SD (Leviathan)不允许等价,token-level rejection语义等价的 token 被白白拒掉,τ 偏低
Judge Decoding (Bachmann 2025)额外训一个 judge head 判语义需要人工标注 + 训练数据,domain 漂移就掉
Auto-Judge (Garipov 2025)self-supervised 训 judge head仍要训 + 数据集偏向(数学训出来在 IFEval 掉点)
Self-Judge (Yoon 2025)模型自己打信号需要 auxiliary 训练
MARS (logit-margin)看 target logit 的相对 margin边界处可能误判;也是 lossy 但理由是"分布 close enough"
Approximate Verify放宽 rejection 公式的 cutoff对 distortion 的控制松,benchmark 上掉点
DropMatch (本文)target 自己的 K 路 MC dropout 形成"邻域"需要选 pdrop;只是经验式,无严格 distortion bound

一个关键观察:上面所有"训 judge"的方案都在 OOD 时掉点。论文 Figure 1 直观地把这点画出来了——Auto-Judge 在数学训的 head 跑 IFEval 时,τ 高但 accuracy 崩;EAGLE-3 在英语训的 draft 跑 KoMT-Bench 时,task 性能保得住但 τ 从 ~5 跌到 1.46(Table 10)。训出来的 judge 本身就是新的 OOD 风险源

另见 MARS (2601.15498) 笔记 — 同样是 relaxed-acceptance 路线,MARS 的"语义"用 logit margin 度量,DropMatch 用 dropout 经验分布度量。两者哲学不同:MARS 信任 target 自己的 confidence 几何,DropMatch 信任 target 的 ensemble 鲁棒性。

1.3 为什么这事不平凡

"接受语义等价的 token"听起来天经地义,但拆开看一堆坑:

Vanilla SD: 接受区 = {target argmax} target argmax draft "积分" draft "integral" → REJECT 语义等价被丢掉 DropMatch: 接受区 = K 路 head 的并集 K=5 head argmax draft 落在簇内 → ACCEPT τ ↑,distortion 受 p_drop 约束
Vanilla SD 的接受集合本质上是单点(语义等价点也算外人);DropMatch 用 K 路 dropout head 把它扩大成一个"target 自己认为 plausible 的语义球",draft token 落在球里就接受。

2 · 背景速查

术语含义 (本文上下文)
draft model q, target p小模型出 L 个 token, 大模型一次 verify
acceptance length τ每轮 verify 平均接受的 token 数,直接决定 speedup
MC dropoutGal&Ghahramani 2016 — 推理时也开 dropout, K 次前向得到 K 个 sample, 等价于 Bayesian ensemble
inverted-dropout训练时 mask 后除以 (1−p) 保持期望, 推理直接复用
JS divergenceJS(p‖q) = ½KL(p‖m)+½KL(q‖m), m=(p+q)/2, 对称、有界(≤log 2)
K, p_drophead 路数 (默认 5) 与 dropout 概率 (默认 0.3)
centroid p̄K 路 logit 平均后再 softmax(注意:不是分布平均)
Naive Token-Matching本文最简接受规则:argmax 命中任一 head 即接受
速回 · Vanilla SD rejection 公式 (供对照)
accept x with prob min(1, p(x)/q(x));
reject 时, resample x' ~ norm((p − q)+)

关键:这条规则保证最终样本服从 p, 但任何 token id 不一致都会触发 rejection。DropMatch 替换的就是这条 accept 判据(不再用 prob ratio,而是看是否在簇内)。


3 · 方法 §3.1 — LM head 上的 K 路 MC dropout

核心抽象:让 target 用 同一个 hidden state ht 经过 K 个独立 dropout 掩码后通过 共享权重 W ∈ ℝ|V|×d 的 LM head,产出 K 个 logits。

m(i)j ∼ Bernoulli(1−pdrop), h(i)t = (ht ⊙ m(i)) / (1−pdrop)
l(i)t = W·h(i)t, p(i)t = softmax(l(i)t), i = 1..K

由 inverted-dropout, E[h(i)] = h, 所以 K 路 head 的"中心"和原始 head 在期望上一致。这是为什么不会偏离 target 太远——它是一个 controlled 的扰动而非 reparam。

Transformer
blocks Transformer blocks (KV cache) h_t ∈ ℝ^d drop W·h^(1) W·h^(2) W·h^(3) W·h^(4) W·h^(5) softmax → p^(1) softmax → p^(2) softmax → p^(3) softmax → p^(4) softmax → p^(5) acceptance vs draft q̂
结构图 — KV cache 完全保留(单条 transformer 路径), 只在 LM head 处 fork 出 K 条 dropout-masked 子路径。所有 head 共享 W, 所以无新增参数。

为什么只挂在 LM head?

反向论证:如果整网 dropout, 第二个 token 的 hidden 也跟着扰动, KV cache 就要保 K 份, 显存翻 K 倍, 而且 SD 的 verify 阶段需要"batched 1 token" forward, dropout 在此时其实没意义。LM head 是"概率收口", dropout 在这里直接产生分布扰动, 物理上对应"target 在 logit 空间附近的小邻域", 是定义"语义等价"的最便宜锚点。

经验合理性

论文 Table 1 在 HumanEval 上分别测 K=5 个 head 的 Pass@1:

p_dropbaselineH1H2H3H4H5
0.081.7— (单 head)
0.181.178.781.186.077.4
0.378.781.175.677.479.9
0.578.765.273.864.070.1

读法:p ≤ 0.3 时单个 dropout-head 仍然胜过 8B draft (Pass@1 72.6),说明这些 head 的输出仍是 high-quality target 分布,只是位置略有抖动。0.5 已经掉到不可用——这是 p_drop 的天花板。


4 · 方法 §3.2 — 双层接受判据

4.1 Naive Token-Matching

最简单的判据:让 K 路 head 各取 argmax 得到 token 集合 {y(1), ..., y(K)}, draft token ŷ 只要在这个集合里就接受。

ŷt ∈ { argmax p(i)t : i = 1..K }

开销最低(只 K 次 argmax), 但有缺陷:它只看 top-1, 当 target 分布扁平、K 路 head 互相分散时, 可能会"放行"概率极低的 draft token。

4.2 JS-Divergence-Based

更稳的版本:先把 K 路 logits 平均后 softmax 得 centroid p̄(注意是 logit-mean 不是 prob-mean), 然后比较 draft 分布到 centroid 的 JS 与 K 路自身到 centroid 的最大 JS:

t = softmax( (1/K) Σ l(i)t )
accept iff JS(q̂t ‖ p̄t) ≤ maxi JS(p(i)t ‖ p̄t)

直觉:把"K 个 head 自己离 centroid 多远"当作"语义簇半径", 若 draft 离 centroid 不超过这个半径, 就承认它是这个簇的一员。

4.3 边界 case — 当 K 路高度集中

当 head 之间几乎一样(target 极自信), maxi JS ≈ 0, JS-only 判据会变得过于严苛(任何细微差异都被拒)。论文给的解决方法很务实:再加一条 majority 短路。

accept if majority({y(i)}) = ŷt

Table 2 显示 K=5 时 98.4% 的位置 5 个 head 全部投同一票——这种位置 JS 几乎一定要求 draft 严格相等, 但 majority rule 直接放行。Table 3 的数字也对得上:concentrated case 下 JS(c, draft)=0.0097 远大于 JS(c, heads)=0.0014, 单 JS 会拒, majority 救回来。

Algorithm 1 (论文原伪码 + 中文注释)
Input: ŷ_t (draft token), q̂_t (draft prob), {p^(i)_t}_{i=1..K}
1. p̄_t = softmax( mean_i l^(i)_t )         # logit 平均, 再 softmax
2. y^(i)_t = argmax p^(i)_t                # K 路 top-1
3. if JS(q̂_t ‖ p̄_t) ≤ max_i JS(p^(i)_t ‖ p̄_t):
       accept                              # 在簇半径内
4. elif majority({y^(i)_t}) == ŷ_t:
       accept                              # K 路投票一致放行
5. else: reject

5 · Worked example — 一个具体 token 走通整条流水

设当前 prefix 是 "求 ∫ x dx 的", draft (Llama-3.1-8B) 提议下一个 token 是 "积分"(token id 12345)。target (Llama-3.1-70B) 跑到这个位置后输出 hidden ht ∈ ℝ8192。我们做 K=5 路 dropout, p_drop=0.3:

head iargmax tokentop prob
1"积分"0.71命中 draft
2"integral"0.34语义等价
3"积分"0.66命中
4"结果"0.28分布扁平时的 noise
5"积分"0.69命中

Case A — Naive 判据

ŷ = "积分" ∈ {head1, head3, head5}, 立即 accept。开销:K 次 argmax, 微秒级。

Case B — JS 判据

centroid p̄ = softmax(mean of 5 logits) → 大约 0.55 集中在 "积分", 0.18 在 "integral", 其它分散。

Case C — Vanilla SD 在同一位置怎么走?

Vanilla 算 p(积分)=0.55 / q(积分)=0.62 → accept prob = min(1, 0.55/0.62) = 0.887, 还有 11% 概率 reject; 即便 reject 后 resample 到 (p−q)+, 后续 draft tokens 全部废掉。DropMatch 在这种 q 略乐观但语义对的位置直接 100% accept。

Case D — 一个 DropMatch 也该拒的位置

设 draft 提议 "结果"(token id 67890), 5 路 head argmax 全部是 "积分"。Naive: ŷ ∉ {y(i)} → reject。JS: q̂ 把质量集中在 "结果" 上, 与 centroid 极远, JS(q̂ ‖ p̄) ≫ maxi JS, reject。majority: 5 路 majority = "积分" ≠ ŷ, reject。三层都拦下来。

vocabulary axis target centroid p̄ 5 dropout heads (簇) draft "积分" — 落在簇内 ACCEPT draft "结果" — 离簇远 REJECT
把 vocabulary 想成横轴, K 路 head 在 centroid 周围形成一个分布带; draft 分布在带内被接受, 带外被拒。带宽由 maxi JS(head(i)‖centroid) 自适应决定:目标 confident 时带窄, 不 confident 时带宽。

6 · 公式拆解 + 超参数敏感度

6.1 为什么 logit 平均而非 prob 平均?

centroid 选择有两种自然定义: (a) p̄ = (1/K) Σ p(i) 直接平均概率; (b) p̄ = softmax((1/K) Σ l(i)) 平均 logit 再 softmax。论文采用 (b)。直觉:dropout 扰动是在 hidden 上做的线性变换 W·h, logit 比 prob 是更线性的"自然空间"; 平均 logit 等价于平均 dropout 后的 W·h, 与原始 W·E[h] 在期望意义上对齐。

6.2 K 与 p_drop 的 trade-off (理解性数字)

p_drophead 多样性接受门槛开销quality risk
0.1带窄 (大多 case 退化为严格匹配)+1.6%
0.3 ★带宽合适+1.6%低中
0.5带太宽,几乎全接受+1.6%高 (Pass@1 掉)
K说明
1退化为单点扰动, 没意义
5 ★论文默认, 经验最优
10+JS 计算 O(K·|V|) 起步, 性能边际收益递减

6.3 一个反向论证 — 为什么不能去掉 majority 这一条?

把 majority 条款拆掉, Table 3 显示 concentrated case 占 98.4% 的位置, 其中 JS(c, draft)=0.0097 比 JS(c, heads)=0.0014 大 7×; 单 JS 会把这些位置全部当作 reject。意味着没有 majority 你会在最容易 accept 的地方 (target 极 confident 处) 反而拒得最多, τ 立刻塌掉。


7 · 实验关键结果

7.1 Overhead — 这才是说服力最强的数字

settingTotal fwd (ms)Head 占比
w/o dropout1070.05%
K=5 (Naive)1040.17%
K=5 (JS)1061.64%

实测 Llama-3.1-70B, batch=1, n_input=5。"Total fwd 反而更小"是噪声 — 重点是即使带上 K=5 + JS, 总开销 1.64% 几乎可以忽略, 这就为后续的 1.1× 加速打开了空间。

7.2 与 Standard SD (Table 6 节选)

Model · LMethodGSM8K τ / Acc / SpeedupMMLU τ / Speedup
Llama 8B/70B · L=5SD4.97 / 94.69 / 1.00x4.02 / 1.00x
Llama 8B/70B · L=5SD+DM5.50 / 94.29 / 1.10x4.43 / 1.09x
Llama 8B/70B · L=10SD7.62 / 95.40 / 1.02x5.25 / 0.86x
Llama 8B/70B · L=10SD+DM9.20 / 93.90 / 1.22x6.06 / 1.02x
Qwen3 4B/32B · L=10SD7.87 / 86.20 / 0.96x6.48 / 1.12x
Qwen3 4B/32B · L=10SD+DM9.78 / 86.58 / 1.13x8.60 / 1.49x

读法:

7.3 与 EAGLE-3 叠加 (Table 7 节选)

LEAGLE-3 aloneEAGLE-3 + DM额外加速
54.19x · τ=5.824.32x · τ=6.09+1.03x
74.65x · τ=6.714.86x · τ=7.07+1.05x
94.68x · τ=6.715.03x · τ=7.48+1.07x

关键洞察:EAGLE-3 自己在 L=7→9 处已经饱和(τ 不再涨, 4.65→4.68)。DropMatch 把这个饱和顶破——它击中的是 EAGLE-3 也无能为力的 OOD-like / 语义等价位置。叠加后 GSM8K accuracy 还涨 (78.75 → 80.00 at L=9), 这是 dropout 带来的 ensemble averaging 副作用。

7.4 OOD 健壮性 (Table 10 · KoMT)

方案Scoreτ
Standard (no SD)8.084.85 (是 baseline τ)
EAGLE-3 (英语训 draft)7.961.46
Standard + DM8.125.24

EAGLE-3 在韩文上 τ 跌穿地板(draft model 没见过这种分布), 但 DropMatch 因为不依赖任何训出来的 component, τ 反而比 standard SD 还高一点。这是论文最有说服力的论点之一:training-free 在分布漂移下天然更稳。

speed (relative) accuracy Standard (no SD) Vanilla SD (lossless) DropMatch (lossy 但温和) Auto-Judge (threshold 滑动) AJ + DM (右移 + 上移)
quality–speed Pareto 直觉图。DropMatch 在 Pareto 上把 vanilla SD 那个点稍稍右移; 与 Auto-Judge 叠加后, 整条 threshold 曲线被推向右上(同 accuracy 拿更多 speedup, 同 speedup 拿更高 accuracy)。

8 · 与同类工作对比

需要训练?需要数据?语义判据OOD 表现叠加性
Vanilla SDtoken-level (无)稳但慢底层
EAGLE-3draft 重训无 (lossless)τ 显著掉
Judge Decodingjudge head + 人工标学习的 judge
Auto-Judgejudge head 自训学习的 judge不稳 (math→IFEval 掉)
MARSlogit margin
Approximate Verify (SLRS / SV)放宽 cutoff取决参数底层
DropMatchtarget 自身 dropout 簇稳 (不依赖任何训组件)高 (与 EAGLE-3 / Auto-Judge 叠加测试过)

核心差异化:


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

follow-up 待验证

  1. p_drop 是否能 per-position 自适应? 比如根据 head entropy 决定开多大 dropout。
  2. K 路是否可以异构(不同 p_drop, 或 head 上做 weight noise 而非 input noise)?
  3. 替换 dropout 为 SWAG 或 deep ensemble (head-only) 会不会更稳但仍 cheap?
  4. 能否给出最坏情况下输出分布与 target 的 TV bound? 至少能否在 small-vocab toy 模型上验证?
  5. 大 batch 下 JS 计算的 attention-bound 行为如何? 在 vLLM 的 paged attention 上是否会破坏 batched verify 的 fused kernel?
  6. 与 RL post-training rollout 的组合 — RL 训练里 sampling temperature 高, head ensemble 是否会和已有的 stochastic sampling 冗余, 还是互补?

10 · Memory points

立场 lossy SD 不一定要训 judge — target 自身 dropout 形成的语义簇即可作为接受判据, training-free / data-free / calibration-free。
机制 MC dropout 只挂在 LM head(而非整网), KV cache 完全保留; K=5 路独立 mask 共享 W。
判据 双层: JS 半径(分散时) + majority 投票(集中时), 互补 ~98% 位置由 majority cover。
数字 head 占 forward 0.05%, K=5+JS 总 overhead 1.64%; speedup 1.09–1.33× over standard SD; 与 EAGLE-3 叠加再 +1.07×。
超参 p_drop ★ 0.3, K ★ 5; p_drop≥0.5 quality 崩。
陷阱 code / 严格语法任务收益小(head 98% 一致, 无语义空间); accuracy 平均掉 0.4–1pp
OOD 因不依赖训组件, KoMT-Bench 等 OOD 上 τ 比 EAGLE-3 翻 3 倍以上(5.24 vs 1.46)。
叠加 与 Vanilla SD / Auto-Judge / EAGLE-3 都正交, 工程改造仅 LM head 处加 K 次 dropout 前向。
vs MARS 同为 lossy + training-free, 但 MARS 用 target 单 forward logit margin, DropMatch 用 K-forward head ensemble — 后者对 epistemic uncertainty 刻画更直接。