鹤啸九天 自律更自由,平凡不平庸 Less is More

大模型投机采样

2023-09-18
阅读量

Notes(温馨提示):

  1. ★ 首次阅读建议浏览:导航指南, 或划到本页末尾, 或直接点击跳转, 查看全站导航图
  2. 右上角工具条搜索文章,右下角二维码关注微信公众号(鹤啸九天),底栏分享、赞赏、评论
  3. ★ 转载请注明文章来源,知识点积累起来不容易,水滴石穿,绳锯木断,谢谢理解
  4. ★ 如有疑问,邮件讨论,欢迎贡献优质资料


投机采样

总结

方法

  • 投机采样(Speculative decoding)针对 LLM 推理串行解码特点,通过引入近似模型来执行串行解码,原始模型执行并行评估采样,通过近似模型和原始模型的互相配合,在保证精度一致性的同时降低了大模型串行解码的次数,进而降低了推理时延。
  • 美杜莎头(Medusa head)则是对投机采样的进一步改进,摒弃了近似模型,原始模型结构上新增了若干解码头,每个解码头可并行预测多个后续 tokens,然后使用基于树状注意力机制并行处理,最后使用典型接收方案筛选出合理的后续 tokens。该方法同样降低了大模型串行解码的次数,最终实现约两倍的时延加速。

对比

  • 投机采样和多头美杜莎相对于原始自回归推理带来的提速效果。
  • 投机采样在参数规模大的模型中性能提升更高,不过这取决于小模型的选择;
  • 多头美杜莎则在不同参数规模的模型中拥有更一致的性能提升

image

【2026-4-*】Speculative decoding 机制解释:投机采样→美杜莎→MTP

【2022】投机采样

2022年, Google DeepMind 推出大模型推理加速方法: Speculative Decoding,投机采样或推测解码

利用蒸馏学习中小模型近似大模型,不损失生成效果前提下,获得 3x 以上加速比

vllm 框架支持投机采样(Speculative Decoding), 见 spec_decode

原理

核心思想:许多常见的单词和句子都是很容易预测。

image

因此,大模型只需要在关键部分中指导小模型,就能够带来性能提升。

  • 小模型在收到用户提问后会做出单个字的预测,当预测到一定长度后,大模型会判断是否接受小模型预测的多字,这里大模型会一次性处理多字

image

与传统自回归推理方法不同,投机采样采用草稿模型(draft model),通常是规模更小的模型,进行自回归推理。而原始的大模型则会根据小模型推理的结果进行判断,决定是否接受小模型推理出的多字

推测解码是一种推理优化技术,生成当前 Token 时,对未来 Token 进行有根据猜测,这一切都在一次前向传播中完成。

融入了验证机制,以确保这些 Token 正确性,从而保证推测解码的整体输出与普通解码的输出相同。

优化大语言模型(LLMs)的推理成本,是降低成本并提高其应用率的关键因素。

实现方案

为了实现这一目标,有各种推理优化技术可用,包括自定义内核、输入请求的动态批处理以及大型模型的量化。

推测解码有主要方法

  • (1)用同型号小模型:例如,将 Llama 1B/7B 用作 Llama 70B 的推测器
    • 用同家族小模型给大模型打草稿
  • (2)多头预测:如美杜莎
    • 添加推测头:原始模型不动,只训练新增的头
    • IBM 的 PyTorch 团队实验中,添加推测头的方法在模型质量和延迟改善方面都更为有效。
    • 优点:参数效率高
    • 缺点:位置越远越不准
  • (3)模型内部加草稿头
    • 示例:EAGLE-3,当前最优方案, 2025年被NIPS接受,已集成到vLLM和SGLang等所有主流框架
    • LLM内部附加草稿头,通过融合transformer底层、中层和高层特征来预测未来token
    • 效果:论文实测最高加速6.5倍,比 EAGLE-2提升1.4倍
  • (4)MTP:多token预测,示例 DeepSeek V3和R1
    • 训练时,让模型多个轻量模块预测第二个、第三个token,与主模型共享输出头;训练时提供密集信号,推理时,复用为草稿头(不需要额外草稿模型),走标准推测解码流程
    • 效果:MTP草稿接受率超过80%,配合推测解码可达 1.8 倍加速,SGLang 一条命令就可开启

