投机解码深度解析:小模型如何给大模型"代打"
之前我们讲过投机解码的概念:小模型起草稿、大模型来验证。但概念到生产之间隔着几个关键问题——接受率怎么算、草稿从哪来、为什么大 batch 场景收益会缩水。这篇往下挖一层。
草稿-验证框架:一次前向,验 K 个 token
标准流程是:草稿模型根据当前上下文连续猜 K 个 token,目标模型把"原文加 K 个草稿 token"拼成一次前向——注意自回归模型天然支持一次并行计算多个位置的输出,所以验证 K 个 token 的耗时约等于生成一个 token。逐位比对:草稿猜对的保留,遇到第一个分歧位丢弃其后全部草稿,并采用目标模型在该位的输出。
对随机采样场景,接受与否用拒绝采样规则决定,可以严格证明最终输出分布与目标模型直接解码完全一致——这是投机解码最漂亮的性质:加速不以任何质量损失为代价。
收益取决于接受率 α:若每个草稿位被接受的概率都是 α,则每步目标模型前向平均产出约 1 加 α 加 α 的平方一直加到 α 的 K 次方个 token,随 K 增长趋于 1 除以 1 减 α。α 等于 0.7、K 等于 4 时约两倍加速;α 跌到 0.3,收益就趋近于零,草稿计算反而白费。
草稿从哪来:三条路线
| 方案 | 草稿来源 | 公开接受率 | 典型加速 | 额外开销 |
|---|---|---|---|---|
| 独立草稿模型 | 同词表的小模型 | 六至八成 | 约 1.5 至 2.5 倍 | 需维护小模型 |
| Medusa | 目标模型上加多个预测头 | 六至七成 | 约 1.8 至 2.5 倍 | 需训练预测头 |
| EAGLE-3 | 复用目标模型深层特征 | 七至八成 | 约两至四倍,部分报告更高 | 训练轻量草稿头 |
| MTP | 训练期原生多 token 预测 | 八成以上 | 据公开技术报告约 1.8 倍解码加速 | 需重训模型 |
独立草稿模型最直观,但要求草稿与目标共享分词器且风格对齐,体积以小为宜——太大则草稿自身耗时吃掉收益。Medusa 不引入独立模型,在目标模型上挂若干预测头并行猜测未来多个位置,部署简单。EAGLE 系列更进一步:直接把目标模型的中间层特征喂给一个轻量草稿头,配合树形注意力(每步验证多条候选分支)把接受率推高,2025 年发布的 EAGLE-3 据公开评测已成为通用模型上的标杆方案。
MTP 则把投机解码内化进训练目标:DeepSeek-V3 在预训练时就加入多 token 预测模块,推理时该模块天然充当草稿头。据其公开技术报告,MTP 带来约 1.8 倍的解码加速,接受率达八成以上——原生对齐是接受率最高的路线,代价是必须从训练侧介入。
什么场景反而变慢
三类场景要谨慎:一是高温采样等高随机性输出,草稿与目标分歧大,接受率暴跌;二是超大 batch 服务,此时解码已接近算力受限,验证的并行红利被摊薄,甚至挤占正常请求的算力;三是草稿模型选得太大,草稿成本占比过高。经验法则是草稿比目标小一到两个数量级,且务必用自家流量实测接受率——公开基准的七成接受率在你的领域数据上可能只有三成多,收益随之天差地别。
小结
投机解码是"用访存冗余换时延"的典型架构:单流解码卡在权重搬运上,验证多 token 几乎不额外耗时,这正是它能免费加速的物理原因。落地时先明确业务是延迟敏感还是吞吐敏感——前者优先开,后者要先压测 batch 干扰,再选对草稿路线,最后盯住接受率这个唯一的核心指标。