【大模型面试】大模型推理加速,投机解码技术详解与应用
投机解码通过“草稿 + 批改”的策略,在不牺牲生成质量的前提下显著提升推理效率。如何在预测精度与延迟之间找到最佳平衡?如何与批量推理结合?是否能推广到多模态等更复杂场景?这些问题为未来研究留下了空间,也让投机解码成为大模型推理优化的一个重要方向。论文链接:https://arxiv.org/pdf/2401.07851。
投机解码是一种加速大模型推理的技术,通过"先预测、后验证"的思路,用轻量级模型(drafter)预测多个token,再由大模型批量验证。这种方法可在保证输出质量的同时减少计算次数,通常带来1.5-5倍的推理提速。技术关键在于提高"接受率",通过独立drafter或自举drafter生成草稿,采用不同策略验证,并利用知识蒸馏等技术对齐模型分布,从而实现高效推理。
试答:
自回归解码每次只能生成一个 token,生成 N 个 token 就要做 N 次前向传播,虽然结果准确,但效率很低。
投机解码的思路是先用一个轻量 drafter 一次性预测一串 token,再让大模型批量验证。只要候选通过,就能一次性接受多个 token,从而减少计算。
它的加速效果主要取决于 接受率,接受率越高,推理越快。通常能带来 1.5 到 5 倍的提速,但需要额外的 drafter 和对齐手段,比如知识蒸馏等。
今天来看一篇综述《Unlocking Efficiency in Large Language Model Inference: A Comprehensive Survey of Speculative Decoding》。这篇文章系统梳理了投机解码(Speculative Decoding)的核心思想——“先预测(draft)后验证(verify)”。一起看看吧!
本文目录如下:
- 背景:为什么需要加速Decode?
- 自回归解码与投机解码的公式化定义
- Drafting:如何生成草稿?
- Verification:如何批改草稿?
- Alignment:如何提升接受率?
- 总结与展望
题图来自论文Unlocking Efficiency in Large Language Model Inference: AComprehensive Survey of Speculative Decoding
背景:为什么需要加速Decode?
大模型推理一般分为两个阶段:Prefill 和 Decode。前者并行度高,效率问题不大;真正的瓶颈出在后者——自回归解码。传统的做法是每次解码只生成一个 token,推理延迟随生成序列长度和模型规模线性增长,算力利用率不高,显存带宽压力又大,即便有 KV cache 也治标不治本。
于是人们开始尝试各种加速方案,但这些方法又各有各的局限,例如:
- Continuous batching:即已经解码完毕的任务可以退出batch,允许新的请求插入到batch中,减少了因等待导致的算力浪费。但在用户请求少时无法发挥作用。
- Parallel Decoding:通过Blockwise Decoding,在Transformer解码器顶部添加额外的FFN头,使得每步推理可以同时生成多个token。这些token随后由原始LLM并行验证,接受第一个不一致的token之前的所有token,确保输出与原始LLM的输出一致。但额外的 FFN 头预测能力有限,效果一般。
在这些尝试之上,投机解码(Speculative Decoding)带来了更灵活的思路:
先预测(draft)、再验证(verify)。具体做法是用轻量的 drafter 模型预测多个未来的 token,然后使用 LLM 并行验证,只有符合 LLM 验证标准的 token 才会被接受为最终输出。
之所以可以采用投机解码,主要基于两个观察:
- 许多简单的 token 使用简单的模型就能预测
- 解码是通信密集型任务,每次解码都需要将大量参数从 HBM 加载到 SRAM 中。利用投机解码可以减少解码次数,从而减少通信次数,提升推理效率
这种方法保证了生成质量,同时通过减少大模型的解码次数,大幅提升了推理效率。
公式化定义
在继续介绍解码方法的细节之前,先给出两种解码方式的公式化定义:
自回归解码
给定输入序列为 ,目标自回归模型为 , 为 模型给出的条件概率分布,从中采样:
自回归解码每次只生成一个 token,不能充分利用GPU的算力,受到内存带宽限制。
投机解码
在投机解码的每一步中,先用轻量的drafter模型并行预测K个token,然后由verify模型并行验证这些预测token,从而提升推理吞吐量。草稿模型 可以是与目标模型 相互独立、专门训练的小模型;也可以在 内部结构中构造,通过添加轻量的前馈预测头(FFN heads)或在浅层提前终止计算(early exit),以较低代价自举生成候选 token 序列。
如下图的 Algorithm 2 给出了完整的伪代码实现,可以清晰看到 draft → verify → correct 的循环流程。
核心步骤
-
给定输入序列 ,目标大模型为 ,利用轻量的模型并行预测K个token:
其中是由给出的概率分布,表示从中采样的drafted token。
-
Verification:给定输入序列 和预测的drafted token,使用并行计算K+1个条件分布:
drafted token使用验证准则验证是否与目标模型的输出一致,假设drafted token 不正确,则使用纠正这个token,之后的token被丢弃以保证输出的高质量。如果所有token都验证成功,第K+1个token从分布中得到。这样就确保每次都生成至少一个新的token,运行次数就不会大于自回归解码时运行的次数。
上面介绍的是投机解码的基本范式。实际上,已有研究在 Drafting(草稿生成) 和 Verification(验证) 两个环节都提出了大量改进方法。下图对这些工作做了分类整理,帮助我们从全局把握这一领域的研究脉络:
投机解码的加速效果取决于 接受率,即 drafter 预测的 token 有多少能通过大模型验证。接受率越高,推理速度越快。它受到以下因素影响:
- drafter 的精度与推理速度;
- 验证标准是严格匹配还是近似匹配;
- drafter 与目标模型分布的一致性。
为了进一步理解这些因素,我们接下来将从Drafting、Verification、Alignment三个环节来做进一步研究。
Drafting:如何生成草稿?
在 Drafting 阶段,研究主要有两条路线:独立 drafter 和 自举 drafter。
Independent Drafting
- 核心思想:用一个与目标 LLM 不同、但更高效的小模型来并行生成候选token,典型方式包括:
- 专用非自回归 Transformer:例如 SpecDec 提出的 deep-shallow encoder–decoder 结构(深层编码器 + 少量解码器),需要额外训练,但能高效生成多步候选。
- 同系列小模型:直接使用与目标模型同系列的轻量模型(共享 tokenizer 和预训练数据,结构相似),无需额外训练,天然更易对齐;若结合 知识蒸馏,可进一步提高接受率。
Self-Drafting
- 核心思想:直接在目标 LLM 内部生成草稿,避免额外训练和调度开销。代表方法有:
- FFN Heads:在 Transformer 解码器上添加并行 FFN 头(如 Blockwise Decoding、Medusa),一次性生成多个 token,开销小,适合分布式部署。
- Early Exiting / Layer Skipping:在推理时提前退出或跳过中间层(如 Self-Speculative),加速生成后续分布。
- Mask-Predict & N-grams:在输入末尾追加多个 [PAD],通过并行掩码填充预测多个 token,并将低质候选转化为 n-gram 片段以提升质量。
- Learnable Tokens:引入可训练的特殊 token(如 [LA]),通过小规模微调改善并行预测效果。
Verification:如何批改草稿?
在 Verification 阶段,目标模型需要判断 drafter 生成的候选 token 是否可以被接受。不同方法在严格程度和灵活性上有所不同,大体可以分为三类:
贪婪解码
早期的投机解码多采用贪婪解码,以保证输出与目标模型的贪婪解码完全一致。
- 严格匹配(Lossless):要求 drafter 的预测 token 必须等于目标模型 的 Top-1 结果,即。
若第 c 个 token 不符,则用目标模型的 Top-1 结果替换,并舍弃后续 token。代表方法如 Blockwise Decoding。缺点是可能拒绝掉一些“质量高但不是 Top-1”的预测,限制加速效果。
- 近似匹配(Approximate):为提高接受率,可以放宽条件。例如 SpecDec 允许 drafter 的预测落在目标模型的 Top-k 内;BiLD 则只在连续不匹配的 token 超过阈值时才拒绝。
投机采样
相比硬性匹配,投机采样引入概率接受机制。第i个预测token的验证标准为:
其中和分别表示目标模型和 drafter 对该 token 的预测概率。
- 如果通过,则接受该 token;
- 如果拒绝,则按的分布重新采样。 这样做理论上可以保证最终分布与目标模型一致。
Token树验证
为进一步提升并行度和接受率,部分方法(如 SpecInfer、Medusa)利用共享前缀将多条候选序列合并为一棵 token 树。目标模型通过设计 树注意力掩码 来并行验证整棵树,大幅减少重复计算。后续会通过Medusa这篇论文讲解树注意力。
Alignment:如何提升接受率?
投机解码的加速效果在很大程度上取决于 接受率——也就是 drafter 的预测分布与目标模型分布的一致性。接受率越高,通过验证的 token 就越多,推理速度也就越快。因此,研究者提出了多种 对齐(alignment)策略 来缩小两者差距,提升接受率。
主要方法包括:
- 序列级知识蒸馏(Seq-KD):在目标模型生成的序列上训练 drafter,使其输出更贴近大模型分布。
- 集体增强微调(Col-BT):对多个小模型应用 Seq-KD,并利用聚合输出进行预测,从而提升整体准确性。
- 在线知识蒸馏(Online KD):在推理过程中基于实时查询动态更新 drafter,无需预训练,即时对齐目标模型。
下表对现有方法做了进一步总结,展示了不同算法在 Drafting、Verification、Alignment 等方面的设计选择及加速效果。
总结与展望
投机解码通过“草稿 + 批改”的策略,在不牺牲生成质量的前提下显著提升推理效率。它已经展现出巨大的应用潜力,但仍面临挑战:
- 如何在预测精度与延迟之间找到最佳平衡?
- 如何与批量推理结合?
- 是否能推广到多模态等更复杂场景?
这些问题为未来研究留下了空间,也让投机解码成为大模型推理优化的一个重要方向。
论文链接:https://arxiv.org/pdf/2401.07851
如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源
,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享
!
1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)
3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。
4. 大模型行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。
5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。
6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。
全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码
,免费领取【保证100%免费
】
更多推荐
所有评论(0)