效果

效率说明:

  • 投机者架构:目前方法允许修改头的数量,对应可选择的 token 数量。增加头的数量也会增加所需的额外计算量和训练的复杂性。在实践中,对于语言模型,我们发现 3 - 4 个头在实际应用中效果良好,而代码模型则可以从 6 - 8 个头中获益。
  • 计算量:增加头的数量会在两个维度上导致计算量增加,一是单次前向传播的延迟增加,二是处理多个 Token 所需的计算量增加。如果推测器在增加头的数量后准确率不高,就会导致计算资源浪费,增加延迟并降低吞吐量。
  • 内存:每次前向传递都需要与高带宽内存(HBM)进行往返通信,增加的计算量由此得到抵消。请注意,如果我们提前正确预测 3 个 Token,那么就节省了三次与 HBM 的往返时间。

思考

  • 投机采样核心原理总结:猜对直接用、猜偏按比例拒绝
  • 同时用两个模型,不会变慢吗?小红书解答: 瓶颈不在计算而在显存带宽。小模型(draft model)利用了大模型的闲置CPU时间,并不占用额外计算
  • 草稿模型提前预估,能保证最终正确性吗?2023年,DeepMind 严格论证过,猜对直接用+猜偏按比例拒绝+差值采样=大模型原始采样
  • 推测解码什么时候快、慢?当前推理时瓶颈是 内存带宽 还是 计算?变量:并发、上下文长度、接受率
    • 低并发时,显存带宽瓶颈,gpu闲置,推测解码效果最好;
    • 高并发时,GPU打满,瓶颈是计算,额外的草稿和验证计算无法倍免费消化
    • 上下文长度:长度大时,kv cache消耗大,瓶颈回到显存带宽
    • 接受率:接受率>60%, 投机token>5时,可实现 2-3 倍加速;接受率太低时,草稿和验证计算浪费,反而更慢

不足

GPT4 技术细节泄露后,对于投机采样【Speculative Decoding】策略加速推理的研究比较多,但是问题

  • 投机采样依赖一个小而强的模型, 生成对于原始模型来说比较简单的token
  • 其次在一个系统中维护2个不同模型,导致架构上的复杂性,占额外空间
  • 最后使用投机采样的时候,会带来额外的解码开销,尤其是当使用一个比较高的采样温度值时。

更多见站内专题:投机采样

改进

最早提出的投机解码(Speculative Decoding)算法使用 Target Model + Draft Model 范式,其加速效果很大程度上受到 Draft Model 对齐程度以及自身解码时延的影响。要得到高对齐同时低时延的 Draft Model 可能需要微调或蒸馏,成本高且不具有通用性。

【2024-9-11】最全LLM自投机算法汇总

因此,许多自投机(Self-Speculative Decoding)算法被提出作为原始投机解码的替代。

  • 让 Target Model 根据特定算法直接生成 draft tokens,不借助额外的 Draft Model。
  • 并且,简单修改 Target Model 结构,比如增加 LM Head 或者增加几层网络构成一个小型的 Draft Model,只要训练成本可接受,也可认为是自投机算法的一类。

【2023-4-10】微软 Inference with Reference

RAG、语法纠错、文档 QA 等任务场景中,LLM 生成结果往往与输入内容(reference)之间有较多重合

基于一定匹配规则,将 reference 中匹配当前已生成序列的部分直接作为 draft,而不用 Draft Model 生成,来提高 LLM 推理速度。

【2023-4-10】微软推出 LLMA

最简单匹配规则就是前缀匹配

  • 以当前已生成序列的最后 n 个 tokens 作为前缀,在 reference 中匹配满足此前缀的连续 k 个 draft tokens。

