大语言模型中的加速生成技术:综述

24年5月来自伊朗德黑兰理工大学、斯坦福、MIT、哥伦比亚大学和Amazon GenAI的论文“A Comprehensive Survey of Accelerated Generation Techniques in Large Language Models”。

尽管加速大语言模型 (LLM) 中的文本生成对于高效生成内容至关重要,但该过程的序贯性通常会导致高的推理延迟,对实时应用构成挑战。已经提出和开发了各种技术来应对这些挑战并提高效率。本文介绍自回归语言模型中的加速生成技术,旨在了解最先进的方法及其应用。这些技术分为几个关键领域:推测解码、早期退出机制和非自回归方法。讨论每个类别的基本原理、优势、局限性和最新进展。
如图所示,每个LLM加速生成技术都提出了旨在优化模型效率和功效的独特策略。推测解码同时探索多个候选输出,而早期退出则根据有信心的预测优先终止。非自回归方法引入并行化和相干输出生成的创新方法。
添加图片注释,不超过 140 字(可选)

推测解码

推测解码的灵感来自推测运行 [72, 73],这是处理器中的一种优化技术,其中并行运行任务验证其必要性,从而增强并发性。在 LLM 生成文本的背景下,推测解码是一种首先有效预测多个tokens然后用 LLM 同时验证这些预测的方法 [74]。

该领域的一项开创性工作[21] ,引入了一种分块并行解码方案,以增强自回归序列模型中的推理过程。与按序贯生成输出的传统方法不同,这种方法在模型中使用并行评分来加快解码速度。对于训练部分,在原始解码器输出层之后添加了一个带残差连接的多输出前馈层,并训练 k 个辅助“提议”模型同时预测接下来的 k 个tokens。在推理过程中这些模型并行运行去预测接下来的 k 个tokens。然后用基础模型并行评分每个位置,确定在贪婪解码下生成这些预测的最长前缀。如果此前缀的长度超过 1,则可以跳过贪婪解码环的一次或多次迭代。值得注意的是,无需更改模型架构或显著牺牲性能,这种方法有助于加快推理速度。

如图所示:该方法的基础基于三个步骤,即预测、验证和接受:

在预测步骤中,生成初期模型和辅助提议模型的贪婪预测。由于这些模型是独立的,因此可以同时计算每个预测,与单个贪婪预测相比,最大限度地缩短所需的时间。
在验证步骤中,算法检测基模型生成的提议 k 长度序列最长前缀。如果评分模型在少于 k 步内处理这个 k 个tokens序列,则可以节省时间。
在接受步骤中,将验证后的前缀添加到最初序列中。如果基模型和提议模型的预测开始出现差异,则该过程将提前停止,保持与贪婪解码输出的一致性。
添加图片注释,不超过 140 字(可选)

在预测然后验证范式中,多个未来tokens被有效地制定,随后在每个解码步骤中并行验证,[22] 引入了一种方法SpecDec。此方法包含两个组件——Spec-Drafter 和 Spec-Verification,可增强制定和验证过程。Spec-Drafter 是一个独立模型,经过训练可实现高效、准确的token制定,专注于两个指导原则:能力和延迟。其目标是改进制定的流程,在不影响准确性的情况下提高效率。值得注意的是,在端到端生成质量和效率方面,Spec-Drafter 的表现优于基于头的制定器(如分块解码 [21] 中所用)。Spec-Verification是一种放宽验证策略的技术,接受与自回归 (AR) 贪婪解码略有偏差的tokens。这种灵活性使得可以接受更多数量制定的tokens。在各种 seq2seq 任务(包括机器翻译和抽象的摘要)中的实验结果强调了 SpecDec 的有效性。该方法使基本 Transformer 架构的速度提高了约 5 倍,同时保持了与波束搜索(BS)解码相当的生成质量。此外,SpecDec 在集成现有模型和保留其原始行为方面具有优势。这些发现强调了推测解码方法的潜力。

在推测解码领域,两个主要阶段是:制定和验证。每个阶段都会引入独特的挑战,研究人员可以通过不同的方法来解决这些挑战。

