白得 2 到 3 倍加速的投机采样机制解析:草稿模型和目标模型是怎么配合的

简介: LLM自回归解码因内存带宽瓶颈而缓慢:每生成1个token均需重载全部权重(如70B模型达140GB)。投机采样通过小模型快速“猜”多token,大模型一次并行验证,接受率高时可获2–3倍无损加速。

LLM 解码很慢,因为生成一个 token 需要每次都从 GPU 内存中加载全部模型权重。700 亿参数的模型意味着 140GB 权重,每一个 token 都要重新加载一遍。

LLM 解码本质上是顺序的,称之为自回归生成(autoregressive generation)。每个 token 都依赖前面所有的 token,采样一个、喂回模型、再采样下一个,如此循环。

没有 token 4 就生成不了 token 5,只能一个一个来,所以每次都要加载那 140GB 权重。

那么如果设想有一个小而便宜的模型,能飞快猜出接下来几个 token;大模型再一次性验证这些猜测。猜对了,就用一个 token 的代价拿到了 1 到 k 个 token;猜错了,就回退继续。

这就是投机采样(speculative decoding)。它完全无损而且在数学上站得住脚。

验证具体如何进行

举个例子。输入是 "I want",草稿模型(draft model)预测接下来四个 token 是 "ice cream and cake"。

目标模型(target model)对整个序列做一次前向传播,为每个草稿 token 计算自己会给出的概率,再和草稿模型的预测比较。草稿模型的置信度低于目标模型时,token 直接通过;草稿模型过于自信时,则按两个分布之间的比率决定接受概率——相当于目标模型在说"没错,我也这么想",或者"不可能,我才不会这么说"。

token 被拒绝时,系统不会就此停下,而是从一个经过调整的分布中重新采样一个修正后的 token。这个修正分布在数学上保证和目标模型独立运行时产生的分布完全一致,这样就变成了没有草稿模型、没有捷径,大模型正常的在工作。

这就是"无损"的含义:最终输出分布和单独跑一遍目标模型完全相同,不是拿质量换速度。草稿模型在幕后猜测,实际拿到手的却是目标模型的分布,不是在破坏输出而是在修正它。

为什么能提速

验证在数学上没毛病,但性能上真有用吗?

解码是内存受限的(memory bound),瓶颈在于从 GPU 内存加载权重而不是计算本身。对 k 个 token 做一次前向传播,内存带宽开销和对 1 个 token 做前向传播差不多,因为反正权重都要加载一遍。于是验证 k 个草稿 token 的开销,大致等于从头生成 1 个 token 的开销。这 k 个 token 里只要有一半被接受,就等于用一个 token 时间换来了好几个,可以说纯粹是并行的提速。

实际能提速多少?一般是 2 到 3 倍,但这不是固定值,这取决于草稿模型猜对的频率。温度(temperature)越低输出越可预测,接受率也就越高;代码比创意写作更规整,所以代码场景下的加速通常更明显。草稿模型对目标模型的行为摸得越透,白捡的 token 就越多。

树形投机采样

基础版投机采样只提出一条长度为 k 的序列,是单一直线式的猜测。但如果草稿模型拿不准下一个 token 是 "ice" 还是 "chocolate" 呢?基础版只能二选一,赌一把。

SpecInfer 的做法是两个都猜。草稿模型不再只给出一条序列,而是构建一棵可能延续路径组成的树。不再只猜 "ice cream and cake",而是同时猜:

 'ice' → 'cream' → 'and cake'

 'chocolate' → 'cake' → 'is great'

目标模型在一次前向传播中验证整棵树,沿着每个 token 都会被接受的最长路径走下去。这样每一步能接受的 token 更多,因为同时覆盖了几条可能的延续路径,而不是把宝全押在一个猜测上。

但是构建和验证一棵树实现起来更复杂。不过草稿模型确实在几个选项间犹豫不决时,树形方法比基础序列方法优势明显。

目前的应用现状

投机采样早已不是停留在纸面上的研究技巧。vLLM 内置支持,TensorRT-LLM 也已经集成,这也是过去两年推理 API 在模型本身没有变小的情况下大幅提速的原因之一。

这个领域已经走出了"草稿模型 + 目标模型"的基础设定。部分实现干脆跳过独立的草稿模型,转而在目标模型上直接挂几个额外的预测头,利用模型自身的内部表示并行预测未来的 token。这些预测头被称为 Medusa 头(这名字起得确实不错)。不用管理额外的模型,草稿模型和目标模型之间也不存在分布不匹配的问题,同一个模型在每次前向传播里只是多干了点活

而EAGLE 走得更远,在特征层面而非 token 层面做预测,接受率因此更高。投机采样的核心思想,基本上已经撑起了推理优化领域的一个分支

总结

投机采样的精妙之处在于:不改模型、不动训练、不碰权重,纯粹是利用了"验证比生成便宜"这个事实——因为解码是内存受限的——再靠一套数学上严密的拒绝采样(rejection sampling)技巧,保证输出和单独跑大模型时一模一样。

白得 2 到 3 倍推理加速,唯一的代价是需要一个够格的草稿模型,以及把它接进系统的工程量。

如果说 KV Cache 那篇讲的是怎么更好地利用 GPU 内存,这篇讲的就是怎么更好地利用每一次前向传播。两者合起来,覆盖了 LLM 推理里最重要的两个维度:空间和时间。

https://avoid.overfit.cn/post/163e4c3986794a51ba9c983c4f2f561e