因此,该算法的两个重要超参是前缀匹配的长度 n 和 draft 长度 k。

步骤

  • LLM 正常执行自回归解码;
  • 当已生成序列与 reference 中的某部分具有长度为 n 的前缀匹配时,选取后续 k 个 tokens 作为 draft 拼接到 output 中;
  • 下一解码步中并行地验证这些 draft tokens,抛弃第一个不匹配的 token 及其后续 tokens;
  • 存在不匹配时重新生成 token,进入到下一轮解码步。

效果

  • 通过网格搜索最优的 n 和 k,该算法在特定场景下可以达到 2~3 倍的加速效果。

分析

  • 使用场景限制了其通用性;RAG、语法纠错、文档 QA
  • 但因设计和实现简单、不需要额外训练而工程友好。

【2024-1-14】Google Medusa 美杜莎

投机采样虽好,但某些场景下,小模型选择棘手,如何同时部署大模型和小模型?

Medusa 是自投机领域较早的一篇工作。

【2023-9-18】LLM推理加速-Medusa

抛弃独立的 Draft Model,同时保留 Draft-then-Verify 范式,Medusa 在主干模型的最终隐藏层之后,添加若干 Medusa Heads,这些 Heads 具有预测对应位置 token 的能力,并且可以并行地执行,从而实现在一次前向中得到多个 draft tokens。

Medusa: Simple Framework for Accelerating LLM Generation with Multiple Decoding Heads

解读

多头美杜莎利用了多个预测头(language model heads)来进行多字预测,这些额外的预测头被称为美杜莎头

正常的LLM 基础上,增加几个解码头,并且每个头预测的偏移量是不同的,比如原始的头预测第i个token,而新增的medusa heads分别为预测第i+1,i+2…个token。如上图,并且每个头可以指定topk个结果,这样可以将所有的topk组装成一个一个的候选结果,最后选择最优的结果

美杜莎(Medusa)推理框架使推测解码流行起来;

  • 现有模型上添加一个头,然后对其进行训练以进行推测。

通过使“头”呈分层结构来修改美杜莎架构,其中每个头阶段预测单一 Token,然后将其输入到下一个头阶段。

图解

image

多头美杜莎的top-1推理(假设每个字都为单个token)。

  • 大模型在收到用户提问后会做出多个字的预测,这里大模型会一次性处理多字。具体为主预测头会预测下1个字,第一个和第二个美杜莎头分别会预测第2个和第3个字。更多的美杜莎头也以此类推。
  • 美杜莎头为独立模块,可加在现有预训练/微调好的基础模型中(例如Vicuna-13B)

如果直接使用top-1(贪婪)策略来进行推理会很容易掉进局部最优概率组合。

因此,为了提高推理效果,多头美杜莎使用了top-k 方式来进行推理

image

为了更高效地验证这些 draft tokens,Medusa 构造了 Tree Attention 结构。

实现方法

  • 基于主干 Transformer 的最终隐藏层输出,原有的 LM Head 可以生成 next token,而 Medusa Heads 可以生成对应位置的后续 tokens(例如,有 3 个 Medusa Heads,一次前向一共可以生成后续的 4 个 tokens);
  • Medusa Heads 是一个增强了残差连接的单层前馈网络,需要额外的训练。训练过程根据主干模型参数是否冻结可以分为 Medusa-1 和 Medusa-2:Medusa-1 仅对 Medusa Heads 进行微调,Medusa-2 会对主干模型也进行微调,计算量更大但能提升 Medusa Heads 的预测质量;
  • 使用 Top-K Sampling,每一个 Head 都会输出 k 个 tokens,对着 k 个 tokens 的验证需要构造 Tree Attention,以保证位置的对应性

分析

  • 如果使用 Greedy Search 解码策略,draft tokens 正确率不够高,加速效果不够显著;
  • 如果采用 Top-K 解码,当取 k=5 时,draft tokens 正确率可以达到 80%。

