投机解码为何能加速大模型推理?

投机解码用小模型提议、大模型并行验证,将串行生成转为并行,实现无损加速。
投机解码通过引入草稿模型快速生成多个候选 token,再由目标大模型一次性并行验证,将传统逐 token 的串行生成转化为并行验证,从而减少目标模型的前向调用次数。其加速比取决于草稿模型速度与候选接受率,接受率越高加速越明显。由于采用接受-拒绝采样机制,最终输出分布与目标模型单独解码完全一致,属于无损加速。它并非用小模型替代大模型,而是小模型提议、大模型把关。实践需权衡草稿模型大小与接受率,并在低批量、内存带宽受限场景下收益最大。
投机解码(Speculative Decoding)近年来成为大模型推理加速的热门技术,Hacker News 上的一篇讨论帖《Why Is Speculative Decoding Fast?》再次引发关注。尽管帖子本身互动不多,但这个问题触及了该技术的核心:它凭什么在不牺牲输出质量的前提下,让推理速度提升数倍?

投机解码的基本原理
投机解码的核心思想是「先猜后验」。它引入一个较小的草稿模型(draft model)快速生成多个候选 token,再让目标大模型(target model)一次性并行验证这些 token 是否可接受。由于大模型的前向计算可以并行处理多个位置,验证成本远低于逐个生成。
具体流程分为三步:草稿模型自回归生成 K 个 token;目标模型对这 K+1 个位置做一次并行前向;根据接受概率决定保留哪些 token,并在第一个被拒绝的位置重新采样。整个过程保证输出分布与目标模型完全一致,因此是「无损加速」。
自回归解码的串行瓶颈:传统大模型推理采用自回归方式,每生成一个 token 都需要将此前所有 token 作为输入做一次完整的前向传播。这一过程受限于内存带宽——每步都要从显存中读取全部模型权重,而实际计算量相对很小,导致 GPU 算力大量闲置。序列越长,串行步数越多,延迟累积越明显。投机解码正是针对这一瓶颈:既然单步计算利用率低,就用一次前向并行处理多个候选位置,把原本浪费的算力利用起来,从而在总计算量增加有限的情况下显著减少串行步数。
接受-拒绝采样的数学保证:投机解码的无损性依赖一种修正的拒绝采样机制。对草稿模型提出的每个 token,目标模型计算其概率并据此决定接受或拒绝;一旦拒绝,就从目标模型与草稿模型分布的差值(归一化后)中重新采样。这一设计使得最终被接受 token 的联合分布严格等于目标模型的自回归分布,因此输出在统计上与目标模型单独解码不可区分。这也是「无损加速」说法的理论依据,而非经验近似。
加速的根源:并行验证与接受率
投机解码之所以快,关键在于将「串行生成」转化为「并行验证」。传统自回归解码每生成一个 token 都需要一次完整的前向传播,而投机解码在理想情况下可以用一次目标模型前向验证多个 token,从而减少目标模型的调用次数。
加速比主要取决于两个因素:草稿模型的生成速度,以及候选 token 的接受率。接受率越高,平均每次验证能确认的 token 越多,加速越明显。如果草稿模型与目标模型分布接近,接受率就高;反之,草稿模型太弱会导致频繁拒绝,加速效果打折。
为什么不是简单的「小模型替代大模型」
一个常见误解是:既然小模型快,为什么不直接用小模型?投机解码的精妙之处在于,它用小模型做「提议」,但最终输出由大模型「把关」。被接受的 token 严格服从目标模型的分布,被拒绝时则回退到目标模型重新采样。因此输出质量与大模型单独解码完全一致,小模型只负责提供高效的候选。
这也解释了为什么投机解码在数学上无损:接受-拒绝采样机制确保了最终分布的正确性。Hacker News 讨论中提到的「为什么快」的答案,本质上就是「并行验证摊薄了目标模型的计算成本」。
蒸馏模型与同系列小模型:实践中草稿模型的选择直接影响接受率。同系列小模型(如大模型的 1/10 参数量版本)因训练数据与架构相近,输出分布与目标模型较为接近,是常见选择。蒸馏模型则通过让草稿模型拟合目标模型的输出分布来进一步提升对齐度,从而抬高接受率。
Medusa 与 EAGLE 的思路差异:Medusa 在目标模型顶部添加多个预测头,并行预测后续多个位置的 token,无需独立草稿模型,省去额外前向开销;EAGLE 则利用目标模型的特征层进行自回归式草稿生成,在特征空间而非 token 空间做预测,通常能获得更高的接受率。这类改进的共同目标是:在不显著增加计算的前提下,让候选 token 更贴近目标模型分布。
实践中的关键权衡
实际部署投机解码时,需要权衡草稿模型的大小与接受率。草稿模型太小,接受率低,验证白费;草稿模型太大,生成成本高,抵消并行收益。常见的做法包括使用同系列的小模型、蒸馏模型,或采用 Medusa、EAGLE 等改进方案,通过额外预测头或特征复用提升接受率。
另一个维度是批量大小。投机解码在低批量、内存带宽受限的场景下收益最大,因为此时目标模型的计算利用率本就不高,并行验证能填补空闲算力。在高批量场景下,目标模型已接近算力饱和,加速空间收窄。
对开发者的启示
投机解码不是万能加速器,它的收益高度依赖任务类型和模型配对。对于输出确定性强的任务(如代码补全、结构化生成),接受率通常较高;对于开放式创作,接受率可能下降。开发者在选型时应关注接受率指标,并结合批量大小和延迟要求做实测。
总体而言,投机解码的「快」来自并行验证对串行瓶颈的突破,而「稳」来自接受-拒绝机制对输出分布的保证。理解这两点,就能明白它为何成为大模型推理优化的重要方向。
相关推荐

“黑色十月”:AI挖出史上3%严重漏洞?
Reddit 热帖称过去一个月发现了史上 3% 的严重软件漏洞,被称为「黑色十月」。本文拆解这一说法的统计口径问题,分析 AI 辅助代码审计如何加速漏洞发现,以及开发者和企业该如何应对补丁窗口缩短的挑战。

微软Project Gecko:用AI为非洲农民架起语言桥梁
微软Project Gecko项目推出PharmaChat应用,让非洲农民用母语提问,通过AI返回精准视频片段和农耕书籍章节。项目还发布三个交互式手册,推动包容性AI发展。

Node.js语音笔记App:语音转文字API选型指南
为Node.js语音笔记应用选择语音转文字API?对比AssemblyAI、Deepgram、Google Cloud和Whisper的免费额度、定价与Node集成体验,给出分阶段选型建议。