Medusa [32] 通过在基模型上添加额外的解码头来解决寻找理想制定模型的挑战,这一方法受到分块解码 (Blockwise Decoding)[21] 的启发。这个想法的独特价值,在于在同一模型上训练多个解码头(称为“Medusa 头”),而不是引入一个新的制定模型。Medusa 头可以与原始模型同时训练,原始模型在训练期间保持冻结状态,并在每个解码步骤生成tokens块。这允许使用强大的基模型学习的表征在单个 GPU 上对大模型进行微调。由于这些头是单层,类似于原始语言模型头,因此 Medusa 不会增加服务系统设计的复杂性,适用于分布式设置。此外,作者提出了一种高效且高质量的替代方案,而不是传统的重要性采样方案,即放宽与原始模型分布匹配的要求。这种方法在更高的采样温度下变得更高效,允许更长的接受序列。

Medusa 在 LLM 的最后隐状态之上引入了多个头,从而能够并行预测多个后续tokens。每个 Medusa 头都是一个单层前馈网络,并增加了一个残差连接。训练这些头时,会用训练原始模型的相同语料库或用模型本身生成的新语料库。重要的是,原始模型在此训练阶段保持静态,只有 Medusa 头经过微调。对于 Medusa 头,预测“下下一个”token的 top-1 准确率徘徊在 60% 左右,而 top-5 准确率超过 80%。这一大幅提升表明,通过战略性地利用 Medusa 头做出多个排名靠前的预测,可以显著增加每个解码步骤生成的tokens数量。在推理过程中,候选tokens是对每个 Medusa 头的多个排名靠前预测进行笛卡尔积来制作的,并且这些候选tokens用基于树的注意机制进行并行处理。

采用一种典型的接受方案来选择合理的候选者,采用类似于截断采样的硬阈值和熵相关阈值的组合。总是使用贪婪解码来接受第一个token,确保在每个步骤中至少生成一个token。最终输出是通过验收测试的最长序列。Medusa 使用 Vicuna 模型(专门针对聊天应用程序进行微调的 LLaMA 模型)进行测试,参数数量分别为 7B、13B 和 33B。为了训练 Medusa 头,用公开的 ShareGPT 数据集,这是最初用于 Vicuna 模型的训练数据子集,并进行单个epoch的训练。使用 MT-bench 的评估一致表明,Medusa 在广泛的用例中实现了大约 2 倍的wall time加速。通过 Medusa 的优化,33B 参数的 Vicuna 模型可以像 13B 模型一样快速运行。

Lookahead解码 [43] 扩展了用 RAG 系统代替制定模型的想法。这是一种多分支策略,可以同时检索多个制定。然后通过验证和接受 (VA) 过程并行高效地解码和验证这些制定。然后,VA 过程会为每个制定识别正确的子序列,并保留最长的子序列作为输出token。基于 trie 的检索 (TR) 过程可以同时生成多个分支,每个分支代表一个token序列。随后,对每个分支执行验证和接受 (VA) 过程,将最长的正确子序列识别为最终输出。trie 树是一种数据结构,它将节点组织为单个字符或单词来有效地处理前缀匹配。其中每个树节点代表一个token ID,从根到叶节点的路径代表一个分支。

在每个步骤(包括检索过程和 VA 过程)之前 和 之后,全局 trie 树将通过多个程序进行更新,例如“插入分支”、“消除分支”和“节点修剪”。在检索过程中,查询 trie 树以提供制定。Trie 树的检索方法涉及用前缀(即一系列tokens)从 trie 树中提取多个分支。前缀的长度决定了检索的分支数量和相关性:较短的前缀会产生较多的分支,而较长的前缀会产生更紧密相关的分支。可采用多步检索策略来平衡分支数和相关性。最初,尝试匹配较长的前缀,如果与匹配分支相关的tokens数明显小于所需数,则调整前缀长度。如果匹配分支的数量低于阈值,则所有分支都用于验证和验收 (VA) 过程;否则,选择频率最高的tokens。来自输入提示的分支优先考虑,即放大其频率。通过一个并行的多分支制定实现 Lookahead,其进一步提升AntGLM-10B 的平均推理速度至 263.4 token/s,实现了 5.03 倍的显著加速,加速效果显著。