实验

  • Medusa-1 可以达到 2.2 倍的加速效果,Medusa-2 可以达到 2.3~2.8 倍的加速效果;
  • Medusa 增加了模型参数量,会增加显存占用;
  • Medusa 增加 Head 以及构造 Tree Attention 均对后续工作带来了启发。

更多解读见文章

【2024-1-26】北大 EAGLE

大部分投机解码方案都是在 token level 预测生成 draft,EAGLE 在 feature level (feature 即 LM head 前的 hidden states) 自回归地生成 draft 可能具有更好的效果,另外,采样过程的不确定性会对下一步 feature 的预测产生影响

因此,在 feature level 应用投机解码以获得更好的加速效果。

【2024-1-26】北大推出 EAGLE

方法对比: 原生投机采样、lookahead、medusa和eagle

实现方法

EAGLE 引入结构简单的 Draft Model,包含一个 Embedding Layer,一个 LM Head 和一个 AR head。其中,只有 AR head 需要额外训练,Embedding Layer 和 LM Head 可以复用 Target Model 的参数。

EAGLE 生成的 draft 过程如下所示:

  • Draft Model 接收两个输入:feature sequence of shape [bs, seq_len, hidden_dim] 和 token sequence of shape [bs, seq_len],并将 token sequence 传入 Embedding Layer 得到 embedding sequence of shape [bs, seq_len, hidden_dim];
  • AR Head 包含一个 FC Layer(用于降维)和一个 Decoder Layer ;将当前步 token 的 embedding 与上一时间步 token 的 feature 拼接后传入 AR Head,得到 draft token 的 feature;
  • 将 draft feature 传入 LM Head,通过采样得到多个 draft tokens;
  • 基于第二点发现,EAGLE 会采样不止一个 draft token,构造一棵 draft tree 供后续验证。

EAGLE 的验证与 SpecInfer 类似,对 draft tree 中的每个结点递归地调用原始 Speculative Decoding 的验证算法。此外,还需记录被接受 token 的 feature 以进行下一次迭代。

分析

  • 对应 7B/13B/33B/70B 的 Target Model,EAGLE 的 Draft Model 可训练参数量分别为 0.24B/0.37B/0.56B/0.99B;使用单卡 A100 40G 在 ShareGPT 数据集上训练 70B 模型的 AR Head 需要 1-2 天。
  • 论文在对话、代码以及数学等领域的进行了实验,结果表示 EAGLE 对 Llama-2-Chat 70B 推理有 2.7~3.5 倍的加速效果;
  • EAGLE 通过包含更多信息的 feature 来进行 token 预测,因此生成的 draft 质量相比 Medusa、Lookahead 等方法更高。

【2024-2-3】谷歌 Lookahead Decoding

【2024-2-3】UCSD、Google和伯克利推出 Lookahead Decoding

基于 Jacobi Decoding 过程中生成的 Jacobi Trajectory,可构造若干 N-grams。

推理过程中进行前缀匹配:

  • 若当前步生成的 token 匹配了 N-gram pool 中的若干个元素,将这些候选 N-grams 作为 draft 拼接到输入中,并构造 Attention 得到前向结果,进行验证。

实现

关于 Lookahead Decoding 的具体技术细节参考文章,讲解得十分详细:Lookahead Decoding 图文详解。

分析

Lookahead Decoding

  • 在 MT-Bench、GSM8K、HumanEval 等多个不同任务数据集上取得了 1.5~2.3 倍推理加速;
  • 不需要额外训练,但是会引入额外的计算量,在计算能力强的设备上拥有更高的加速上限,应用在具体业务中应缓解这一问题。

【2024-2-28】上海交大 CLLMs

【2024-2-28】上海交大、加州大学推出 CLLMs

如果想让模型在推理过程中一次生成多个 tokens,并且不增加显存占用,可以让模型在 Jacobi Decoding 过程中生成的 Jacobi Trajectory 上进行训练,使其能够从轨迹中任意一点仅通过一步解码就达到不动点,从而实现一步解码多个 tokens 的效果。

