一句话定义
投机解码(Speculative Decoding) 是一种不改目标模型权重、只改生成流程的加速方法:先让一个便宜的草稿模型连续猜出 k 个 token,再让目标模型对这 k 个位置一次前向并行校验。从第一个被拒绝的位置起,由目标模型给出正确的 token,然后进入下一轮。
被接受的那段前缀是多出来的,不需要目标模型逐个生成。串行的解码步数因此减少,而目标模型的输出分布在有严格校验规则时保持不变。
它解决什么问题
自回归解码的瓶颈通常不在算力,而在搬运:每生成一个 token,都要把整个权重从内存读一遍。模型越大,单步读取的数据越多,算术单元的空转越明显。解码阶段的算术强度本来就低,批量又常常只有 1,于是「算力闲着、内存忙着」。
投机解码拿闲置的算力去换更少的串行步数:草稿猜 4 个、目标模型一次验 4 个,只要平均接受长度大于 1,同一段时间就能吐出更多 token。
关键做法
决定成败的是两个量,它们互相拉扯:
- 分布对齐:草稿猜的东西得和目标模型想的一致。接受率越高,省下的步数越多。草稿太小、训练数据偏、上下文风格不同,都会让对齐变差。
- 草稿延迟:草稿本身必须足够便宜。如果草稿每猜一个词要花掉目标模型三分之一的钱,省下的步数还不够付草稿的账。
草稿的来源有几种:独立预训练的小模型、目标模型的低秩近似、多头的并行结构、检索式草稿,以及从目标模型上剪出来的草稿。
arXiv 上的 T2D(2610.34103)走的是最后一条,并且把草稿设计明确写成一个优化问题:用延迟感知的结构化剪枝加上知识蒸馏,直接从目标模型构造草稿,目标函数里同时放「实测推理延迟」和「对目标模型回答的交叉熵」。作者报告最多剪掉目标模型 92% 的结构仍能得到可用的草稿,并且这套草稿可以直接喂给其他投机解码的 token 对齐与蒸馏方法,属于可插拔的一层。论文的主张是:草稿的「架构—对齐」前沿需要联合导航,单看某一头都会选错。
常见误区
- 接受率高就等于快。 端到端时间 = 轮数 × 每轮(草稿耗时 + 校验耗时)。草稿慢、校验批次小,接受率再漂亮也落不到时延上。
- 把服务器上的倍率搬到设备上。 投机解码的收益依赖负载形态。批量小、单请求时,草稿与校验的开销摊不薄,实测可能是降速的——arXiv:2610.31479 在 Apple 芯片上评测的四类优化里,投机解码这一类全部降速,而同类方法在服务器 GPU 上报的是 2–6 倍。
- 以为换了草稿不用重测。 草稿和目标模型是一对。目标模型升级、剪枝比例调整、提示词模板换掉,接受率都会变。
- 采样参数随便改。 温度、top-p、重复惩罚变化会同时改变接受率。某些校验规则在贪心解码下是精确等价的,在随机采样下要靠拒绝采样维持分布,代价不同。
用不上的时候
- 并发已经打满、算力没有余量。此时草稿只会抢资源。
- 输出很短。省下的轮数抵不过草稿的启动与调度开销。
- 设备内存吃紧、放不下第二个模型。草稿至少要和目标模型共享一部分存储预算。
- 业务要求逐字复现历史输出。校验规则与采样设置一改,文本就会分叉。
参考
arXiv:2610.34103,T2D: Target-to-Draft Model Pruning & Adaptation for Efficient Speculative Decoding(Shahriar Kabir Nahin 等,2026-10-25)。把草稿模型设计表述为优化问题,用延迟感知的结构化剪枝 + 知识蒸馏从目标模型直接构造草稿,联合优化实测延迟与对目标模型回答的交叉熵;最多剪除目标模型 92% 的结构,产物可作为其他投机解码方法的即插即用组件。相关对照:arXiv:2610.31479 报告投机解码在 Apple Silicon 单请求负载下普遍降速。
延伸阅读
- 顾客等的那两秒,模型在猜什么 —— 这篇讲的是这件事对门店意味着什么。
相关词条
火眼识别提供端侧视觉引擎与设备管理平台,相关方案见 火眼识别官网。