优化单个操作和内存访问模式能为大语言模型(LLM)带来显著的提速。除了这些优化方法,加速LLM推理的另一条途径是改变生成过程本身。自回归生成,即逐个生成词元,存在固有的延迟问题:词元 $t+1$ 的生成依赖于词元 $t$。高级推理算法旨在打破这种顺序依赖,或减少主模型生成词元序列所需计算开销大的前向传播次数。这些技术通常会引入计算上的权衡,但能大幅提升生成速度,特别是在对延迟敏感的应用中。推测解码推测解码是一种重要的技术,它通过使用一个更小、更快的“草稿”模型与大型、准确的目标 LLM 并用,旨在加速自回归生成。核心机制:草稿生成: 在每一步,草稿模型快速生成 $k$ 个候选词元序列,以扩展当前序列。验证: 随后,大型目标模型执行一次前向传播,将原始序列加上 $k$ 个草稿词元作为输入。这次单独的前向传播能高效计算 $k+1$ 个位置(原始位置加上 $k$ 个草稿位置)上下一个词元的概率分布。接受/拒绝: 算法将草稿模型选择的词元与目标模型在每个对应位置本应选择的词元进行比较。如果第一个草稿词元与目标模型的预测一致,则接受该词元。如果第二个草稿词元在第一个被接受的词元的条件下也与目标模型的预测一致,则接受该词元,以此类推。这个过程持续到出现不匹配,或者所有 $k$ 个草稿词元都已验证。设 $k'$ 为已接受词元的数量($0 \le k' \le k$)。纠正(如果出现不匹配): 如果在位置 $i$ 处出现不匹配(表示已接受 $k' = i-1$ 个词元),则从目标模型对第 $i$ 个词元的预测中采样,并将其附加到序列中。继续: 过程从新序列的末尾重复。优势与权衡:潜在加速: 当草稿模型的预测与目标模型高度一致时,只需目标模型大约一次前向传播的开销,加上廉价得多的草稿模型的一次传播,就可以生成多个词元(在最佳情况下为 $k'+1$ 个,或 $k'$ 个加上一个纠正后的词元)。这能显著缩短实际运行时间。额外开销: 需要维护和运行草稿模型。验证步骤也增加了一些复杂性。影响因素: 加速效果很大程度上取决于接受率,而接受率又取决于草稿模型的质量和 $k$ 的值。过于激进的 $k$ 值或较差的草稿模型可能导致频繁拒绝,从而减少收益。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif", color="#495057", fillcolor="#e9ecef", style=filled]; edge [color="#495057", fontname="sans-serif"]; Start [label="输入提示"]; Draft [label="小型草稿模型\n生成 k 个词元"]; Target [label="大型目标模型\n验证 k 个词元"]; Accept [label="接受已验证词元\n(输出 k' 个词元)"]; Reject [label="拒绝无效后缀\n(输出 k'' < k 个词元)"]; Next [label="下一步生成"]; Start -> Draft; Draft -> Target [label="草稿序列"]; Target -> Accept [label="所有 k 个词元有效"]; Target -> Reject [label="发现不匹配"]; Accept -> Next; Reject -> Next; }推测解码的高层流程。一个快速的草稿模型提议词元,然后由更大的目标模型并行高效地验证。块级并行解码等变体应用类似原理,但在草稿生成和验证的结构上可能有所不同。美杜莎解码美杜莎解码提供了一种替代方法,避免了单独的草稿模型。相反,它将多个轻量级预测“头”附加到基础 LLM 的最后一层。核心机制:多头: 多个小型预测头在冻结的基础 LLM 的最终隐藏状态之上进行训练。每个头都训练用于预测相对于当前词元特定未来位置的词元(例如,头 1 预测词元 $t+1$,头 2 预测 $t+2$,等)。候选生成: 在推理过程中,当基础模型计算出当前词元 $t$ 的隐藏状态后,每个美杜莎头都会为其相应的未来位置($t+1, t+2, \dots, t+k$)生成一个预测。这会生成多个候选序列(路径)。基于树的验证: 各个头生成的候选词元形成树形结构。基础模型使用专门的注意力机制(树注意力)执行一次前向传播,该机制可以同时高效计算此候选树中所有节点(词元)的概率。选择: 算法根据基础模型的概率,识别树中最可能且有效的路径,并接受最长的已验证序列。优势与权衡:无需独立草稿模型: 减少了管理两个不同模型的复杂性。并行验证: 树注意力机制允许在一次基础模型传播中高效验证多个候选词,与基本推测解码相比,这可能带来更高的接受率和加速效果。训练开销: 需要训练美杜莎头,尽管这通常比训练基础 LLM 要便宜得多。实现复杂性: 需要修改标准的注意力机制和生成循环。美杜莎解码旨在通过生成更丰富的候选延续序列,并在目标模型的一次前向传播中更高效地验证它们,从而改进推测解码。预读解码预读解码是另一种旨在每次迭代生成多个词元的算法,不一定需要单独的草稿模型,而是侧重于高效的 N-gram 提议和验证。核心机制:N-gram 生成: 该算法使用目标 LLM 生成可能跟随当前序列的潜在 N-gram(N 个词元的序列)。这通常涉及高效采样或识别高概率短序列的技术。窗口验证: 它维护一个已验证词元的“窗口”。其核心思想是提议候选 N-gram 来扩展此窗口,并使用目标模型对其进行验证。高效的实现通常依赖于缓存中间计算结果(如雅可比矩阵)以加速重叠 N-gram 的验证。窗口前进: 一旦 N-gram 被验证,已验证窗口就会前进,可能在单个逻辑步骤中接受多个词元。优势与权衡:单一模型聚焦: 通常仅使用目标 LLM 运行,简化了部署架构。潜在效率: 可以通过验证序列来减少完整前向传播的次数,特别是在适用计算缓存时,效果更佳。算法复杂性: 与标准自回归采样相比,提议、缓存和验证 N-gram 的逻辑可能比较复杂。其效果可能取决于具体的实现细节和 LLM 的特性。预读解码体现了一种不同的算法思想,侧重于在主模型的生成过程本身中进行多词元预测和验证。评估与系统考量考量因素包括:生成速度: 以每秒词元数或生成特定长度序列的端到端延迟衡量。这是主要目标。生成质量: 确保加速生成不会与标准自回归采样相比,显著降低输出的质量、连贯性或事实准确性。可能需要标准 NLP 基准测试和人工评估。计算开销: 评估草稿模型、预测头或复杂验证逻辑引入的额外计算。内存占用: 考虑草稿模型、缓存状态或更大注意力缓冲区所需的任何额外内存。兼容性: 这些算法通常需要修改标准推理流程,并且可能无法与所有现有优化技术(例如,某些量化方案如果实施不当,可能会干扰验证逻辑)轻松兼容。像 vLLM 或 TensorRT-LLM 这样的框架正在逐渐增加对其中一些方法的支持。这些高级推理算法代表着一种复杂的优化层次,其运行层面高于单个内核调优或内存管理。它们从根本上改变了词元生成策略,以减少顺序步骤或昂贵计算的数量,为部署真正快速的 LLM 的硬件加速技术提供了有力的补充。