该想法与 Consistency Models(CMs,diffusion model 加速技术)不谋而合,因此命名为 Consistency LLMs。

实现

CLLMs 的训练过程:

  • 对要加速的模型 M 及某一特定任务领域的数据集 D,令 M 在 D 上执行 Jacobi Decoding(每步解码的 draft 长度为 n),收集解码过程中产生的 Jacobi Trajectory ,构造原始数据集 D’;
  • 由于 D’ 中的数据均为“前面正确,后面错误”(由 Jacobi Decoding 的性质决定),对 D’ 进行数据增强,增加一些样本满足“前面正确,中间错误,后面正确”或更多模式,以提升模型在位于轨迹中任意点时的收敛能力;另外,删除 D’ 中出现重复 token 的样本,防止模型推理过程中出现重复;
  • 选择 Loss 进行训练,CLLMs 提供了两类可选的 Loss

分析

  • CLLMs 可以做到一次解码得到 2~6 个 token,从而实现 2.4~3.4 倍的加速;
  • CLLMs 在推理过程中会出现两类 LLM 不具备的现象:
    • 在一次 forward 中解码多个连续的 token(2~6 个);
    • 提前预测正确的 token。即如果位置 i 的 token t 是正确的,而小于 i 位置的 token 依然是错误的,那么在后续的 forward 过程中,t 将不会被替换掉。
  • CLLMs 代码仓库提供了 Llama-2-7B 和 Deepseek-coder-7B-instruct 的组网和训练代码;该算法的复现难度较大,具体应用到业务场景中的难度较大。

【2024-3-14】苹果 ReDrafter – 美杜莎改进

【2024-3-14】苹果推出 ReDrafter

受 Medusa 启发,在投机解码中使用 single-model strategy 更加工程友好,但是 Medusa 增加了显存占用,并且对 Tree Attention 构造需要在解码前提前固定。

ReDrafter 用单个 RNN 代替 Medusa Head,并且应用 Beam Search 在解码过程中动态地构造 Attention。

实现

ReDrafter 使用标准 RNN 作为 Draft Model,根据当前步生成 token 的 embedding 更新 RNN 的 hidden state,并使用上一步解码时主干 Transformer 最后一层的输出来预测下一个 token;循环迭代上述步骤,持续生成 draft。

另外,ReDrafter 使用了 Beam Search 作为解码策略,通过 tensor operations 在解码过程中动态构造前缀匹配,基于前缀匹配的结果构造 Attention,实现了高效的验证

分析

  • ReDrafter 使用单个 RNN 生成 drafter,减少了显存占用,但是 draft 的生成是串行的;
  • ReDrafter 应用 Beam Search 的操作是高效的,且实现了解码过程中动态构造 Attention,更高效;
  • ReDrafter 与 EAGLE 均使用了 feature + embedding 作为 Draft Model 输入,说明这一设计具有一定的效果,或许可以应用在其他算法中。

【2024-4-30】META Multi-Token Prediction

【2024-4-30】META FAIR 推出 Multi-Token Prediction

现有 LLM 训练大多基于自回归 Loss,推理时一次前向只能预测一个 next token。

为了提高解码效率,新训练架构 Multi-Token Prediction,让 LLM 一次预测多个 token,同时不会造成显著显存占用增长和训练时间增加。

一次预测 4 个 tokens 的模型结构

分析

  • 该方法使模型在代码问题上能力提升,且使用 4-tokens 预测能达到 3 倍加速;
  • 在大 batch size 下加速效果更好;并且在更大的模型上加速效果更显著;
  • Multi-Token Prediction
    • 与 CLLMs 想法相近,但没有使用 Jacobi Trajectory;
    • 与 Medusa 方法相近,但更适合用于训练 pretrained model。

【2024-4-29】华为 Kangaroo

【2024-4-29】Huawei Noah’s Ark Lab 华为诺亚方舟推出 Kangaroo

