摘要
自回归生成的瓶颈在于"一次只吐一个 token",而每次都要把完整权重读一遍。推测解码的思路是:先用小模型快速起草若干 token,再让大模型一次性验证,验证通过就一次前进多步。理论上收益很大,实践中收益高度依赖接受率——接受率低时,它不仅不加速,反而更慢。本文拆解草稿模型的选择、影响接受率的因素、收益为负的场景,以及上线验证方法。2026 奇点智能技术大会(11 月 20-21 日 · 北京万达文华酒店)将讨论推理优化与 AI 基础设施。
一、为什么它能加速
生成阶段的瓶颈不是算力,而是权重读取的带宽。每生成一个 token 都要完整读一遍权重,而计算量很小——这导致访存主导、算力闲置。
推测解码改变了这个比例:一次验证若干个候选 token,读取权重的次数不变,但完成了多步生成。
原生生成:1 次权重读取 → 1 个 token 推测解码:1 次权重读取 → 平均 1 + 接受长度 个 token接受长度是决定收益的唯一变量。它等于平均每轮被接受的候选 token 数。
二、草稿模型的三种选择
| 方案 | 做法 | 优点 | 代价 |
|---|---|---|---|
| 同系列小模型 | 用同架构的小号版本起草 | 分布接近,接受率高 | 需要额外显存 |
| 自起草 | 用模型自身的部分层起草 | 无需额外模型 | 需要改造模型结构 |
| 检索式起草 | 从历史输出或 n-gram 检索候选 | 零额外显存 | 依赖内容重复性 |
第一种最常用也最可靠:同系列的小模型与目标模型共享词表与训练分布,接受率通常最高。
第三种在特定场景意外有效:比如代码补全、模板化输出这类高度重复的内容,检索候选的接受率可能超过小模型。
defspec_decode(target,draft,prefix,gamma=4):"""推测解码:草稿起草 gamma 个候选,目标模型一次验证。"""candidates=draft.generate(prefix,gamma)logits=target.forward(prefix+candidates)# 一次前向验证多个位置accepted=0fori,tokinenumerate(candidates):ifaccept(logits[i],tok):accepted+=1else:returnprefix+candidates[:accepted],acceptedreturnprefix+candidates,accepted三、影响接受率的四个因素
因素一:草稿与目标的能力差距。差距越大,草稿越不准,接受率越低。这是选择草稿模型时的首要权衡。
因素二:任务的可预测性。代码、格式化输出、固定话术的可预测性高,接受率通常明显高于开放创作。开放对话场景下收益会小得多。
因素三:候选长度 gamma。gamma 设得越大,单轮潜在收益越高,但最后一个候选被拒的概率也越高,且被拒时要丢弃整批后续候选。存在一个最优区间。
因素四:采样温度。温度越低输出越确定,接受率越高。高温度创作场景下,推测解码收益会显著下降。
接受率高的场景:低温度、格式固定、草稿与目标接近 接受率低的场景:高温度、开放创作、草稿能力差距大四、什么时候收益为负
三种情况下推测解码会变慢:
情况一:接受率过低。每轮只接受一两个 token,却多做了草稿生成与验证的额外计算。净效果是负的。
情况二:草稿模型本身耗时占比过高。如果草稿模型不够小或不够快,起草时间会吃掉验证节省的时间。
情况三:批量很大时。大批量场景下算力已经接近瓶颈,访存不再是主要矛盾,推测解码的收益空间被压缩。
defspeedup_estimate(accept_len,draft_cost_ratio,gamma):"""粗估加速比:接受长度带来的收益,扣除草稿成本。"""target_steps=gamma/max(1e-6,accept_len)return1.0/(target_steps+draft_cost_ratio)用这个公式可以快速判断:如果draft_cost_ratio接近接受长度带来的节省,就没有收益。上线前应当先测这两个参数,而不是直接开启。
五、上线前的验证
必须做的三项测试:
其一,分场景测接受长度。按任务类型分别统计,因为平均值会掩盖"某类任务收益为负"的事实。
其二,测端到端延迟而非单步速度。推测解码改变了生成的节奏,端到端 P95 才是用户感知到的指标。
其三,验证输出一致性。理论上推测解码不应改变输出分布,但实现中的数值差异可能导致结果不同。需要用固定输入对比开关两种模式的输出。
| 验证项 | 通过标准 |
|---|---|
| 接受长度 | 分场景下均需 > 2 |
| P95 延迟 | 有实际下降 |
| 输出一致性 | 固定输入下结果可复现 |
六、与其他优化的关系
推测解码不是孤立的,它与其他优化存在相互作用:
与量化的关系:量化降低权重读取成本,会缩小推测解码的收益空间。两者叠加时收益不是简单相加。
与批处理的关系:大批量下收益下降(前面提到)。需要根据实际并发量调整策略。
与长上下文的关系:prefill 阶段不受推测解码影响,因此长输入场景的整体收益会被稀释。
优化优先级(生成耗时主导时): 推测解码 > KV Cache 复用 > 量化 > 算子优化 优化优先级(prefill 主导时): 前缀缓存 > 分块策略 > 推测解码(收益有限)判断依据是先做延迟剖分:看 prefill 与 decode 各自占多少,再决定投入方向。
七、与量化的相互作用
推测解码与量化常被同时启用,但它们的收益并不简单叠加。
量化降低权重读取成本,而推测解码的收益恰恰来自减少权重读取次数。当量化已经把读取成本压得很低时,推测解码的边际收益会变小。
反过来,推测解码会增加草稿模型的额外显存占用,在显存紧张的环境下可能与量化产生资源冲突。
叠加效应:收益不是相加,而是部分重叠 验证方式:分别测量单独启用与同时启用的收益,而不是默认叠加实践建议:先单独测各自收益,再测组合收益。很多时候会发现组合的收益小于两者之和,此时需要判断资源投入是否值得。
八、读者问答
问:草稿模型需要微调吗?
通常不需要直接用同系列小模型即可。但如果目标模型经过领域微调,草稿模型最好也做同样的微调。
问:推测解码会影响输出质量吗?
理论上不会(验证机制保证分布一致),但实现细节可能导致差异。上线前必须做固定输入的一致性对比。
问:批处理场景下还值得用吗?
收益下降。大批量时算力已接近瓶颈,建议按并发量动态调整是否启用。
问:接受率多少值得开启?
经验上平均接受长度大于 2 才划算,低于这个值通常是负收益。
九、几个延伸问题
问:gamma 设多少合适?
通常 3 到 5。过大时最后一个候选被拒概率高,浪费计算。
问:草稿模型需要多少显存?
取决于选型,通常是目标模型的十分之一量级。这部分开销必须计入容量规划。
十、推测解码的监控指标
上线后需要持续监控三项指标,因为收益会随负载变化。
指标一:平均接受长度。按任务类型分别统计。这个数字下降说明草稿模型与实际分布偏离了。
指标二:端到端 P95 延迟。与关闭状态对比,确认收益真实存在。
指标三:草稿模型的额外开销。包括显存与计算,确认它没有挤占主模型的资源。
告警条件:接受长度低于 2,或 P95 延迟高于关闭状态 → 应自动关闭最后一条是实用的保护机制:收益为负时自动回退,比人工发现再处理快得多。
十一、最后几个问题
问:模型更新后需要重新标定吗?
需要。草稿与目标的匹配关系会变化。
问:接受率低时如何改进?
换更接近的草稿模型、降低温度、或针对场景微调草稿模型。
问:哪些场景最值得启用?
低温度、格式固定、批量小的场景收益最明显。
十二、衔接大会专题
问:草稿模型需要单独部署吗?
建议与目标模型同机部署。跨机调用会引入网络往返,而这个开销往往超过草稿模型本身的计算时间,让推测解码的收益被通信吃掉。
问:验证阶段是否必须串行?
是。验证需要按顺序确认每个草稿 token,无法并行。这也是推测解码在极大批量下收益下降的原因:批量越大,目标模型本身的利用率越高,串行验证的相对开销越明显。
问:接受率与输出长度有关吗?
有关。长输出中后半段的接受率通常低于开头,因为上下文偏离训练分布的程度逐渐增加。对超长生成任务,需要按实际长度评估收益,而不能只测短样本。
问:草稿模型怎么选?
与目标模型同源或同系列通常接受率更高,因为 token 分布更接近。参数量上一般选择目标模型的十分之一到二十分之一,过小则接受率低,过大则草稿本身开销抵消收益。
问:接受率低于多少就不划算了?
没有固定阈值,取决于草稿与目标的速度比。粗略地说,草稿模型每生成一个 token 的成本应显著低于目标模型验证一个 token 的成本,接受率只要能让总时间低于自回归解码就有收益。建议实测不同接受率下的端到端耗时,而不是依赖经验值。
问:推测解码会影响输出质量吗?
理论上不会,因为验证阶段保证了分布一致性;工程实现中可能因批处理与数值精度产生微小差异。对质量敏感的场景,应在上线前做输出一致性抽检。
问:批处理场景适不适用?
收益通常小于单请求场景。批处理本身已经提高了计算利用率,推测解码带来的额外收益有限,反而增加了实现复杂度。高并发、长输出的单请求场景才是最适配的场景。
问:接受率如何监控?
作为线上指标持续采集,按请求类型分组统计。接受率下降往往意味着流量分布变化或草稿模型与目标模型版本不匹配,是很有价值的预警信号。
11 月 20-21 日,北京万达文华酒店,2026 奇点智能技术大会将讨论推理优化、KV Cache 与 AI 基础设施;C++ 及系统软件技术大会则从内存访问、并行策略与性能剖析角度给出底层视角。
带着"我们的生成阶段接受长度是多少、按场景分开测过吗"这两个答案去参会,会立刻知道这项优化值不值得开。
大会信息
2026 奇点智能技术大会 + C++ 及系统软件技术大会
时间:2026 年 11 月 20-21 日
地点:中国·北京万达文华酒店
大会报名:点击报名,领取大会PPT资料
立即报名,锁定 Lukasz Kaiser Keynote 与 70+ 场演讲完整资料!