过去两年多,投机解码(Speculative Decoding, SD)几乎成了业界加速 LLM 推理的标准手法。它的原理并不复杂:让一个参数量更小、跑得更快的“草稿模型”(draft model)先猜测目标大模型接下来要生成的若干 token,再由大模型在一次前向传播中并行验证这批猜测。
猜对的直接采纳,猜错的丢弃后重新来过。这个由 Google Research 的 Yaniv Leviathan 等人在 2022 年底提出的方法,已经被 vLLM、SGLang、TensorRT-LLM 等主流推理引擎悉数收编,Google 自己也在今年 2 月的官方博客中专门回顾了这一技术的发展脉络。
然而投机解码有一个结构性瓶颈始终没有被真正突破:草稿模型的“猜”和大模型的“验”依然是串行的。每一轮验证结束之后,草稿模型才能拿到结果,才能开始下一轮猜测。验证器等草稿、草稿等验证器,整个流程里总有一方在闲着。
2026 年 3 月 3 日,来自斯坦福大学的 Tanishq Kumar、普林斯顿大学 Tri Dao(FlashAttention 核心作者之一),以及 Together AI 的 Avner May,在 arXiv 上贴出了一篇名字很有趣的论文《投机的投机解码》(Speculative Speculative Decoding)。他们的核心问题只有一个:能不能把草稿和验证之间最后这层串行依赖也给干掉?
答案是可以,而且他们给出了一个完整的工程化方案,叫做 Saguaro(仙人掌柱,亚利桑那州那种巨型仙人掌的名字)。
在 Llama-3.1-70B 上用四张 H100 做推理,batch size 为 1、贪心解码的条件下,Saguaro 相比标准自回归解码最高加速约 5 倍,相比已经优化过的投机解码还能再快接近 2 倍。且这些数据横跨了 HumanEval(代码)、GSM8k(数学)、Alpaca(指令跟随)和 UltraFeedback(对话)四个数据集的平均值,而不是只选取某一表现最突出的个别场景。
在传统的投机解码中,草稿模型必须等验证结果回来,才知道大模型接受了多少个 token、在哪个位置拒绝并采样了所谓的“奖励 token”(bonus token)。这个奖励 token 是从残差分布(residual distribution)中抽取的,它的值直接决定下一轮猜测的起点。
SSD 的做法是:不等了。在大模型验证当前这一轮猜测的同时,草稿模型就开始预测验证结果可能是什么样的,有多少 token 会被接受?奖励 token 最可能是哪几个?
然后针对每一种可能的结果,预先准备好对应的下一轮猜测,存进一个叫“投机缓存”(speculation cache)的数据结构中。等验证结果真正传回来时,如果正好命中了缓存中的某个结果,草稿模型立刻返回预备好的 token 序列,完全跳过草稿阶段的延迟。
如果没命中,则退回到一个后备策略,相当于降级成普通的投机解码。关键在于:命中缓存这件事不是偶尔发生的。论文报告的缓存命中率在贪心解码下超过 90%,在温度为 0.7 的随机采样场景下也能维持在 70% 以上。
这套思路让人联想到 CPU 领域的投机执行(speculative execution)。处理器遇到条件分支时,不等判断结果出来,先把两条路径都预执行一遍,猜对了就赚到了,猜错了就回滚。作者在论文中也明确承认了这个类比。
区别在于,CPU 投机执行面对的分支通常只有两三条路径,而 LLM 验证结果的空间是天文数字级别的(K+1)×V,K 是猜测长度,V 是词表大小,对 Llama 系列而言 V 超过 12 万。所以不可能为所有结果都准备好缓存,必须在有限预算下选择最有可能命中的那些。
Saguaro 针对这个问题提出了三层优化。第一层是缓存构建策略。论文证明了一个数学结论:在给定缓存总预算 B 的约束下,最优的“扇出”分配(即为验证序列中每个位置准备多少个候选奖励 token)应该服从一个上封顶的几何级数。
越靠后的位置(即更多 token 被接受的情况),被接受的概率本身就越低,分配的猜测预算也应该越少。这很符合直觉,但给出严格的最优解仍然需要一整套拉格朗日乘子法的推导。
实验表明,相比均匀分配扇出,几何扇出策略在高温采样时优势尤其明显,因为高温下验证结果的不确定性更大,“把钱花在刀刃上”就更重要。
第二层是一个全新的采样方案,作者称之为 Saguaro 采样。在标准投机解码中,当草稿 token 被拒绝时,奖励 token 从残差分布中采样,而残差分布的形式是 max(p_target - p_draft, 0) 的归一化。这意味着残差分布重度依赖草稿分布的形状。
Saguaro 采样的策略是故意在草稿采样阶段压低那些最可能成为缓存候选的 token 的概率(乘以一个小于 1 的系数 C),这样做会让残差分布中的概率质量向这些候选 token 集中,从而提高奖励 token 恰好落在缓存里的概率。代价是草稿分布偏离了目标分布,接受率会下降。
但论文通过理论构造证明,存在一些目标/草稿分布的组合,使得这种刻意偏移带来的缓存命中率提升足以补偿接受率的下降,在端到端速度上反而更快。超参数 C 提供了在两者之间连续调节的旋钮。
第三层关于缓存未命中时的后备策略。这一点随 batch size 增大变得越来越关键,因为 batch 中只要有一个序列没命中缓存,整个 batch 就得等后备草稿完成。论文给出的策略是:在小 batch size 下,后备模型就用主草稿模型做即时投机(just-in-time speculation);当 batch size 超过某个临界值 b* 时,切换到一个极低延迟的后备方案,比如返回随机 token 甚至基于 n-gram 的非神经网络投机器。
论文推导了 b* 的解析表达式,并用实验验证了这个切换点的位置与理论预测一致。
值得注意的是整个方法的一个前提:SSD 要求草稿模型运行在独立于目标模型的硬件上。论文的实验设置中,目标模型用四张 H100 做张量并行(tensor parallelism),草稿模型单独占一张 H100。
两者之间通过 NCCL 通信,每轮交换的数据量很小,目标模型只需传回接受了几个 token 和奖励 token 是什么,草稿模型传回预备好的 token 序列和 logits。这意味着 SSD 总共用了 5 张 GPU 而非投机解码的 4 张。
但论文中关于吞吐 - 延迟帕累托前沿(Pareto frontier)的分析显示,即便把多出来的这张 GPU 算进去,SSD 在每张 GPU 的吞吐效率上依然优于基线方案,也就是说并不只是靠堆硬件换速度。
整个推理优化领域正处在一个方法爆发期,SSD 的出现并不孤立。发表于 2025 年 3 月的 EAGLE 系列通过让草稿模型以目标模型的内部表示为条件来提升接受率;NVIDIA 在 2025 年 10 月的技术博客中专门介绍了 EAGLE-3 在其 GPU 上的部署实践;SGLang 社区在 2025 年底也开源了 SpecForge 框架来训练 EAGLE-3 草稿头。
Together AI 自己则在 2025 年 12 月发布了 ATLAS(AdapTive-LeArning Speculator System),一套能在生产环境中动态适应工作负载变化的自适应投机系统。Tri Dao 当时在采访中提到,静态投机器在工作负载发生漂移时效果会大幅下降,用户从聊天切换到写代码,接受率就可能掉一截。ATLAS 的方向是让投机器在运行时自主学习。
而 SSD/Saguaro 瞄准的则是另一个完全正交的维度:不是让其猜得更准,而是让猜测和验证同时发生。论文也明确指出 SSD 可以和 EAGLE-3、token-tree 方法等组合使用,附录 E 讨论了 SSD-EAGLE-3 的组合方案,虽然存在草稿模型缺少目标模型激活信息的退化问题,但可以通过训练草稿模型适应自我条件来缓解。
不过论文坦承,投机解码整体上是一种“以计算换延迟”的策略,对于吞吐受限的场景,如大规模强化学习训练中的数据生成、离线批量推理等并不适用,因为验证步骤本身就在消耗宝贵的 GPU 计算资源。SSD 在这个基础上还进一步加大了计算开销:草稿模型每轮需要为 B×K×(K+1)×F 个 token 做解码(B 是 batch size,K 是猜测长度,F 是扇出),比标准投机解码的 B×K 多出了 (K+1)×F 倍。这些额外的 FLOP 投入在低延迟场景下可以被隐藏,在高吞吐场景下则可能成为负担。
另外,自定义注意力掩码的构建和稀疏内存访问模式也制约了草稿端可以做多少步有效推测,论文中大部分端到端加速来自于隐藏草稿延迟,而非增加猜测长度。
参考资料:
https://arxiv.org/abs/2603.03251
运营/排版:何晨龙
热门跟贴