Kangaroo 试图解决两个问题:

  • 如何不依赖独立的 Draft Model 实现自投机,以缓解获取高对齐的 Draft Model 所需的成本?
  • 由于 draft 的生成难度因任务而异,如何根据任务困难程度动态地调整 draft 的生成策略?

基于 Early Exit 的思想,Kangaroo 给出了解决方法:

  • 自投机:使用模型固定的浅层子网的 hidden states 来生成 draft(需要经过一个可训练的 Adapter);由完整的模型自身进行验证。
  • 动态 draft 策略:为 draft 设置一个置信度阈值,当生成的某一个 draft token 低于该阈值时,结束生成 draft。

Kangaroo 方案基于 Double Early Exit。

  • 从浅层子网中提取 hidden states(第一步 Early Exit),通过一个 Adapter 网络将这些 hidden states 直接映射到最终层的 hidden states;经过原本模型的 LM Head 输出得到 draft tokens。
  • 为 draft token 设置一个置信度阈值,当 draft logits 的最大值低于该阈值时,停止生成后续的 draft(第二步 Early Exit)

分析

  • Kangaroo 在 Spec-Bench 上达到了 1.68 倍的加速,相比于 Medusa-1 减少了 88.7% 的显存占用;
  • Kangaroo 提出了衡量 draft token 接受率的新指标 Consistent Token Accept Rate,表示 w 个 draft tokens 全部被接收的概率
  • Kangaroo 还对浅层子网深度、Adapter 结构以及动态 draft 长度进行了探索

MTP

DeepSeek V3和R1

应用

自适应投机采样用于小模型

【2026-3-27】单张显卡跑出15倍推理速度,aiX-apply-4B小模型加速企业AI研发落地

3月25日,北大系AI Coding赛道创企硅心科技(aiXcoder)发布专为「代码变更应用」场景设计的高性能、轻量级模型 aiX-apply-4B。

20多种主流编程语言及Markdown等多类型文件格式的测试中,aiX-apply-4B的平均准确率达到 93.8%,超越Qwen3-4B基座模型 62.6% 准确度,甚至高于千亿级大模型DeepSeek-V3.2。

同一任务场景下,aiX-apply模型算力成本约为DeepSeek-V3.2的5%,推理速度则提升15倍,仅需一张消费级显卡即可在企业部署。

推理效率方面,aiXcoder引入自适应投机采样技术,极大压缩了端到端延迟。

企业级生产环境实测显示,aiX-apply-4B推理速度每秒可达2000 tokens,在单张RTX 4090消费级显卡上即可高效运行;而对比模型DeepSeek-V3.2则需要八卡H200高端集群部署。

综合不同的硬件部署成本与推理速度进行对比,aiX-apply-4B仅用DeepSeek-V3.2约5%的算力成本,实现了15倍的效率提升。

aiXcoder 已构建起覆盖多个研发关键环节的小模型矩阵,并创新提出“大模型+小模型”协同架构,让“通才”大模型与“专才”小模型各司其职、优势互补:

  • 通用大模型聚焦复杂意图理解、代码逻辑分析、修改方案制定等需要深度推理的工作,发挥其智能优势;
  • 垂直场景小模型则承接高频工程任务,以轻量化特性实现快速、精准执行。

这种架构设计,让企业的有限算力得到分层利用:小模型支持专项场景任务的高效完成,节约出更多算力用于大模型的复杂推理。

结束


支付宝打赏 微信打赏

~ 海内存知已,天涯若比邻 ~

Share

Related Posts

标题:大模型微调 LLM Finetune

摘要:GPT之类大模型微调方法

标题:大模型推理框架:vLLM

摘要:vLLM 大模型推理知识

站内可视化导航

文章可视化导读:鼠标划过图形块时,如果出现蓝色光环, 点击即可跳转到对应主题

Comments

--disqus--

    Content
    My Moment ( 微信公众号 )
    欢迎关注鹤啸九天