推测解码是一种针对大型语言模型的推理时优化技术,通过使用一个更小、更快的草稿模型提前提出多个候选词元,再由主模型在单次并行传递中验证或拒绝这些候选,从而加速自回归文本生成。由于验证可以同时检查多个词元,该技术能够在保持与标准解码相同的输出分布的同时,减少对大型模型的顺序传递次数,从而在不改变模型生成内容的前提下降低延迟。
该方法在2022年和2023年由Google和DeepMind的研究成果中提出,并于2024年被各大主流推理系统广泛采用,成为降低生产环境中大型模型服务成本和延迟的标准技术。
工作原理
在标准自回归推理中,模型每次生成一个词元,每个词元都需要一次完整的前向传递才能生成下一个,这是一个固有的顺序过程。推测解码通过让一个运行成本更低的小型草稿模型生成一小段候选词元序列,打破了这一瓶颈。随后,大型目标模型在单次批处理前向传递中评估所有这些候选,检查其对每个提议词元分配的概率是否与自身相近。通过检查的词元被接受;第一个未通过的词元由目标模型自身的预测进行纠正,而该点之后剩余的草稿词元则被丢弃。由于对多个词元的一次完整前向传递与对单个词元的传递成本相差无几(在现代GPU上,计算往往受内存带宽而非算术运算主导),因此接受多词元步骤能带来显著的净加速。
设计变体
核心思想已有多种变体被提出。一些系统使用蒸馏或相关的小模型作为草稿模型;另一些则使用目标模型自身层的子集,或基于近期上下文的n-gram进行轻量级查找,从而避免训练和维护单独的草稿模型。Medusa及类似方法直接在原模型上附加额外的预测头,无需单独模型即可提出多个未来词元。草稿策略的选择会影响接受率(即草稿词元与目标模型可能生成内容匹配的频率)以及运行草稿步骤的额外成本。
影响
推测解码之所以引人注目,是因为它近乎一种免费的优化:在正确实现的情况下,它不会改变模型的输出分布,也不需要重新训练,只是改变了输出计算的速度。这使其区别于有损的效率技术,如量化或知识蒸馏,后者可能影响输出质量。到2020年代中期,推测解码已被主要模型提供商广泛部署,作为标准服务基础设施的一部分,尤其适用于对延迟敏感的应用,如聊天界面和编码助手(如GitHub Copilot和Claude Code),并经常与其他服务优化相结合,以降低大规模运行前沿模型的成本。