@_avichawla: Anthropic. Google. Meta. 每个人都在用来自1990年代的一个想法将LLM推理速度提升2-3倍。在1990年代,CPU设计者…
摘要
推测解码受1990年代CPU分支预测启发,现被Anthropic、Google和Meta用于将LLM推理速度提升2-3倍。它使用一个小模型来猜测未来的token,并用一个大模型并行验证它们,从而避免了解码期间GPU空闲时间。
查看缓存全文
缓存时间: 2026/05/26 21:14
Anthropic。 Google。 Meta。
所有人都在用上世纪90年代的一个思路,把大语言模型推理速度提升2-3倍。
上世纪90年代,CPU设计师遇到了流水线停顿问题。
最初,CPU按取指、译码、执行、写回等阶段依次处理指令,完成一条再开始下一条。这导致大多数阶段处于空闲。
流水线技术通过让多条指令像流水线一样同时流经各个阶段解决了这个问题,但带来了新麻烦。
当CPU遇到条件分支(if/else)时,它还不知道该走哪条路径,但流水线已经开始取后续指令。如果那些指令来自错误路径,所有工作将被清空,流水线停顿。在典型程序中,大约每三条指令就会发生一次。
分支预测解决了这个问题。
处理器记录过去分支的历史,预测最可能的路径,并提前执行。如果预测正确(概率约95%),流水线永不阻塞;如果错误,只需清空并重试。
如今,大语言模型推理在不同硬件上遇到了同样的问题。
GPU也能并行处理多个token。在预填充阶段,它一次性读入整个提示词,计算单元完全饱和。但在解码阶段,模型逐token生成,每个token依赖前一个,GPU无法提前工作。
它为每个token从内存加载数十亿参数,几乎瞬间完成计算,然后空闲直到下一步。本可同时处理多个token的硬件,现在只能一次处理一个。
推测解码像分支预测破解CPU停顿那样打破了这种困境。
→ 小模型猜测后续K个token。 → 大模型在一次前向传播中验证所有K个token。
验证步骤类似于预填充阶段:多个token同时处理,计算单元完全饱和。
→ 最佳情况下,一次大模型调用得到K+1个token。 → 最坏情况下,得到1个token,与标准解码完全一样。
而且两种情况下,输出分布在数学上总是完全一致。
Google搜索在AI概览中正是用这种方法服务超过20亿用户。vLLM、TensorRT-LLM和SGLang也已内置支持。
我写了一篇文章,详细介绍了推测解码的完整机制,涵盖KV缓存、内部原理(含代码)和权衡。
请阅读下文。
找我 → @_avichawla 每天分享关于数据科学、机器学习、大语言模型和RAG的教程与见解。
相似文章
@_avichawla: 研究人员发现了一种让大语言模型(LLM)提速 8.5 倍的方法!(且不影响准确度)投机解码相当有效……
研究人员提出了 DFlash 技术,这是一种利用块扩散模型(block diffusion models)进行投机解码的方法,可在不损失准确度的情况下,将大语言模型推理速度提升高达 8.5 倍。该技术已集成到 vLLM 和 SGLang 等主要框架中。
什么是推测性解码?(在paperswithco.de上热门)[R]
推测性解码是一种推理优化技术,它使用快速草稿模型提出未来 token,并由较大模型并行验证,从而提高 LLM 的生成速度。文章强调了它在 Papers with Code 上的热门状态,以及最近的 SGLang 博客文章,该文章介绍了使用 DFlash 模型实现的最先进延迟。
通过序列蒙特卡洛加速LLM推理
本文提出了序列蒙特卡洛推测解码(SMC-SD),一种通过用草稿粒子群的重要性加权重采样替代推测解码中的令牌级拒绝来加速LLM推理的方法,在保持3%精度损失的前提下相比标准推测解码实现2.36倍加速,相比自回归解码实现5.2倍加速。
@RedHat_AI: 145 tokens每秒。加入推测解码。424 tokens每秒。同一模型。同一H100。输出质量零变化…
Red Hat 演示了使用推测解码可以将 LLM 推理速度从 145 tokens/秒提升至 424 tokens/秒,且使用相同 H100 硬件,质量无损失,凸显了面向生产服务的一项重要优化。
@lmsysorg: 新博客: 推测解码的下一代: DFlash 和 Spec V2。DFlash + Spec V2 实现 >4.3倍基准吞吐量…
关于 DFlash 和 Spec V2 推测解码方法的新研究实现了 LLM 推理的 >4.3倍基准吞吐量,现已成为 SGLang 的默认推测解码引擎。