by Vedanti

目录
相关文章
|
5月前
|
算法 PyTorch 算法框架/工具
从零开始用自定义 Triton 内核编写 FlashAttention-2
本文实现了FlashAttention-2前向传播:通过分块Q/K/V、流式处理K/V避免物化大矩阵,采用在线softmax保障数值稳定,支持因果/非因果模式,并用Triton autotuner调优、PyTorch验证。核心是IO感知设计,将内存复杂度从O(N²)降至O(N),显著提升长序列吞吐量。
696 5
从零开始用自定义 Triton 内核编写 FlashAttention-2
|
1月前
|
存储 人工智能 机器人
AI Agent的三重记忆机制:打造高可用的多维记忆系统
本文深度解析AI Agent三大核心记忆架构:RAG(聚焦“来源说了什么”,保障答案可溯源)、Agent Memory(解决“该记住什么”,实现跨会话连续性)与知识图谱(厘清“事物如何关联”,支撑多跳推理)。三者定位迥异,需依问题本质精准选型,避免技术错配。
158 4
AI Agent的三重记忆机制:打造高可用的多维记忆系统
|
3月前
|
人工智能 缓存 固态存储
投机解码原理详解:小模型打草稿,大模型一次验证
生产环境中,推理成本远超训练——自回归解码受制于内存带宽墙,70B模型在H100上每token需700亿次计算。投机解码(2026年已成标配)用小模型“猜词+大模型并行验证”,严格保质提速2–2.5倍;SSD更进一步,复用大模型浅层自生成草稿、构建回滚树,接受率提升、显存零新增。vLLM已原生支持,开箱即用。
575 2
投机解码原理详解:小模型打草稿,大模型一次验证
|
5月前
|
人工智能 NoSQL Redis
LangGraph 入门:用图结构构建你的第一个多智能体工作流
LangGraph 是面向多智能体系统的图编排框架,以有向状态图替代线性链式调用。通过节点(智能体)、边(条件/静态跳转)和类型化共享状态三者解耦,天然支持分支、循环、并行与汇合;内置检查点、原子状态更新与Reducer机制,保障一致性、可调试性与容错恢复能力。
3579 1
|
22天前
|
存储 弹性计算 人工智能
阿里云服务器ECS——高性能弹性计算服务 - 99.995%可用性保障 - 阿里云
阿里云ECS是高性能、弹性可伸缩的云服务器,支持X86/ARM/GPU等多种架构,搭载自研CIPU芯片,单实例可用性达99.975%,广泛适用于网站托管、数据库、AI训练、游戏服务等全场景。阿里云服务器ECS官网:https://t.aliyun.com/U/AZBUsA
|
22天前
|
人工智能 自然语言处理 小程序
用阿里云万小智搭建微信小程序,一句话搞定,新手0基础AI建站费用15元,免费送CN域名
阿里云万小智AI建站支持自然语言生成微信小程序:输入需求描述→自动生成PRD→可视化编辑→一键发布,最快几分钟上线。新手0代码,月费仅15元,还赠CN域名。无需开发经验,轻松打造专属小程序!阿里云万小智官网:https://t.aliyun.com/U/FmBHHe
|
22天前
|
SQL 人工智能 数据库
数据库管理工具选型指南:从Navicat到AI原生工具的演进
技术选型的本质,是在成本、效率、风险之间找到最适合当前阶段的平衡点。
188 1
|
22天前
|
JSON 人工智能 前端开发
程序员在线工具箱 JSON格式化、HTTP接口调试、Mock数据、时间戳、SEO分析一站式使用
httpjson 是一个面向前端、后端、测试、运维和站长的在线开发者工具箱,提供 JSON 格式化、HTTP 在线请求、编码解码、进制转换、文本对比、行政区划查询、Mock 数据生成、AI Skills、Logo 图标尺寸转换、AI 配色、时间戳转换、网页内容读取与 SEO 分析等常用工具。无需安装,打开浏览器即可使用。
241 1
|
数据采集 供应链 数据挖掘
通透!数据清洗的9大关键方法,做数据分析前一定要懂
数据分析常败于数据本身而非方法。本文系统讲解9大核心清洗动作:缺失值需判别业务含义而非盲目删除;重复值须按业务规则去重;异常值可能是重要信号;格式、类型、口径、编码等必须统一;字段需合理拆分合并;清洗后务必校验。数据清洗的本质是让数据“可计算、可对比、可信任、可复用”,是分析可信的地基。(239字)
通透!数据清洗的9大关键方法,做数据分析前一定要懂
|
22天前
|
Java Nacos 微服务
ACK + Spring Cloud Alibaba 实战:云原生微服务从0到1的全链路搭建
单体应用 QPS 天花板 200,大促直接雪崩——拆分为 8 个微服务部署到 ACK 后,单服务 QPS 提升 10 倍,整体系统可用性从 99.5% 提升到 99.99%。本文以一个真实的中型电商平台为案例,完整演示从单体到云原生微服务的全链路搭建:ACK 集群规划、Spring Cloud Alibaba 全家桶集成(Nacos + Sentinel + Seata + Gateway + OpenFeign)、K8s 部署实战(Helm + HPA + 金丝雀发布)、可观测性建设(ARMS + SLS + Prometheus),以及 5 个生产级踩坑实录和最佳实践。
ACK + Spring Cloud Alibaba 实战:云原生微服务从0到1的全链路搭建

热门文章

最新文章