投机解码选草稿模型不必试错:HedgeSpec 免费估遍全部草稿,Qwen-3-32B 上快过 EAGLE3 近一倍

Not-a-Bandit: Provably No-Regret Drafter Selection in Speculative Decoding for LLMs

Hongyi Liu, Jiaji Huang, Zhen Jia, Youngsuk Park, Yu-Xiang Wang

ICLR'26

cs.LG

2025-10-23

HedgeSpec 利用投机解码的验证步骤免费估出每个草稿模型的接受长度,把选草稿从试错变成全信息在线学习,Qwen-3-32B 吞吐比 EAGLE3 高近一倍。

这篇在解决什么

投机解码(speculative decoding)是加速大模型推理的常规手段:让一个小型「草稿模型」先猜接下来几个 token,大模型(目标模型)用一个并行的前向把它们一次性验证完。猜中的 token 等于省掉一次大模型前向,猜得越准加速越多。

麻烦在于,没有哪个草稿模型能在所有场景都贴合目标模型。针对 Python 微调的草稿在 SQL 上拉胯,针对医学问答的草稿做不好摘要。选错草稿,目标模型会把它的猜测几乎全否掉,投机这一步就白做了。已有的解法 BanditSpec 把「选哪个草稿」当成多臂老虎机(bandit)问题:你只能观测到被选中那个草稿的表现,所以必须花钱去探索(去试那些还没把握的草稿),而草稿池越大,这笔探索成本涨得越狠。

方法

这篇的重新切题是:投机解码的验证步,本身就是一个全信息预言机。目标模型在验证一段 token 时,会暴露自己对下一个 token 的真实概率分布。拿这个分布做反事实推算,就能估出任何一个草稿在这一段上的表现,而不只是你实际跑的那个。Theorem 3 把这件事写死:一条被验证的轨迹,就能给出每个草稿接受长度的无偏估计,对目标模型一个额外 query 都不用发。

于是这个问题从 bandit(部分反馈)变成了全信息在线学习。HedgeSpec 跑一个 NormalHedge 指数加权在线学习器,用上面的反事实损失更新每个草稿的权重。它的后悔值是 O(√(T·log N)),对草稿数 N 是对数级,而 bandit 方法对 N 是多项式级。把草稿池翻倍,HedgeSpec 几乎不掉性能,EXP3/UCB 这类方法会明显下滑。

几个设计选择,作者都给了理由:

开销是有的,但很轻:评估一个草稿大约是一次目标前向的 1/25(实测 2.5 ms 对 75.7 ms),还能并行。多接受一个 token 的收益,就够抵掉串行评估约 25 个草稿的成本。

结果

三个目标模型、每个配 7 个领域专用草稿(Python、数学、生物、化学、MedQA、CNN/DM 摘要、SQL),对照 EAGLE3、BanditSpec(EXP3/UCB)和静态 BERT 路由器:

目标模型方法平均接受 token平均吞吐(token/s)
LLaMA-3.1-8B-ITEAGLE35.6974.34
LLaMA-3.1-8B-ITHedgeSpec7.1590.41
Qwen-3-8BEAGLE34.2347.53
Qwen-3-8BHedgeSpec6.3769.44
Qwen-3-32BEAGLE32.8820.76
Qwen-3-32BHedgeSpec6.2140.41

折成吞吐提升:LLaMA-3.1-8B 约 21.6%,Qwen-3-8B 约 46.1%(SQL 单域 83.7%),Qwen-3-32B 约 94.7%。草稿池越大,HedgeSpec 越稳,bandit 方法越垮。

分布漂移是另一面。离线 BERT 路由器一碰到措辞变化的提示就大面积误路由(MedQA 上 98%、数学上 90%),HedgeSpec 靠运行时反馈自适应,相对静态路由器最高快 2.34 倍。

为什么重要

工程上,生产环境的提问本来就是混的:代码、数学、摘要、对话混着来,一个通用草稿盖不住。HedgeSpec 让你养一批领域专用草稿、上线时实时路由,而且免费。

更要紧的判断是:投机解码的验证步一直藏着一个全信息预言机,bandit 式探索在这里从头就是错的框。诚实地说,这个赢面有个前提,你手里得真有一批专用草稿可挑;只有一个通用草稿时,没有路由可言。

局限与存疑

术语

原文与代码

社区讨论

相关论文

全部论文解读