@_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 等主要框架中。
@mohitwt_: 推理工程第20/30天:构建一个推测解码运行时,用较小的模型提前草拟多个token…
一位开发者正在构建Octane,这是一个面向消费级硬件上的本地LLM推理的推测解码运行时,目标是实现2-3倍的加速,同时保持完全相同的输出质量。目前处于积极开发阶段,已实现分页KV缓存、连续批处理和批量注意力。
什么是推测性解码?(在paperswithco.de上热门)[R]
推测性解码是一种推理优化技术,它使用快速草稿模型提出未来 token,并由较大模型并行验证,从而提高 LLM 的生成速度。文章强调了它在 Papers with Code 上的热门状态,以及最近的 SGLang 博客文章,该文章介绍了使用 DFlash 模型实现的最先进延迟。
@_avichawla: LLM推理中的预填充与解码。你是否注意到,LLM的第一个令牌总是需要片刻才出现…
解释LLM推理的两个阶段——预填充和解码,详细说明GPU瓶颈如何从预填充时的计算受限转变为解码时的内存受限,以及KV缓存的重要性。
@DeRonin_: DeepSeek 刚发布了一篇5页论文和免费GitHub仓库,能让任何LLM响应速度提升80%,这项技术叫推测性解码...
DeepSeek 发布了一篇论文以及采用MIT许可证的开源实现(DSpark),通过使用小型“猜测”模型和大型“检查”模型,将LLM响应速度提升高达80%,同时兼顾速度与准确率,无需权衡取舍。