早期退出机制

早期退出的概念最早在各种深度神经网络架构的自适应计算框架中引入,特别是在基于编码器的 Transformer 模型中 [84、85、86、87、88、89、90、91、92]。这种方法基于对不同难度级别样本的观察,表明大模型可能会过度计算简单输入。相比之下,较小的模型可能会面临复杂样本的挑战 [93]。随后,[94] 提出了一种解码器架构,该架构根据每个输入动态调整层数,解决自回归语言模型中的高推理延迟问题。该模型的核心特征是一个内部置信度函数,它根据中间层的隐藏状态生成置信度分数。该分数用于根据预定义的早期退出阈值决定是否退出。这种方法允许模型更快地生成输出,甚至在完成所有计算之前。虽然这种方法有效,但在设计语言模型的早期退出方案时也带来了自身的挑战,因为其中引入了新技术。

非自回归方法

为了应对顺序执行的局限性,一类独特的策略侧重于非自回归 (NAR) 模型。在 NAR 模型中,所有目标(target)tokens都是同时或并行生成的,而自回归 (AR) 模型则不同,后者以顺序方式一次生成一个token,从而加快了推理速度。但是,由于所有tokens都是同时生成的,因此没有顺序过程来指导解码的终止。每个token都是独立于其他tokens生成的,不直接了解其他tokens的位置或身份。因此,没有特殊的token信息或目标(target)信息来表示解码过程的结束。这种为终止缺乏的顺序指导可能会给非自回归模型带来挑战,因为它们需要找到替代方法来确定生成过程何时应该停止。

Mask-Predict 方法[68] 中,采取一种解决方案应对非自回归模型面临的主要挑战。首先,引入条件掩码语言模型 (CMLM),这是一种用掩码语言模型目标 (objective)[104] 训练的编码器-解码器架构。这种调整使模型能够同时预测目标(target)中的任何掩码词子集。此外,还提出一种解码算法,利用 CMLM 的顺序不可知特性来支持高度并行的解码。掩码预测解码算法在恒定周期内并行解码整个序列。在每次迭代中,该算法根据模型的置信度确定要掩码的token子集。然后使用重要条件掩码语言模型 (CMLM) 同时预测这些掩码tokens。掩码模型不确定的tokens,并利用之前的高置信度预测,模型可以用更多信息重新预测具有挑战性的情况。这个迭代过程允许模型在丰富的双向上下文中重新考虑单词选择,最终实现高质量的翻译。此外,该算法能够在每一步进行显著并行,使其能够在亚线性数量的解码迭代中收敛到高质量的输出序列。实验进一步证明带有 Mask-Predict 的 CMLM 相对于以前的非自回归模型的有效性,特别是在机器翻译任务中,在接近自回归模型性能的同时实现了大约三倍的解码速度。

雅可比解码(Jacobi decoding)算法从另外一个角度讨论这个问题。在[69] 引入一种技术,可以在保持翻译质量的同时加快机器翻译任务中的自回归解码速度。其提出一种传统贪婪自回归解码过程的并行公式,利用雅可比和高斯-赛德尔的定点(fixed point)迭代方法 [106] 进行快速推理。

该系统包含带m 个变量的 m 个非线性方程(每个方程都使用神经网络) 。为了求解这些方程,该方法会根据输入提示随机猜测在序列(以下简称 n tokens序列)中的下 n 个tokens。然后将 n tokens序列和提示输入到 LLM,迭代更新自身。最终,n tokens序列在一个贪婪策略下收敛到 AR 解码生成的相同输出。n tokens序列的演化,在随机初始化序列和 AR 解码生成的 n tokens序列(即定点)之间,形成雅可比轨迹。借鉴有关求解非线性方程的数值方法,进一步开发该方法。在适当的停止条件下,可以实现对输出的质量保证。求解这个问题包括三种算法,即并行雅可比 (PJ) 解码、并行 GS-Jacobi (PGJ) 解码和混合 GS-Jacobi (HGJ) 解码,这些算法利用这些定点迭代方法来加速机器翻译任务中的解码。超参的使用可以对块大小和早期停止进行控制。对不同语言和模型的评估表明,与标准自回归解码方法相比,并行化让速度提高多达 38%,并且在利用并行计算资源时可以将速度提高近一倍。此外,与一系列 NAT 模型相比,HGJ 展示了计算资源的最高效利用,即使考虑额外的推理成本也能实现最佳的成本效益比。此外,虽然 NAT 通常会导致翻译质量与其自回归基线相比下降,但该方法可确保同样高质量的自回归解码,超越标准 NAT 模型。

