一、为什么自回归解码是推理瓶颈
大语言模型 (LLM) 的推理过程本质上是一个自回归循环:每一步生成一个 Token,然后将其拼接到输入序列末尾,送入模型获取下一个 Token 的概率分布。这种串行依赖关系使得推理过程难以并行化——你无法在不知道第 $t$ 个 Token 是什么的情况下预测第 $t 1$ 个 Token。
更关键的是底层的硬件瓶颈。现代 GPU(如 A100、H100)的计算利用率(Model FLO Utilization, MFU)在自回归解码阶段通常只有 10%-30%。原因在于:每一步推理仅需加载一次模型权重即可完成单个 Token 的计算,导致计算与显存带宽的比例(Arithmetic Intensity)极低,GPU 的大量计算单元处于空闲等待状态。这就是所谓的 Memory Bound 问题——推理速度受限于 HBM 带宽而非计算能力。
以一个 70 亿参数的模型(FP16,约 14GB 权重)为例,在 A100 80GB(带宽 2TB/s)上生成一个 Token 仅需加载一次权重。假设序列长度为 2048,那么每一步推理的有效计算量约为 $2 \times 7 \times 10^9 \times 2048 \approx 2.87 \times 10^{13}$ FLOPs,而数据传输量为 $14 \times 10^9$ bytes。算术强度约为 2048 FLOPs/byte,远高于 GPU 的计算/带宽比(H100 约为 5960 TFLOPS / 3.35 TB/s ≈ 1.78 FLOPs/byte),这意味着 GPU 的计算单元大部分时间都在等待数据。
自回归解码的另一个痛点在于 KV Cache 的内存压力。随着上下文增长,KV Cache 的内存占用线性增长,70B 模型在 8K 上下文下 KV Cache 可达数十 GB。如何在保证吞吐的同时控制 KV Cache 大小,是每个推理系统必须面对的难题。
二、投机解码:用小模型的速度生成大模型的结果
投机解码 (Speculative Decoding) 由 Leviathan 等人在 2022 年论文 Fast Inference from Transformers via Speculative Decoding 中提出,核心思想极其简洁:让一个小型、快速的"草稿模型"(draft model)先推测接下来 $k$ 个Token,然后用大型"目标模型"(target model)一次性并行验证这 $k$ 个 Token。
听起来像赌博?恰恰相反,它有严格的数学保证:投机解码的输出分布与原始目标模型完全一致。
2.1 算法流程
一个完整的 Speculative Decoding 迭代包含以下步骤:
步骤 A:Draft 阶段——使用小模型 $q$ 对当前上下文进行 $k$ 步自回归采样,生成 $\gamma = (\tilde{x}_{t 1}, \tilde{x}_{t 2}, ..., \tilde{x}_{t k})$。这一步只需执行 $k$ 次小模型的前向推理,速度远快于大模型。
步骤 B:Verify 阶段——将 $\gamma$ 拼接到原始序列后,用目标模型 $p$ 执行一次并行前向推理,一次性获得所有位置的概率分布。由于 Transformer 的自注意力机制天然支持并行处理整个序列(通过 causal mask),这一步的计算量仅比生成单个 Token 略高。
步骤 C:Accept/Reject 阶段——从最后一个 Token 位置开始倒序检查每个 $\tilde{x}_{t i}$:

发表评论 取消回复