从实际的实现中观察到,与自回归解码相比,LLM 的 Vanilla Jacobi 解码仅表现出轻微的速度提升,通常平均加速 1.05 倍,如 [69] 所示。这种边际提升之所以发生,是因为如果前面的 token 有错误,LLM 通常很难生成准确的 token。一致性大语言模型 (CLLM) [70] 提出从任何状态快速收敛到 Jacobi 轨迹上的定点,解决了这个问题。该方法专注于改进 LLM 同时生成一个前缀的多个后续 tokens,旨在仅用一步匹配自回归解码的输出。然而,初步实验表明,一步来学习这项任务具有挑战性,尤其是对于大型 token 序列。可以沿着包含更多准确 tokens的Jacobi 轨迹,考虑中间点来解决这个问题。具体来说,学习过程反映了轨迹上倒数第二个点的 AR 建模,其中即使没有自适应,目标 (target)LLM 也能表现良好。这种方法实现显著的加速,同时将性能损失降到最低,并且不需要为辅助模型组件增加内存成本。学习策略涉及使用两个损失项来训练模型:1)一致性损失,其中模型被训练为将雅可比轨迹上的任意点映射到定点;2)AR 损失,保持目标 LLM 的分布并确保生成质量。该方法在生成速度方面表现出显着的提升,速度提高了 2.4 到 3.4 倍,同时在特定域和开放域环境中的各种基准测试中保持了高质量的结果。

挑战和局限性

在讨论的各种技术中,推测解码脱颖而出,因为它有望通过并行预测和验证过程提高效率,有可能规避传统方法固有的序贯瓶颈。另一种方法是早期退出策略,考虑tokens复杂性的不同,在做出足够自信的预测后停止生成过程来加速推理。检测更简单的tokens并尽早退出计算,这些策略可以使 LLM 更适应实时应用。此外,非自回归解码技术使用并行处理来加速推理,从而快速生成响应。通过放宽严格的从左到右的生成顺序,这些方法促进了更高效的并行化,并解决了序列-到-序列建模中长期存在的挑战。

尽管取得了进展,但这些加速生成方法也带来了一些挑战和限制。一个问题是,实施高级生成技术的计算开销是一个重大障碍,尤其是在资源受限的环境或需要实时处理的应用程序中。虽然推测解码旨在减少总体解码时间,但并行处理的计算需求增加可能会抵消这些收益,特别是当推测路径与贪婪路径有显著差异时,导致计算资源浪费。此外,特定的推测解码方法需要训练一个单独的制定模型来生成多个候选输出,从而增加计算负担。同样,一些早期退出的方法需要额外的模型头来预测tokens难度或计算置信函数来确定何时终止生成,这进一步增加了计算复杂性。在非自回归解码中,与自回归方法相比,微调模型以并行预测tokens,可能会损害准确性。

此外,在不进行大量修改的情况下将新算法与现有 LLM 架构集成的复杂性仍然是一个巨大的障碍。对其他模型或对生成机制进行修改的需求,可能会使这些方法在标准 LLM 框架中的实现和可扩展性变得复杂。这方面需要进一步研究集成技术,这些技术可以利用加速生成的优势,而不会对模型架构进行破坏性更改。

最后,最小化生成方法的计算开销仍有待探索。未来的研究可以集中在优化这些方法的效率上,或许可以通过更智能的推测路径选择或更好地与轻量级自适应模型架构集成。虽然这些方法的最新进展已将 LLM 的功能提升到前所未有的水平,但解决这些限制对于充分发挥其潜力至关重要。

  • 13
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值