SPECTRA: Faster Large Language Model Inference with Optimized Internal and External Speculation
TL;DR 精炼摘要
本文提出了SPECTRA,一个新颖框架,通过优化内部和外部推测,加速大型语言模型(LLM)的推理,避免了额外训练和对原始模型的修改。SPECTRA引入两种新技术,各自独立超越现有的最先进方法,二者结合下在多种基准上实现高达4.08倍的加速,超出现有免训练方法的效果,且实现已公开。
摘要
Inference with modern Large Language Models (LLMs) is both computationally expensive and time-consuming. Speculative decoding has emerged as a promising solution, but existing approaches face key limitations: training-based methods require a draft model that is challenging to obtain and lacks generalizability, while training-free methods offer limited speedup gains. In this work, we present SPECTRA, a novel framework for accelerating LLM inference without the need for additional training or modification to the original LLM. SPECTRA introduces two new techniques for efficiently utilizing internal and external speculation, each outperforming corresponding state-of-the-art (SOTA) methods independently. When combined, these techniques achieve up to a 4.08x speedup across various benchmarks and LLM architectures, significantly surpassing existing training-free approaches. The implementation of SPECTRA is publicly available.
思维导图
论文精读
中文精读
1. 论文基本信息
1.1. 标题
SPECTRA: Faster Large Language Model Inference with Optimized Internal and External Speculation
1.2. 作者
Nguyen-Khang Le, Dinh-Truong Do, Nguyen Le Minh (日本高级科学技术研究院)
1.3. 发表期刊/会议
未明确提及具体期刊或会议,根据发布日期 2025-01-01T00:00:00.000Z 判断,可能为预印本(Preprint)或已接受但尚未正式刊发的论文。
1.4. 发表年份
2025
1.5. 摘要
现代大语言模型(LLM)的推理(Inference)既计算昂贵又耗时。推测解码(Speculative Decoding)已成为一种有前景的解决方案,但现有方法面临关键限制:基于训练的方法需要一个难以获取且缺乏通用性的草稿模型(Draft Model),而无需训练的方法则速度提升有限。在这项工作中,我们提出了 SPECTRA,一个无需额外训练或修改原始 LLM 即可加速 LLM 推理的新颖框架。SPECTRA 引入了两种新颖技术,用于高效利用内部和外部推测,每种技术都独立优于相应的最先进(SOTA)方法。当结合使用时,这些技术在各种基准和 LLM 架构上实现了高达 4.08 倍的速度提升,显著超越了现有的无需训练方法。SPECTRA 的实现已公开发布。
1.6. 原文链接
/files/papers/695011299c764da3f20e36ef/paper.pdf
发布状态:预印本(根据发布时间推断)。
2. 整体概括
2.1. 研究背景与动机
LLM 推理的计算效率问题: 大型语言模型(LLM)在生成长序列时,由于其自回归解码 (Autoregressive Decoding) 特性,每次只能生成一个词元 (Token)。这种逐词元生成的方式导致生成时间与序列长度呈线性关系,并且未能充分利用现代图形处理器(GPU)的并行处理能力,从而造成推理的计算昂贵 (Computationally Expensive) 和耗时 (Time-consuming)。
推测解码 (Speculative Decoding) 的局限性: 推测解码 (Speculative Decoding) 作为一种有前景的解决方案被提出,它通过“猜测-验证”(guess-and-verify)的范式来加速推理。然而,现有方法存在以下挑战:
- 基于训练的方法 (Training-based Methods): 这类方法通常需要一个较小的草稿模型 (Draft Model) 来预测多个词元,或以特定方式训练原始
LLM自身(自推测解码 (Self-speculative Decoding))。这些方法需要大量的计算资源进行额外训练,并可能降低原始模型的性能或通用性。 - 无需训练的方法 (Training-free Methods): 这类方法旨在避免额外训练,通过特定机制从
LLM预测中直接生成推测词元,或依赖外部信息源。然而,由于猜测质量有限,它们通常只能提供有限的速度提升。
本文的切入点:
SPECTRA 正是为了解决上述局限性而提出。它旨在开发一种无需训练或修改原始 LLM 的推测解码框架,从而提高猜测的质量和数量,最终实现显著的推理加速。
2.2. 核心贡献/主要发现
SPECTRA 框架的核心贡献和主要发现可以总结如下:
- 提出
SPECTRA框架: 引入了一个新颖的、无需训练 (Training-free) 且无需修改原始LLM(No Modification to Original LLM) 的推测解码 (Speculative Decoding) 框架。这使得它成为一个即插即用 (Plug-and-play) 的解决方案,易于部署。 - 优化内部推测 (
SPECTRA-CORE): 提出了SPECTRA-CORE模块,它通过高效利用LLM预测的词元分布 (Token Distribution) 来生成高质量的猜测。该模块采用多级N-gram存储(包括前向和后向字典)进行双向搜索 (Bi-directional Search),以动态生成变长猜测。同时,它优化了候选池 (Candidate Pool) 来持续更新N-gram字典,确保广泛的词元覆盖。 - 优化外部推测 (
SPECTRA-RETRIEVAL): 提出了SPECTRA-RETRIEVAL模块,它通过困惑度精炼语料库 (Corpus Refinement by Perplexity) 的方式,从外部知识源中选择高质量的相关文本,从而生成更有效的猜测。这一优化解决了以往外部推测方法与其它推测解码方法集成困难的问题(例如搜索时间开销过大)。 - 显著的性能提升:
SPECTRA在结合内部和外部推测技术后,在多种基准测试(包括多轮对话、代码生成和数学推理)和LLM架构(Llama 2、Llama 3和CodeLlama,模型大小从 7B 到 70B)上实现了高达 4.08 倍的加速比 (Speedup Ratio),显著优于现有的无需训练 (Training-free) 推测解码方法。 - 保持输出质量: 作为一种无损加速 (Lossless Acceleration) 方法,
SPECTRA能够完全保留原始LLM的输出分布和生成质量,无论是贪婪解码 (Greedy Decoding) 还是采样解码 (Sampling Decoding)。 - 公开发布代码: 实现了
SPECTRA并公开了其代码,促进了社区对LLM推理加速的研究和应用。
3. 预备知识与相关工作
3.1. 基础概念
3.1.1. 大语言模型 (Large Language Models, LLMs)
LLM 是具有数亿到数千亿甚至更多参数的深度学习模型,通常基于 Transformer 架构。它们在大量文本数据上进行预训练,能够理解和生成人类语言,并执行各种自然语言处理任务,如文本生成、摘要、翻译和问答。
3.1.2. 自回归解码 (Autoregressive Decoding)
自回归解码 (Autoregressive Decoding) 是 LLM 默认的文本生成方式。在这种模式下,模型会根据当前已生成的文本和输入提示 (Prompt) 来预测下一个词元(Token)。这个过程是顺序进行的,每次只生成一个词元,然后将这个新生成的词元添加到输入序列中,作为预测下一个词元的上下文。
- 工作原理:
给定一个输入序列 ,
LLM计算生成下一个词元的概率分布 。 对于贪婪采样 (Greedy Sampling),下一个词元 被选择为概率最高的词元: 这个过程重复进行,直到生成结束词元或达到最大序列长度。 - 效率瓶颈: 由于每个词元的生成都需要一次完整的模型前向传播,因此生成时间与输出序列长度呈线性关系,导致效率低下,尤其是在生成长文本时。
3.1.3. 推测解码 (Speculative Decoding)
推测解码 (Speculative Decoding) 是一种旨在加速 LLM 推理的无损 (Lossless) 方法。它的核心思想是“猜测-验证” (Guess-and-Verify) 范式。
- 工作原理:
- 猜测阶段 (Guessing Phase): 一个更小、更快的草稿模型 (Draft Model)(或原始
LLM通过特定机制)会提前预测(“猜测”)多个未来的词元,形成一个草稿序列 (Draft Sequence)。 - 验证阶段 (Verification Phase): 原始的、大型的
LLM会并行地验证这些预测的词元。这意味着LLM可以一次性处理草稿序列中的多个词元,而不是逐个处理。 - 接受/拒绝 (Accept/Reject): 模型会检查草稿序列中的词元是否与它自己生成的词元相匹配。匹配的词元会被接受,不匹配的词元及其后续词元将被拒绝,然后
LLM会从被拒绝词元处开始,以正常方式生成正确的词元。
- 猜测阶段 (Guessing Phase): 一个更小、更快的草稿模型 (Draft Model)(或原始
- 加速原理: 通过并行验证多个词元,推测解码 (Speculative Decoding) 减少了所需的
LLM前向传播次数,从而显著加速了生成过程。
3.1.4. N-gram
N-gram 是文本中连续 个词元(Token)的序列。
- 应用: 在自然语言处理中,
N-gram广泛用于语言模型、文本预测和模式识别。例如,在一个N-gram语言模型中,下一个词元的概率是基于前面N-1个词元来预测的。 - 在
SPECTRA中的应用:SPECTRA使用N-gram字典来存储和检索词元序列,以生成高质量的推测词元。
3.1.5. 困惑度 (Perplexity, PPL)
困惑度 (Perplexity) 是衡量一个概率分布(通常是语言模型)对样本或事件预测效果好坏的指标。
- 概念定义: 困惑度 (Perplexity) 量化了模型在给定文本序列时,平均每个词元的不确定性或“惊讶”程度。困惑度 (Perplexity) 越低,表示模型对文本的预测能力越强,即文本序列与模型自身的概率分布越匹配。
- 数学公式: 给定一个文本序列 和一个语言模型 ,其困惑度 (Perplexity) 计算如下:
- 符号解释:
- :一个长度为 的文本序列。
- :语言模型 在给定前 个词元 的条件下,预测第 个词元 的概率。
- :对数概率。
\sum_{i=1}^{t} \log P_M(u_i \mid u_{<i}):序列中所有词元对数概率之和。-\frac{1}{t} \sum_{i=1}^{t} \log P_M(u_i \mid u_{<i}):平均负对数似然(也称为交叉熵)。- :指数函数。
- 在
SPECTRA中的应用:SPECTRA-RETRIEVAL利用 困惑度 (Perplexity) 来过滤外部语料库,选择那些与目标LLM预测最一致、质量最高的文本片段来构建猜测源。
3.1.6. 注意力机制 (Attention Mechanism) 和 FlashAttention
注意力机制 (Attention Mechanism) 是 Transformer 模型的关键组成部分,它允许模型在处理序列时,对输入序列的不同部分赋予不同的权重,从而捕获长距离依赖关系。
- FlashAttention: 是一种优化注意力机制 (Attention Mechanism) 计算的方法,特别是在处理长序列时。它通过减少对高带宽内存 (High Bandwidth Memory, HBM) 的访问次数,以及优化计算过程,显著提高了注意力机制 (Attention Mechanism) 的计算效率和速度,尤其在
GPU上。 - 在
SPECTRA中的应用:SPECTRA利用了 FlashAttention 来加速其验证步骤,特别是当并行验证多个推测词元时,能够更有效地利用GPU的并行处理能力。
3.2. 前人工作
论文在“相关工作 (Related Works)”和“引言 (Introduction)”中提及了多种 LLM 推理加速技术和推测解码 (Speculative Decoding) 方法。
3.2.1. 通用 LLM 推理优化策略
这些方法旨在降低每次前向传播 (Forward Pass) 的计算负载,但通常会牺牲一部分模型性能。
- 量化 (Quantization): 将模型权重和激活值从高精度(如
FP32)降低到低精度(如Int8、Int4),减少内存占用和计算量 (Liu et al., 2024b; Lin et al., 2024; Zhao et al., 2024; Park et al., 2024)。 - 剪枝 (Pruning): 移除模型中不重要或冗余的参数,减少模型大小和计算量 (Ma et al., 2023; Xia et al., 2023; Sun et al., 2023a; Le et al., 2025)。
- 知识蒸馏 (Knowledge Distillation): 使用大型模型的知识训练一个更小的模型,使其在保持性能的同时提高推理速度 (Gu et al., 2024; Friha et al., 2024; Zhang et al., 2024b)。
- 局限性: 这些方法通常会引入一定程度的模型性能下降 (Degradation),需要在效率和质量之间进行权衡。
3.2.2. 基于训练的推测解码 (Training-based Speculative Decoding)
这类方法通过训练一个辅助模型或修改原始模型的训练方式来生成推测词元。
- 草稿模型 (Draft Model): 使用一个更小、更快的
LLM作为草稿模型 (Draft Model) 来预测多个未来的词元,然后由大型LLM验证 (Chen et al., 2023; Leviathan et al., 2023; Miao et al., 2024; Sun et al., 2023b; Zhou et al., 2024; Cai et al., 2024)。 - 自推测解码 (Self-speculative Decoding): 通过特殊训练使原始
LLM自身能够预测多个词元 (Elhoushi et al., 2024; Liu et al., 2024a; Yang et al., 2024; Zhang et al., 2024a; Li et al., 2024b)。 - 局限性: 需要额外的训练,计算资源消耗大,并且可能影响原始模型的能力 (Capabilities) 或通用性 (Generalizability)。
3.2.3. 无需训练的推测解码 (Training-free Speculative Decoding)
这类方法无需额外训练,直接利用现有模型或外部信息源来生成推测词元,使其更具实用性 (Practicality) 和即插即用 (Plug-and-play) 特性。
- 基于
LLM预测的方法:Lookahead Decoding(Fu et al., 2024): 这种方法通过分析LLM的概率分布来推测后续词元,并使用特殊的注意力掩码 (Attention Mask) 来并行验证。Adaptive N-gram(ANPD) (Ou et al., 2024): 利用自适应的N-gram结构来生成推测词元。Jacobi-like parallel decoding(Santilli et al., 2023): 通过缓解左-右依赖关系来并行生成和验证多个候选词元。
- 基于检索的方法 (Retrieval-based Methods):
REST(He et al., 2024): 使用数据存储 (Datastore) 索引已观测到的前缀 (Prefixes),以检索猜测序列。- 其他类似方法 (Yang et al., 2023; Li et al., 2024a)。
- 局限性: 论文指出,这些方法的加速比 (Speedup Gain) 往往有限,主要因为猜测的质量不够高。特别是基于检索的方法,其搜索时间可能会抵消加速效果,并且难以与其他推测解码方法有效集成。
3.3. 技术演进
LLM 推理加速的技术演进大致可分为三个阶段:
- 早期优化: 专注于单个模型的前向传播效率,通过量化 (Quantization)、剪枝 (Pruning)、知识蒸馏 (Knowledge Distillation) 等技术减少计算量。这些方法通常伴随着模型精度或能力的损失。
- 基于训练的推测解码: 引入草稿模型 (Draft Model) 或自推测 (Self-speculative) 机制,通过提前预测和并行验证来加速生成。这些方法有效,但引入了额外的训练成本和模型管理复杂性。
- 无需训练的推测解码(本研究关注点): 旨在消除训练成本,直接利用现有
LLM的特性或外部知识源来生成高质量猜测。这是为了在不改变原始模型、不增加训练负担的情况下,实现即插即用的加速。SPECTRA正是这一演进方向上的重要一步,通过优化内部和外部猜测机制,显著提升了无需训练方法的性能上限。
3.4. 差异化分析
SPECTRA 与现有无需训练 (Training-free) 推测解码方法的主要区别和创新点在于:
- 综合优化内部与外部猜测:
SPECTRA是首个将内部 (Internal)LLM预测分布与外部 (External) 精炼知识源相结合,并进行深度优化的框架。以往的方法通常侧重于其中之一。 SPECTRA-CORE的创新:- 多级 N-gram 存储与双向搜索:
SPECTRA-CORE利用前向和后向N-gram字典进行双向搜索 (Bi-directional Search),这比Lookahead等方法中使用的单一方向猜测更为灵活和高效。它能够生成变长猜测 (Variable-length Guesses),平衡猜测的质量和数量。 - 候选池动态更新: 引入候选池 (Candidate Pool) 和基于随机性的词元选择机制 (Token Selection Mechanism) ( 参数),确保
N-gram字典能够动态更新并具有更广的词元覆盖率,解决了仅凭高概率词元可能导致字典稀疏的问题。 - 子 N-gram 包含:
SPECTRA-CORE不仅添加完整的N-gram,还将子序列添加到字典中,显著提高了字典的覆盖率 (Coverage) 和猜测质量。
- 多级 N-gram 存储与双向搜索:
SPECTRA-RETRIEVAL的创新:- 困惑度精炼 (Perplexity Refinement):
SPECTRA-RETRIEVAL通过计算目标LLM的困惑度 (Perplexity) 来筛选外部语料库,只保留高质量、与模型预测一致的文本片段。这解决了REST等方法可能因外部猜测质量不高而导致速度提升有限的问题。 - 高效集成: 这种精炼机制使得外部猜测能够高效地与
SPECTRA-CORE集成,通过限制外部知识库的大小和确保高质量,避免了搜索时间抵消加速效果的问题。论文指出,简单地将Lookahead和REST结合会导致性能显著下降,凸显了SPECTRA优化集成策略的重要性。
- 困惑度精炼 (Perplexity Refinement):
- 无损加速和即插即用: 与基于训练的方法相比,
SPECTRA实现了无损加速 (Lossless Acceleration),且不需要修改原始LLM或进行额外训练,是真正的即插即用 (Plug-and-play) 解决方案。
4. 方法论
4.1. 方法原理
SPECTRA 的核心思想是通过内部知识 (Internal Knowledge) 和外部知识 (External Knowledge) 的协同优化,以无损 (Lossless) 的方式加速 LLM 的推测解码 (Speculative Decoding) 过程。它包含两个主要模块:SPECTRA-CORE 负责从 LLM 自身的词元分布 (Token Distribution) 中提取高质量的猜测;SPECTRA-RETRIEVAL 则从经过困惑度 (Perplexity) 精炼的外部语料库中获取额外的高质量猜测。这两个模块可以独立工作,也可以高效地结合使用,以最大化加速效果。整个框架旨在提高猜测的接受率 (Acceptance Rate) 和每个解码步骤中接受的词元数量,从而减少所需的总解码步骤,实现显著的加速。
4.2. 核心方法详解
SPECTRA 的解码过程由 Algorithm 1 描述,它融合了 SPECTRA-CORE 和可选的 SPECTRA-RETRIEVAL 模块。
以下是 SPECTRA 解码过程的详细分解:
4.2.1. SPECTRA-CORE 模块
SPECTRA-CORE 模块主要包含一个 N-gram 存储(N-gram Storage)和一个候选池 (Candidate Pool)。
4.2.1.1. N-gram 存储与候选池初始化
在 Algorithm 1 的第 1-4 行,系统会初始化 N-gram 存储和候选池 (Candidate Pool)。
N-gram存储: 维护两个字典:- 前向字典 (Forward Dictionary) : 初始为空 。它将一个词元映射到一个序列列表(即以该词元开头的所有后续序列)。
- 后向字典 (Backward Dictionary) : 初始为空 。它将一个序列映射到单个词元(即作为该序列后续的下一个词元)。
- 候选池 (Candidate Pool) : 包含 个序列,记为 。每个序列的长度为 ,其中 表示第 个序列中的第 个词元。初始时,这些词元也可能为空或随机填充。
4.2.1.2. 双向搜索获取猜测 (Bi-directional Search for Guesses)
在每个时间步 (从 的当前长度 开始),SPECTRA 通过双向搜索 (Bi-directional Search) 生成 个猜测序列 (Algorithm 1, 行 6-17)。
- 前向搜索 (Forward Search)(优先数量):
Algorithm 1, 行 7:利用当前已生成序列的最后一个词元 作为键,在前向字典 中搜索,获取以 开头的猜测序列。这部分猜测 旨在提供更多的猜测数量。- 其直觉是,如果 频繁出现在训练数据或已生成的序列中,它可能引导出多种合理的后续序列。
- 后向搜索 (Backward Search)(优先质量):
Algorithm 1, 行 8-14:通过迭代地使用后向字典 ,一次预测一个词元来构建高质量的猜测序列 。这个过程会重复直到达到期望的序列长度 。- 具体而言,从当前序列的末尾开始,向后查找以当前已构建序列为前缀的下一个词元。例如,如果已生成序列为 ,则从 中搜索以 为前缀的下一个词元 。然后,搜索以 为前缀的下一个词元 ,以此类推,直到构建一个长度为 的序列。
Algorithm 1, 行 11:。这里 表示当前序列的一个片段, 是已经构建的猜测前缀。这确保了猜测的质量,因为它基于模型过去见过的强关联序列。- 这种双向搜索结合了数量和质量的优点,生成多样且高质量的猜测。
4.2.1.3. 预测候选词元 (Predict Tokens for Candidate Pool)
在进行验证之前,LLM 会进行一次前向传播 (Forward Pass)。这次前向传播不仅用于验证猜测,还会同时获取用于更新候选池 (Candidate Pool) 的词元分布(Algorithm 1, 行 25-34)。
- 获取分布:
LLM会并行计算所有必要的词元分布 。 - 选择新词元: 对于候选池 (Candidate Pool) 中的每个序列 ,需要预测其下一个词元 。
- 直观方法是选择概率最高的词元。然而,为了增加前向字典 的覆盖率 (Coverage),
SPECTRA引入了基于随机性 (Randomness-based) 的机制。 Algorithm 1, 行 28-31:随机抽取 。- 如果 ( 是一个超参数,默认为 0.1),则选择不在 中的概率最高的词元。这鼓励模型探索新的
N-gram,即使它们的概率可能略低,以扩大字典的覆盖范围。 - 否则,选择概率最高的词元,无论其是否在 中。
- 如果 ( 是一个超参数,默认为 0.1),则选择不在 中的概率最高的词元。这鼓励模型探索新的
Algorithm 1, 行 43:在每个时间步结束时,候选池 (Candidate Pool) 中的所有序列都向左移动一个词元:。这样 变空,准备在下一个时间步被预测。这个机制使候选池 (Candidate Pool) 能够不断更新,并为N-gram字典提供新鲜的N-gram。
- 直观方法是选择概率最高的词元。然而,为了增加前向字典 的覆盖率 (Coverage),
4.2.1.4. 更新 N-gram 字典 (Update N-gram Dictionaries)
在每个时间步结束时,候选池 (Candidate Pool) 中的词元被用来更新 N-gram 字典 和 (Algorithm 1, 行 35-41)。
- 子 N-gram 更新: 与以往只添加完整
N-gram的方法不同,SPECTRA认为子序列也可能在后续生成中出现。因此,它添加了N-gram中的所有子序列。Algorithm 1, 行 38-39:对于候选池 (Candidate Pool) 中每个序列 的每个子序列,将其添加到 。例如, 会追加 。Algorithm 1, 行 38-39:同时,更新 ,将序列的前半部分映射到其后一个词元。例如, 映射到 。- 这种更新策略增加了字典的覆盖率和猜测质量。
4.2.2. SPECTRA-RETRIEVAL 模块 (可选集成)
SPECTRA-RETRIEVAL 模块旨在从外部知识源中获取高质量猜测,并与 SPECTRA-CORE 高效集成。
4.2.2.1. 困惑度精炼语料库 (Corpus Refinement by Perplexity)
- 外部知识源构建: 处理一个文本语料库,并将其索引到一个支持快速前缀搜索的数据结构中,例如Trie (Trie) 树。
- 质量筛选: 观察到随机选择的语料文本可能会限制加速效果,
SPECTRA-RETRIEVAL提出通过困惑度 (Perplexity) 对语料库进行精炼。- 使用目标
LLM计算语料库中所有文本序列的困惑度 (Perplexity)。 - 选择困惑度 (Perplexity) 最低的文本片段,因为这些片段与
LLM的预测最一致,最有可能产生高质量的猜测。 - 利用这些精炼后的文本构建Trie (Trie) 结构。
- 使用目标
4.2.2.2. 与 SPECTRA-CORE 集成 (Integration with SPECTRA-CORE)
Algorithm 1, 行 16:在生成猜测的步骤中,SPECTRA-RETRIEVAL产生的猜测 会被添加到SPECTRA-CORE生成的猜测 中。- 优先级: 由于
SPECTRA-CORE产生的内部猜测通常具有更高的接受率,SPECTRA会优先处理内部猜测,如果猜测数量限制 尚未达到,再添加外部猜测。 - 高效性: 通过困惑度 (Perplexity) 精炼,
SPECTRA-RETRIEVAL限制了外部知识源的大小并确保了其高质量,从而避免了因外部猜测搜索时间过长或质量不佳而抵消加速效果的问题,实现了与SPECTRA-CORE的无缝集成。
4.2.3. 并行前向传播与验证 (Parallel Forward Pass and Verification)
SPECTRA 的一个关键优化是所有必要的分布(用于预测候选词元和验证猜测)都在 LLM 的单次前向传播 (Single Forward Pass) 中并行获取(Algorithm 1, 行 19;Figure 2)。
-
特殊注意力掩码 (Specially Designed Attention Mask): 这通过一个特殊的注意力掩码 (Attention Mask) 实现,该掩码指定了词元之间允许的交互。例如, 词元只关注 、 和输入。
-
验证:
Algorithm 1, 行 20-22:获取分布后,会执行验证步骤。根据采样方法(贪婪解码 (Greedy Decoding) 或采样解码 (Sampling Decoding)),选择相应的验证函数 (VerificationFunction)。验证函数会检查所有猜测,找到拥有最多正确预测词元的序列,并返回被接受的词元hits。 -
Algorithm 1, 行 23-24:将接受的词元添加到序列 中,并更新当前序列长度 。接下来详细介绍贪婪验证和采样验证的算法。
4.2.3.1. 贪婪验证 (Greedy Verification)
Algorithm 3 详细描述了 SPECTRA 中的贪婪验证 (Greedy Verification) 过程。
输入:
- 序列 :当前已生成的词元序列。
- 模型 :目标
LLM。 - 猜测 :一系列预测的猜测序列,其中 。
输出:
- :被接受的词元序列。
函数 GREEDYVERIFICATION 步骤:
- 初始化:
D ← ∅:用于存储LLM输出的概率分布。V ← G:用于存储当前的猜测序列,初始化为所有输入的猜测序列 。
- 获取初始分布:
- 对于每个猜测序列 (
Algorithm 3, 行 4-6):- 计算并存储 的分布。这里的 是在给定 和 的前缀下,模型预测的下一个词元。这个步骤实际上是在
LLM的单次前向传播 (Forward Pass) 中完成的,用于获取所有猜测序列中每个词元在每个位置的条件概率分布。
- 计算并存储 的分布。这里的 是在给定 和 的前缀下,模型预测的下一个词元。这个步骤实际上是在
- 对于每个猜测序列 (
- 迭代验证猜测:
- 对于每个可能的猜测位置 (从 1 到
N-1,其中 是最大N-gram长度)(Algorithm 3, 行 7-35):j ← 1:当前要验证的猜测的索引。is_accept ← 0:标志位,表示是否已接受当前位置的词元。P ← D[1]_i:获取第一个猜测序列在当前位置 的概率分布(这里的D[1]_i表示从所有猜测中选择第一个有效猜测的第 个词元的分布,实际上这部分逻辑在原文中描述为并行验证,可能在实际实现中是更复杂的树形验证)。- 循环验证当前位置的多个猜测:
- (
Algorithm 3, 行 11-28):遍历当前有效的猜测序列 。- :获取第 个猜测序列在当前位置 的词元。
- 如果 被接受: (
Algorithm 3, 行 13):- 将 添加到接受词元序列 中:。
- 设置
is_accept ← 1。 - 更新有效猜测和分布: 创建新的有效猜测列表
V_new和分布列表D_new。只保留那些在当前位置 也预测为 的猜测序列及其分布(Algorithm 3, 行 17-23)。这表示只有与当前接受词元一致的猜测序列才能继续被验证。 - 更新
V ← V_new,D ← D_new。 - 跳出内层
while循环,进入下一个位置的验证。
- 如果 被拒绝:
else(Algorithm 3, 行 25):- 尝试验证下一个猜测序列:。
- (
- 处理当前位置的验证结果:
if is_accept(Algorithm 3, 行 29-30):如果当前位置的词元被接受,则继续验证下一个位置。else(Algorithm 3, 行 31-33):如果所有猜测在当前位置都被拒绝:- 强制生成一个词元:
o.append(argmax P)。 - 跳出外层
for循环,结束验证。这意味着从这个点开始,将回退到自回归解码 (Autoregressive Decoding)。
- 强制生成一个词元:
- 对于每个可能的猜测位置 (从 1 到
- 处理最后一个词元(如果所有猜测都被接受):
if is_accept(Algorithm 3, 行 36-37):如果所有猜测序列都被完全接受,并且没有提前结束,则将最后一个猜测位置的词元(即argmax D[1]_N)添加到 中。
- 返回接受的词元序列 。
4.2.3.2. 采样验证 (Sample Verification)
Algorithm 4 详细描述了 SPECTRA 中的采样验证 (Sample Verification) 过程。与贪婪验证 (Greedy Verification) 的主要区别在于,它使用采样 (Sampling) 来决定是否接受词元,并相应地调整概率分布。
输入:
- 序列 :当前已生成的词元序列。
- 模型 :目标
LLM。 - 猜测 :一系列预测的猜测序列,其中 。
输出:
- :被接受的词元序列。
函数 SAMPLEVERIFICaTION 步骤:
-
初始化: 与贪婪验证 (Greedy Verification) 类似。
D ← ∅:用于存储LLM输出的概率分布。V ← G:用于存储当前的猜测序列,初始化为所有输入的猜测序列 。
-
获取初始分布: 与贪婪验证 (Greedy Verification) 类似。
- 对于每个猜测序列 ,计算并存储 的分布。
-
迭代验证猜测:
- 对于每个可能的猜测位置 (从 1 到
N-1)(Algorithm 4, 行 7-39):j ← 1:当前要验证的猜测的索引。is_accept ← 0:标志位,表示是否已接受当前位置的词元。- :获取第 个猜测序列在当前位置 的概率分布。
- 循环验证当前位置的多个猜测:
- (
Algorithm 4, 行 11-31):- :获取第 个猜测序列在当前位置 的词元。
sample r ∼ U(0, 1):从均匀分布中随机抽取一个值 。- 如果 被接受: (
Algorithm 4, 行 14):- 将 添加到接受词元序列 中:。
- 设置
is_accept ← 1。 - 更新有效猜测和分布: 与贪婪验证 (Greedy Verification) 类似,只保留那些在当前位置 也预测为 的猜测序列及其分布。
- 更新
V ← V_new,D ← D_new。 - 跳出内层
while循环。
- 如果 被拒绝:
else(Algorithm 4, 行 26):- 将当前词元 的概率设置为 0:。
- 归一化 (Normalize) 概率分布:。这确保了在排除了被拒绝的词元后,剩余词元的概率和仍为 1。
- 尝试验证下一个猜测序列:。
- (
- 处理当前位置的验证结果:
if is_accept(Algorithm 4, 行 32-33):如果当前位置的词元被接受,则继续验证下一个位置。else(Algorithm 4, 行 34-38):如果所有猜测在当前位置都被拒绝:- 从当前归一化后的分布 中采样 (Sample) 一个词元:。
- 将采样的词元添加到 中:。
- 跳出外层
for循环,结束验证。
- 对于每个可能的猜测位置 (从 1 到
-
处理最后一个词元(如果所有猜测都被接受):
if is_accept(Algorithm 4, 行 40-41):如果所有猜测序列都被完全接受,并且没有提前结束,则从最后一个猜测位置的分布中采样 (Sample) 一个词元(即 )并添加到 中。
-
返回接受的词元序列 。
Algorithm 2提供了更通用的推测解码 (Speculative Decoding) 框架,它概括了猜测、并行验证和词元接受的流程。Algorithm 3和Algorithm 4是Algorithm 2中“验证”步骤的具体实现,分别针对贪婪采样 (Greedy Sampling) 和采样 (Sampling)。
Algorithm 2: 具有贪婪采样的推测解码
输入:
- 序列
- 模型
- 最大
N-gram大小 - 候选池 (Candidate Pool) 大小
- 最大猜测数
- 最大新词元数
- 精炼阈值
输出:
- :生成的序列。
函数 SPECTRA_DECODING 步骤:
- 初始化:
S_fwd ← ∅S_bwd ← ∅- 初始化候选池 (Candidate Pool) 中的词元 。
- :当前生成词元的起始索引。
- 主循环: (
Algorithm 1, 行 5-44):循环直到生成目标数量的词元。- 获取猜测:
- :从前向字典中获取以最后一个已知词元 开头的猜测。
- :用于构建后向猜测。
- :构建变长猜测。
- :
- :从后向字典中构建高质量的猜测 。
- :一旦找到值就停止。
- :
G.append(u):将构建的 添加到猜测列表。G ← G ⊕ G_retrieve:检索集成 (Retrieval Integration) (可选)。将SPECTRA-RETRIEVAL的猜测添加到猜测列表。- :确保猜测数量不超过最大限制 。
- 前向传播与验证:
- :在
LLM中并行获取所有必要的概率分布。 - :调用适当的验证函数(
Greedy verify或Sampling verify)来验证猜测。 x ← x ⊕ hits:将接受的词元hits添加到当前序列 中。t ← t + size(hits):更新当前序列长度。
- :在
- 预测候选词元:
- :对于候选池 (Candidate Pool) 中的每个序列。
r ∼ Uniform[0, 1]:随机采样。- :获取预测下一个词元的概率分布。
- :如果随机数大于阈值 。
- :选择概率最高的词元。
else:否则。- :选择概率最高的词元。
- :对于候选池 (Candidate Pool) 中的每个序列。
- 更新 N-gram 字典:
- :对于候选池 (Candidate Pool) 中的每个序列。
- :
- :更新前向字典。
- :更新后向字典。
- :
- :候选池 (Candidate Pool) 中的序列向左移动。
- :对于候选池 (Candidate Pool) 中的每个序列。
- 获取猜测:
- 返回生成的序列。
5. 实验设置
5.1. 数据集
实验评估了 SPECTRA 在多种生成任务上的性能,涵盖对话、数学推理和代码生成。
- LLM 模型:
LLaMA-2-Chat:7B, 13B, 70B 版本 (Touvron et al., 2023)。CodeLlama:7B, 13B 版本 (Rozière et al., 2024)。LLaMA-3-Instruct:8B, 70B 版本 (Dubey et al., 2024)。 所有模型检查点 (Checkpoints) 均来自官方或Hugging Face仓库,未进行微调或修改。
- 任务数据集:
- 多轮对话 (Multi-turn Conversation):
MT-Bench(Zheng et al., 2023)。 - 数学推理 (Mathematical Reasoning):
GSM8K(Cobbe et al., 2021)。 - 代码生成 (Code Generation):
HumanEval(Chen et al., 2021),MBPP(Austin et al., 2021),ClassEval(Du et al., 2023)。
- 多轮对话 (Multi-turn Conversation):
SPECTRA-RETRIEVAL的外部语料库来源:- 对话任务 (
MT-Bench): 从UltraChat数据集 (Ding et al., 2023) 中收集约 100k 个困惑度 (Perplexity) 最低的示例。 - 代码任务 (
HumanEval,MBPP): 从TheStack(Kocetkov et al., 2023) 中选择 100k 个困惑度 (Perplexity) 最低的代码片段。
- 对话任务 (
5.2. 评估指标
SPECTRA 是一种无损加速 (Lossless Acceleration) 方法,因此生成质量与原始 LLM 保持一致。评估主要关注加速性能和效率。
5.2.1. 加速比 (Speedup Ratio)
- 概念定义:
加速比 (Speedup Ratio)是SPECTRA方法相对于标准自回归解码 (Autoregressive Decoding) 的速度提升倍数。它衡量了在相同任务和输出质量下,SPECTRA能够缩短多少生成时间。数值越大,表示加速效果越好。 - 数学公式:
- 符号解释:
- :使用标准自回归解码 (Autoregressive Decoding) 生成相同序列所需的总时间。
- :使用
SPECTRA推测解码 (Speculative Decoding) 生成相同序列所需的总时间。
5.2.2. 压缩比 (Compression Ratio)
- 概念定义:
压缩比 (Compression Ratio)是生成相同序列长度所需的自回归步骤 (Autoregressive Steps) 总数与SPECTRA推测解码步骤 (Speculative Decoding Steps) 总数之比。它是一个与具体硬件配置无关的指标,反映了SPECTRA每个解码步骤平均能“压缩”多少个词元 (Token)。数值越大,表示每次推测解码迭代接受的词元越多,效率越高。 - 数学公式:
- 符号解释:
- :使用标准自回归解码 (Autoregressive Decoding) 生成相同长度序列所需的总步骤数。
- :使用
SPECTRA推测解码 (Speculative Decoding) 生成相同长度序列所需的总步骤数。
5.2.3. 微观吞吐量 (Micro Throughput, Mic-TP)
- 概念定义:
微观吞吐量 (Mic-TP)计算为生成的词元 (Token) 总数除以总耗时。它反映了系统在整个生成过程中平均每秒处理的词元数量。 - 数学公式:
- 符号解释:
- :在整个生成过程中生成的词元总数。
- :整个生成过程的总耗时。
5.2.4. 宏观吞吐量 (Macro Throughput, Mac-TP)
- 概念定义:
宏观吞吐量 (Mac-TP)计算为每个生成步骤中词元处理速率 (Token Processing Rates) 的平均值。它更关注生成过程中的瞬时效率。 - 数学公式:
- 符号解释:
- :在第 个生成步骤中接受或生成的词元数量。
- :完成第 个生成步骤所需的时间。
5.2.5. ROUGE 分数 (ROUGE Scores)
ROUGE (Recall-Oriented Understudy for Gisting Evaluation) 是一组用于评估文本摘要和机器翻译质量的指标,通过比较模型生成的文本与参考文本之间的重叠来计算。
ROUGE-1: 基于单个词元(unigram)的重叠。ROUGE-2: 基于两个连续词元(bigram)的重叠。ROUGE-L: 基于最长公共子序列(Longest Common Subsequence, LCS)。- 概念定义: 这些指标衡量生成文本的连贯性、信息完整性和与参考文本的语义相似度。在采样解码 (Sampling Decoding) 设置下,
ROUGE分数用于验证SPECTRA是否能保持与原始模型相当的生成质量。
5.3. 对比基线
论文将 SPECTRA 与以下无需训练 (Training-free) 的推测解码 (Speculative Decoding) 方法进行比较:
- 标准自回归解码 (Standard Autoregressive Decoding): 作为所有加速性能的基准,其加速比 (Speedup Ratio) 定义为 。
Adaptive N-gram(ANPD) (Ou et al., 2024): 一种利用自适应N-gram结构来生成推测词元 (Token) 的方法。REST(Retrieval-Based Speculative Decoding) (He et al., 2024): 一种基于检索的推测解码方法,通过预先构建的数据存储 (Datastore) 来查找猜测序列。Lookahead(Fu et al., 2024): 通过分析LLM的概率分布来推测后续词元 (Token),并使用特殊注意力掩码 (Attention Mask) 并行验证的方法。
5.4. 实现细节
- 框架和库:
PyTorch 2.1.0和Hugging Face transformers库 (版本 4.36.2)。 - 模型精度:
- 7B 和 13B 模型:使用 16 位浮点精度 (FP16),并预分配键值缓存 (Key-Value Cache)。
- 70B 模型:主要结果报告为 8 位量化 (Int8) 精度,附录中也提供了
FP16精度下的评估。
- 硬件:
- 大多数实验在一块
NVIDIA A100 GPU(80GB 内存) 上进行。 - 为了分析硬件可扩展性 (Scalability),还在
RTX 3090、RTX 8000、A40和A6000等GPU上进行了测试。 - 对于
FP16精度下超出单GPU内存限制的最大模型(70B),通过Hugging Face的流水线并行 (Pipeline Parallelism) 在多块GPU(2x, 4x 或 8x H100)上进行分布式计算。
- 大多数实验在一块
- 超参数:
SPECTRA:N-gram设置:默认使用 5-gram。- 候选池 (Candidate Pool) 大小 :每个键维护 15 个序列,用于生成新的
N-gram记录。 - 精炼阈值 (Refine Threshold) :默认设置为 0.1,用于词元选择 (Token Selection) 中的随机性机制,以增加前向字典的覆盖率。
- 最大猜测数 :每个推测解码步骤最多允许 15 个猜测。内部猜测具有优先级,如果未达到猜测限制,则添加外部猜测。
- 外部查询:使用
Trie结构进行快速前缀查询,设计类似于REST。
- 基线方法 (
Lookahead,REST,ANPD): 均使用其原始论文中概述的默认设置和超参数 (Hyperparameters)。
- 其他设置:
- 所有加速比 (Speedup) 和吞吐量 (Throughput) 指标均在批处理大小 (Batch Size) 为 1 的情况下计算。
- 代码生成任务的最大生成长度通常为 512 词元 (Token)。
- 对话任务 (
MT-Bench,GSM8K) 的最大生成长度为 1024 词元 (Token),或在模型输出序列结束词元 (End-of-Sequence Token) 时提前停止。 - 所有随机种子均设置为 0。
6. 实验结果与分析
6.1. 核心结果分析
6.1.1. 整体性能
以下是原文 Table 1 的结果:
| Model | Method | Classeval | GSM8K | Humaneval | MBPP | MTBench | AVG | ||||||
| Speedup | τ | Speedup | τ | Speedup | τ | Speedup | τ | Speedup | τ | Speedup | τ | ||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Greedy (temperature=0) | |||||||||||||
| CL-13B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.94 | 2.52 | 2.81 | 3.72 | 2.08 | 2.50 | 2.71 | 3.58 | 2.61 | 3.41 | 2.43 | 3.15 | |
| Lookahead | 2.25 | 3.61 | 2.99 | 4.24 | 2.30 | 3.16 | 2.91 | 4.44 | 2.59 | 4.04 | 2.57 | 3.90 | |
| REST | 1.28 | 2.14 | 0.93 | 1.54 | 1.58 | 2.31 | 0.85 | 1.40 | 0.94 | 1.53 | 1.12 | 1.78 | |
| SPECTRA (Ours) | 4.06 | 4.65 | 3.75 | 4.95 | 2.63 | 3.95 | 3.29 | 4.46 | 2.65 | 4.40 | 3.28 | 4.48 | |
| CL-7B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 2.30 | 3.21 | 2.68 | 3.78 | 2.16 | 2.90 | 3.35 | 3.83 | 3.23 | 4.27 | 2.74 | 3.60 | |
| Lookahead | 2.59 | 3.66 | 2.99 | 3.83 | 2.50 | 3.05 | 3.56 | 4.45 | 3.70 | 4.52 | 3.07 | 3.90 | |
| REST | 1.45 | 2.22 | 0.91 | 1.39 | 1.70 | 2.34 | 0.96 | 1.45 | 1.02 | 1.44 | 1.21 | 1.77 | |
| SPECTRA (Ours) | 2.70 | 4.10 | 3.33 | 4.59 | 2.96 | 3.90 | 4.52 | 4.90 | 3.70 | 4.52 | 3.44 | 4.40 | |
| L2-13B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.36 | 1.47 | 1.78 | 1.72 | 1.34 | 1.61 | 1.12 | 1.32 | 1.17 | 1.37 | 1.35 | 1.50 | |
| Lookahead | 1.81 | 2.01 | 1.46 | 1.87 | 1.73 | 2.32 | 1.38 | 1.69 | 1.51 | 2.04 | 1.58 | 1.99 | |
| REST | 1.22 | 1.46 | 0.94 | 1.25 | 1.14 | 1.94 | 0.95 | 1.44 | 1.10 | 1.83 | 1.07 | 1.58 | |
| SPECTRA (Ours) | 2.00 | 3.24 | 1.83 | 2.62 | 1.96 | 2.91 | 1.63 | 2.24 | 1.75 | 2.60 | 1.83 | 2.72 | |
| L2-70B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.33 | 1.37 | 1.30 | 2.05 | 1.25 | 1.82 | 1.21 | 1.82 | 1.25 | 1.90 | 1.27 | 1.79 | |
| Lookahead | 1.69 | 2.59 | 1.63 | 2.10 | 1.54 | 2.02 | 1.56 | 2.10 | 1.49 | 1.94 | 1.58 | 2.15 | |
| REST | 1.01 | 1.46 | 1.01 | 1.46 | 0.97 | 1.42 | 0.95 | 1.41 | 0.99 | 1.44 | 0.99 | 1.44 | |
| SPECTRA (Ours) | 1.77 | 2.67 | 1.86 | 2.69 | 1.87 | 2.57 | 1.94 | 2.62 | 1.93 | 2.52 | 1.87 | 2.61 | |
| L2-7B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.41 | 1.50 | 1.76 | 1.70 | 1.23 | 1.47 | 1.23 | 1.46 | 1.33 | 1.51 | 1.39 | 1.53 | |
| Lookahead | 2.16 | 2.40 | 1.50 | 1.54 | 1.47 | 1.58 | 1.83 | 1.88 | 1.43 | 1.45 | 1.68 | 1.77 | |
| REST | 1.07 | 1.23 | 0.82 | 1.14 | 0.94 | 1.29 | 0.93 | 1.23 | 0.94 | 1.23 | 0.94 | 1.22 | |
| SPECTRA (Ours) | 2.62 | 2.91 | 2.10 | 2.14 | 2.56 | 2.84 | 1.94 | 1.94 | 2.06 | 2.13 | 2.26 | 2.39 | |
| L3-70B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.51 | 1.76 | 1.54 | 1.86 | 1.50 | 1.83 | 1.46 | 1.76 | 1.45 | 1.76 | 1.49 | 1.79 | |
| Lookahead | 2.00 | 2.49 | 1.96 | 2.46 | 1.83 | 2.23 | 1.88 | 2.36 | 1.94 | 2.40 | 1.92 | 2.39 | |
| REST | 0.99 | 1.44 | 0.95 | 1.39 | 0.92 | 1.37 | 0.94 | 1.39 | 0.95 | 1.40 | 0.95 | 1.40 | |
| SPECTRA (Ours) | 2.49 | 3.49 | 2.49 | 3.44 | 2.09 | 2.82 | 2.46 | 3.36 | 2.46 | 3.35 | 2.39 | 3.29 | |
| L3-8B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 2.59 | 3.86 | 2.83 | 3.71 | 1.83 | 2.49 | 3.36 | 3.58 | 3.36 | 3.58 | 2.79 | 3.44 | |
| Lookahead | 3.49 | 4.57 | 3.44 | 4.61 | 2.49 | 3.36 | 3.58 | 4.65 | 3.58 | 4.65 | 3.32 | 4.37 | |
| REST | 1.14 | 1.23 | 1.14 | 1.23 | 1.09 | 1.17 | 1.10 | 1.17 | 1.10 | 1.17 | 1.11 | 1.19 | |
| SPECTRA (Ours) | 4.06 | 4.95 | 4.08 | 4.97 | 2.82 | 3.90 | 4.65 | 5.20 | 4.65 | 5.20 | 4.07 | 4.84 | |
| Sampling (temperature=1.0) | |||||||||||||
| CL-13B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.15 | 1.38 | 1.07 | 1.31 | 1.05 | 1.30 | 1.00 | 1.23 | 1.00 | 1.23 | 1.05 | 1.29 | |
| Lookahead | 1.24 | 2.31 | 1.34 | 2.89 | 1.29 | 2.33 | 1.42 | 3.48 | 1.42 | 3.48 | 1.34 | 2.90 | |
| REST | 1.14 | 1.87 | 0.82 | 1.35 | 1.27 | 1.96 | 0.84 | 1.39 | 0.93 | 1.50 | 1.00 | 1.61 | |
| SPECTRA (Ours) | 1.68 | 2.22 | 1.20 | 1.75 | 1.65 | 2.12 | 1.15 | 1.70 | 2.37 | 3.80 | 1.61 | 2.32 | |
| CL-7B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.29 | 1.50 | 1.19 | 1.41 | 1.33 | 1.81 | 1.19 | 1.43 | 0.97 | 1.44 | 1.19 | 1.52 | |
| Lookahead | 1.81 | 2.25 | 1.35 | 1.73 | 1.68 | 2.12 | 1.33 | 1.72 | 2.78 | 3.94 | 1.79 | 2.35 | |
| REST | 1.20 | 1.86 | 0.88 | 1.33 | 1.33 | 1.98 | 0.91 | 1.40 | 1.17 | 1.35 | 1.10 | 1.58 | |
| SPECTRA (Ours) | 1.54 | 2.03 | 1.25 | 1.46 | 1.43 | 1.81 | 1.19 | 1.43 | 2.72 | 3.50 | 1.63 | 2.05 | |
| L2-13B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.31 | 1.52 | 1.24 | 1.46 | 1.17 | 1.40 | 1.03 | 1.22 | 1.12 | 1.88 | 1.17 | 1.49 | |
| Lookahead | 1.78 | 2.22 | 1.32 | 1.69 | 1.48 | 2.00 | 1.18 | 1.48 | 1.74 | 2.57 | 1.50 | 1.99 | |
| REST | 1.26 | 1.96 | 0.93 | 1.45 | 1.19 | 1.88 | 0.92 | 1.44 | 1.12 | 1.88 | 1.08 | 1.72 | |
| SPECTRA (Ours) | 1.70 | 2.75 | 1.55 | 2.23 | 1.69 | 2.59 | 1.34 | 1.89 | 1.74 | 2.57 | 1.60 | 2.41 | |
| L2-7B | Autoregressive | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 | 1.00 |
| ANPD | 1.31 | 1.51 | 1.34 | 1.48 | 1.28 | 1.46 | 1.10 | 1.22 | 1.25 | 1.36 | 1.26 | 1.41 | |
| Lookahead | 1.78 | 2.30 | 1.51 | 1.76 | 1.72 | 2.09 | 1.25 | 1.49 | 1.68 | 2.02 | 1.59 | 1.93 | |
| REST | 1.26 | 2.03 | 0.99 | 1.27 | 1.21 | 1.88 | 0.94 | 1.25 | 1.21 | 1.88 | 1.12 | 1.66 | |
| SPECTRA (Ours) | 1.70 | 2.67 | 1.46 | 1.96 | 1.69 | 2.59 | 1.34 | 1.89 | 1.74 | 2.57 | 1.59 | 2.39 | |
分析:
- 最高加速比: 在贪婪解码 (Greedy Decoding) 模式下,
SPECTRA持续实现最高的加速,在Llama3-8B上的MBPP任务中达到高达 的加速比。这表明SPECTRA的猜测机制能够非常有效地减少所需的前向传播次数。 - 对小模型效果显著: 对于 7B 模型,
SPECTRA通常能实现超过 的加速,这突出显示了其多词元压缩 (Multi-token Compression) 的有效性。 - 模型大小与加速: 13B 模型的加速比略低( 至 ),而 70B 模型的加速比(约 至 )相对较小。这可能与大模型的计算复杂度和其固有的推理瓶颈有关,但
SPECTRA仍然能提供显著优于基线的加速。 - 稳健性:
SPECTRA在各种模型和数据集上都表现出稳健的性能,始终超越其他无需训练 (Training-free) 的推测解码 (Speculative Decoding) 方法,这归因于其优化的猜测质量 (Guess Quality) 和接受率 (Acceptance Rate)。 REST的局限性:REST在许多任务上表现不佳,甚至在GSM8K和MBPP上出现加速比低于 的情况(例如CL-13B和CL-7B),这可能是因为其外部检索机制的开销抵消了潜在的加速。- 压缩比:
SPECTRA在所有测试数据集和LLM上均实现了最高的平均压缩比 (Compression Ratio)。每次草稿-验证 (Draft-and-Verify) 迭代通常产生 2.1-4.8 个词元 (Token),几乎是REST接受长度的两倍。这直接解释了其更高的加速比。
6.1.2. 采样解码加速
- 在采样解码 (Sampling Decoding) 模式下(),
SPECTRA相对于标准自回归解码 (Autoregressive Decoding) 仍能提供约 至 的加速。 - 尽管加速效果不如贪婪解码 (Greedy Decoding) 显著,但这是预期的结果,因为采样解码 (Sampling Decoding) 的验证阶段 (Verification Phase) 接受率较低,与早期研究结果一致。这表明
SPECTRA也能在更具随机性的生成场景下提供价值。
6.2. 消融实验/参数分析
以下是原文 Table 2 的结果:
| GSM8K | MTBench | |||
| Method | Speedup | τ | Speedup | τ |
| REST | 1.01 | 1.47 | 1.25 | 1.90 |
| Lookahead | 1.66 | 1.93 | 1.73 | 2.05 |
| Lookahead + REST | 1.08 | 1.47 | 1.27 | 1.90 |
| SPECTRA's ablation | ||||
| CORE Module | 2.04 | 2.50 | 1.92 | 2.35 |
| - w/o Forward Dict | 1.50 | 1.68 | 1.20 | 1.37 |
| - w/o Backward Dict | 1.94 | 2.21 | 1.74 | 2.12 |
| - w/o Sub-Ngram | 1.95 | 2.34 | 1.75 | 2.18 |
| RETRIEVAL Module | 1.18 | 1.31 | 1.24 | 1.50 |
| - w/o PPL refine | 1.16 | 1.29 | 1.20 | 1.45 |
| SPECTRA (ours) | 2.14 | 2.64 | 2.02 | 2.59 |
分析:
SPECTRA各组件的贡献:CORE Module(完整版)在GSM8K上达到了 的加速比 (Speedup) 和2.50的压缩比 (Compression Ratio)。- 移除前向字典 (Forward Dict) 后,性能显著下降到 (
GSM8K),表明前向字典 (Forward Dict) 对生成猜测数量至关重要。 - 移除后向字典 (Backward Dict) 后,性能略微下降到 (
GSM8K),表明后向字典 (Backward Dict) 在提升猜测质量方面发挥作用。 - 移除子 N-gram (Sub-Ngram) 更新机制后,性能降至 (
GSM8K),这强调了包含子序列对字典覆盖率和猜测质量的重要性。 RETRIEVAL Module(独立运行)提供了 (GSM8K) 的加速。- 移除困惑度精炼 (PPL refine) 后,性能略有下降,这验证了困惑度精炼 (PPL refine) 在提升外部猜测质量方面的有效性。
- 组合策略的重要性:
Lookahead与REST的朴素组合 (Naive Combination) 性能( 在GSM8K上)显著低于Lookahead单独表现(),甚至低于REST单独表现。这有力地证明了简单地堆叠 (Stacking Naively) 两种技术是无效的,必须采用精心设计的集成策略,正如SPECTRA所做的那样。 - 整体优势: 完整的
SPECTRA框架在GSM8K上达到了 的加速比 (Speedup) 和2.64的压缩比 (Compression Ratio),优于任何独立组件或朴素组合,突出了所有组件协同工作的重要性。
6.2.1. 猜测来源的优先级
以下是原文 Figure 3 的结果:

分析:
- 内部猜测接受率更高:
SPECTRA-CORE模块(通过前向字典 (Forward Dictionary) 和后向字典 (Backward Dictionary))生成的猜测比SPECTRA-RETRIEVAL模块(通过外部知识源)获得的猜测具有更高的接受率 (Acceptance Rate)。 - 优先级策略: 基于这一发现,
SPECTRA在Algorithm 1中优先使用SPECTRA-CORE的内部猜测,如果仍有猜测预算 (Guess Budget) 未用完,再补充SPECTRA-RETRIEVAL的外部猜测。这个优先级策略能够最大化每个推测解码 (Speculative Decoding) 步骤中被接受的词元 (Token) 数量。
6.2.2. FlashAttention 的影响
以下是原文 Figure 4 的结果:

分析:
- 普遍加速:
FlashAttention的启用普遍提高了所有方法的加速比 (Speedup),尽管程度不同。 SPECTRA受益最大:SPECTRA在GSM8K和MTBench上获得了额外的 加速比 (Speedup) 提升,这比其他方法更为显著。- 原因:
FlashAttention能够更有效地利用推测解码 (Speculative Decoding) 的并行结构,通过减少注意力开销 (Attention Overheads)。由于SPECTRA提供了最长的验证分支 (Verification Branches)(即每次验证的词元数量最多),它从FlashAttention带来的更高效注意力计算 (Attention Computations) 中受益最大。
6.2.3. 词元接受率分析
以下是原文 Figure 6 的结果:

分析:
- 更少的解码步骤:
Figure 6展示了在不同数据集上,SPECTRA与其他方法相比,在更少的解码步骤内累积了更多的被接受词元 (Token)。SPECTRA的曲线明显更陡峭,例如在MT-Bench上,它比ANPD快了几乎两倍。 - 更高的接受率: 这种现象直接归因于
SPECTRA拥有更高的词元接受率 (Token Acceptance Rate)。这意味着在每次推测解码 (Speculative Decoding) 迭代中,SPECTRA能够成功验证并接受更多的猜测词元。 - 效率提升: 更高的词元接受率 (Token Acceptance Rate) 导致了更少的总解码迭代次数,从而显著提高了生成过程的效率和整体加速比。
6.3. 多 GPU 环境中的评估
以下是原文 Table 6 的结果:
| GPU & Model Setting | Method | MTBench | |||
| Mac-TP | Mic-TP | Speedup | τ | ||
|---|---|---|---|---|---|
| 1xH100 - Quantized Int8 | Autoregressive | 2.60 | 2.60 | 1.00 | 1.00 |
| SPECTRA | 6.32 | 6.22 | 2.43 | 2.51 | |
| 2xH100 - FP16 | Autoregressive | 14.81 | 14.70 | 1.00 | 1.00 |
| SPECTRA | 29.62 | 28.91 | 2.00 | 2.52 | |
| 4xH100 - FP16 | Autoregressive | 14.60 | 14.48 | 1.00 | 1.00 |
| SPECTRA | 29.67 | 28.89 | 2.03 | 2.52 | |
| 8xH100 - FP16 | Autoregressive | 14.39 | 14.28 | 1.00 | 1.00 |
| SPECTRA | 29.27 | 28.55 | 2.03 | 2.52 | |
分析:
- 稳健的可扩展性 (Scalability):
SPECTRA在多种多GPU配置下,对LLaMA-2-70B模型(FP16精度)实现了稳定的加速比,范围在 到 之间。同时,压缩比 (Compression Ratio) 保持稳定在 2.52 左右。这表明SPECTRA能够有效地扩展到大型模型和分布式推理场景,模型权重分区引入的额外开销很小,且推测验证 (Speculative Verification) 过程在跨 GPU 通信 (Inter-GPU Communication) 的情况下仍然保持高效。 - 量化设置下的表现: 即使在量化 (Quantized)
Int8单GPU(1xH100) 设置下,SPECTRA也能提供 的加速,优于标准自回归解码 (Autoregressive Decoding)。这验证了SPECTRA在内存受限部署中的实用性。
6.4. 生成质量验证
以下是原文 Table 7 的结果:
| Dataset | Method | ROUGE-1 | ROUGE-2 | ROUGE-L | Speedup | τ |
| CNN | Autoregressive | 9.77 | 0.39 | 7.20 | 1.00 | 1.00 |
| SPECTRA | 9.74 | 0.41 | 7.18 | 1.60 | 2.05 | |
| XSUM | Autoregressive | 18.12 | 4.36 | 12.43 | 1.00 | 1.00 |
| SPECTRA | 18.13 | 4.40 | 12.49 | 1.69 | 2.08 |
分析:
- 贪婪解码 (Greedy Decoding) 性能:
- 在
FP32精度下,SPECTRA贪婪解码 (Greedy Decoding) 产生的输出与Hugging Face的标准贪婪搜索 (Greedy Search) 完全相同。 - 在
FP16精度下,SPECTRA产生的差异(26 处不一致,共 160 个对话轮次)与Hugging Face原生贪婪搜索 (Greedy Search) 产生的差异(25 处不一致)相似。这表明SPECTRA在标准半精度推理库通常观察到的数值误差范围内,保持了输出分布。
- 在
- 采样解码 (Sampling Decoding) 性能:
- 在采样解码 (Sampling Decoding) 设置下(),
SPECTRA在CNN/DailyMail和XSum摘要数据集上的ROUGE-1、ROUGE-2和ROUGE-L分数与标准自回归采样 (Autoregressive Sampling) 几乎相同。 - 同时,
SPECTRA在这些任务上实现了显著的加速(CNN/DailyMail为 ,XSum为 ),且压缩比 (Compression Ratio) 分别为 2.05 和 2.08。
- 在采样解码 (Sampling Decoding) 设置下(),
- 无损加速结论: 这些结果一致证实,
SPECTRA实现了对LLM推理的无损加速 (Lossless Acceleration),无论是在贪婪解码 (Greedy Decoding) 还是采样解码 (Sampling Decoding) 模式下,都不会降低生成质量。
6.5. 详细吞吐量结果
以下是原文 Table 4 的结果:
| Classeval | GSM8K | Humaneval | MBPP | MTBench | |||||||
| Mac-TP | Mic-TP | Mac-TP | Mic-TP | Mac-TP | Mic-TP | Mac-TP | Mic-TP | Mac-TP | Mic-TP | ||
| Greedy (temperature=0) | |||||||||||
| CL-13B | Autoregressive | 30.85 | 30.85 | 32.03 | 32.03 | 32.35 | 32.35 | 32.07 | 32.07 | 30.69 | 30.63 |
| ANPD | 59.77 | 58.03 | 89.99 | 89.18 | 67.43 | 64.65 | 86.76 | 86.41 | 80.10 | 76.68 | |
| Lookahead | 69.28 | 68.62 | 89.73 | 89.00 | 74.33 | 73.23 | 93.38 | 92.80 | 79.38 | 78.67 | |
| REST | 39.53 | 37.73 | 29.93 | 29.47 | 51.15 | 47.49 | 27.41 | 27.39 | 28.92 | 27.18 | |
| SPECTRA (Ours) | 73.47 | 72.98 | 93.36 | 93.23 | 84.91 | 84.41 | 105.44 | 105.39 | 81.32 | 80.68 | |
| CL-7B | Autoregressive | 41.17 | 41.17 | 41.17 | 41.17 | 41.41 | 41.41 | 41.60 | 41.60 | 38.91 | 38.93 |
| ANPD | 94.76 | 93.02 | 132.26 | 131.30 | 89.26 | 87.13 | 131.35 | 130.99 | 130.41 | 126.64 | |
| Lookahead | 106.51 | 105.95 | 123.04 | 121.90 | 103.45 | 103.51 | 120.75 | 120.23 | 125.58 | 124.77 | |
| REST | 59.49 | 56.61 | 37.61 | 37.21 | 70.38 | 65.22 | 40.11 | 40.09 | 39.64 | 36.70 | |
| SPECTRA (Ours) | 111.09 | 110.68 | 137.24 | 136.86 | 122.54 | 122.41 | 148.32 | 148.07 | 143.98 | 144.32 | |
| L2-13B | Autoregressive | 31.85 | 31.56 | 32.40 | 32.43 | 32.27 | 32.27 | 32.19 | 32.19 | 31.93 | 31.78 |
| ANPD | 43.30 | 44.44 | 47.54 | 45.22 | 43.24 | 42.28 | 36.20 | 35.84 | 37.44 | 34.84 | |
| Lookahead | 57.49 | 58.94 | 47.44 | 47.62 | 55.76 | 55.58 | 44.41 | 44.15 | 48.11 | 46.62 | |
| REST | 38.81 | 37.74 | 30.36 | 30.22 | 40.47 | 39.70 | 30.70 | 30.67 | 36.39 | 37.02 | |
| SPECTRA (Ours) | 63.64 | 64.31 | 59.21 | 58.63 | 63.39 | 63.18 | 52.43 | 52.19 | 56.04 | 53.75 | |
| L2-70B | Autoregressive | 2.60 | 2.60 | 2.61 | 2.61 | 2.61 | 2.61 | 2.63 | 2.63 | 2.60 | 2.60 |
| ANPD | 4.72 | 4.80 | 4.25 | 4.10 | 4.85 | 4.76 | 3.07 | 3.07 | 3.47 | 3.30 | |
| Lookahead | 6.90 | 7.16 | 4.87 | 5.12 | 6.71 | 6.73 | 3.92 | 3.93 | 5.05 | 5.02 | |
| L2-7B | Autoregressive | 40.33 | 40.32 | 41.01 | 41.03 | 41.14 | 41.13 | 41.00 | 41.04 | 40.48 | 40.50 |
| ANPD | 65.54 | 68.10 | 62.40 | 59.38 | 63.27 | 59.98 | 48.94 | 47.67 | 52.47 | 50.06 | |
| Lookahead | 88.41 | 91.05 | 68.00 | 68.20 | 84.69 | 83.87 | 59.79 | 60.76 | 70.04 | 69.07 | |
| REST | 54.74 | 53.93 | 41.43 | 41.38 | 57.99 | 56.41 | 41.28 | 40.74 | 50.58 | 51.79 | |
| SPECTRA (Ours) | 96.88 | 98.75 | 86.51 | 85.50 | 98.77 | 98.38 | 72.39 | 73.22 | 81.93 | 79.20 | |
| L3-70B | Autoregressive | 2.58 | 2.57 | 2.58 | 2.58 | 2.59 | 2.59 | 2.59 | 2.59 | 2.55 | 2.55 |
| ANPD | 3.97 | 4.19 | 3.86 | 3.72 | 4.72 | 4.75 | 3.77 | 3.59 | 3.14 | 3.03 | |
| Lookahead | 6.17 | 6.47 | 3.99 | 3.96 | 6.63 | 6.75 | 3.70 | 3.66 | 4.49 | 4.53 | |
| SPECTRA (Ours) | 6.87 | 7.18 | 5.43 | 5.34 | 7.33 | 7.50 | 5.01 | 4.88 | 5.25 | 5.16 | |
| L3-8B | Autoregressive | 36.59 | 36.58 | 36.74 | 36.74 | 36.20 | 36.21 | 35.24 | 35.20 | 36.55 | 36.69 |
| ANPD | 77.21 | 78.76 | 141.89 | 141.36 | 66.31 | 65.57 | 118.47 | 112.95 | 41.77 | 40.20 | |
| Lookahead | 94.92 | 90.09 | 136.32 | 135.92 | 89.99 | 90.47 | 133.67 | 133.12 | 56.09 | 55.49 | |
| SPECTRA (Ours) | 103.61 | 105.88 | 142.89 | 142.72 | 92.86 | 93.16 | 143.80 | 142.72 | 61.69 | 60.22 | |
| Sampling (temperature=1.0) | |||||||||||
| CL-13B | Autoregressive | 30.90 | 30.64 | 31.38 | 31.37 | 31.24 | 31.39 | 31.46 | 31.45 | 30.71 | 30.67 |
| ANPD | 35.48 | 34.86 | 33.54 | 32.34 | 32.64 | 34.36 | 31.57 | 30.95 | 70.92 | 65.68 | |
| Lookahead | 42.54 | 40.74 | 33.79 | 32.49 | 40.25 | 42.17 | 32.02 | 31.19 | 71.50 | 68.46 | |
| REST | 35.15 | 33.22 | 25.67 | 25.24 | 39.58 | 38.49 | 26.43 | 25.89 | 28.41 | 26.69 | |
| SPECTRA (Ours) | 51.86 | 50.04 | 37.57 | 35.67 | 51.60 | 52.64 | 36.29 | 35.27 | 72.90 | 69.98 | |
| CL-7B | Autoregressive | 39.60 | 39.58 | 40.85 | 40.87 | 40.05 | 40.10 | 40.81 | 40.81 | 40.49 | 40.50 |
| ANPD | 50.89 | 51.76 | 47.44 | 46.68 | 44.14 | 46.34 | 45.86 | 45.81 | 112.29 | 103.57 | |
| Lookahead | 60.87 | 60.29 | 48.54 | 47.64 | 57.12 | 61.14 | 48.64 | 48.27 | 110.07 | 105.00 | |
| REST | 48.64 | 46.41 | 35.98 | 35.46 | 53.35 | 52.26 | 37.04 | 36.57 | 39.36 | 36.51 | |
| SPECTRA (Ours) | 71.70 | 71.78 | 55.24 | 52.81 | 67.27 | 69.20 | 54.48 | 52.91 | 112.43 | 108.49 | |
| L2-13B | Autoregressive | 31.23 | 31.17 | 31.44 | 31.47 | 31.41 | 31.42 | 32.02 | 32.06 | 31.67 | 31.59 |
| ANPD | 37.53 | 37.94 | 39.11 | 37.99 | 36.79 | 36.75 | 32.97 | 32.71 | 36.91 | 34.34 | |
| Lookahead | 47.59 | 47.35 | 41.60 | 41.76 | 46.33 | 46.51 | 37.82 | 37.82 | 47.35 | 45.48 | |
| REST | 36.78 | 36.17 | 29.33 | 29.25 | 37.46 | 36.71 | 29.38 | 29.28 | 35.50 | 36.21 | |
| SPECTRA (Ours) | 53.13 | 52.28 | 48.60 | 48.11 | 52.93 | 53.11 | 42.95 | 43.03 | 54.98 | 52.42 | |
| L2-7B | Autoregressive | 39.89 | 39.88 | 40.58 | 40.59 | 40.09 | 40.10 | 40.59 | 40.66 | 40.65 | 40.70 |
| ANPD | 52.14 | 52.78 | 54.23 | 52.90 | 51.40 | 50.97 | 44.73 | 43.77 | 50.92 | 48.24 | |
| Lookahead | 70.82 | 71.17 | 61.15 | 61.34 | 68.78 | 69.01 | 50.84 | 51.83 | 68.27 | 66.77 | |
| REST | 50.35 | 49.99 | 40.19 | 40.09 | 50.86 | 50.06 | 38.94 | 38.18 | 49.12 | 50.54 | |
| SPECTRA (Ours) | 78.46 | 78.74 | 72.13 | 71.68 | 81.71 | 81.76 | 59.77 | 60.09 | 80.21 | 77.00 | |
| L3-8B | Autoregressive | 35.75 | 35.76 | 35.16 | 35.17 | 36.01 | 36.02 | 36.05 | 36.07 | 35.39 | 35.48 |
| ANPD | 44.71 | 43.72 | 69.12 | 66.73 | 51.48 | 51.57 | 68.03 | 64.54 | 40.84 | 39.23 | |
| Lookahead | 53.05 | 50.57 | 72.68 | 69.11 | 64.59 | 63.79 | 71.88 | 68.90 | 55.46 | 53.74 | |
| SPECTRA (Ours) | 69.50 | 68.92 | 79.88 | 76.53 | 69.09 | 68.62 | 78.99 | 76.69 | 60.33 | 57.69 | |
分析:
-
SPECTRA的吞吐量优势:SPECTRA在所有模型、数据集和贪婪解码 (Greedy Decoding) 以及采样解码 (Sampling Decoding) 模式下,始终保持最高的宏观吞吐量 (Mac-TP) 和微观吞吐量 (Mic-TP)。例如,在CL-7B上,SPECTRA的Mic-TP普遍高于其他基线方法。 -
与其他加速方法对比:
SPECTRA的吞吐量 (Throughput) 明显高于自回归解码 (Autoregressive Decoding),并且在大多数情况下也优于ANPD和Lookahead。REST在吞吐量 (Throughput) 方面表现最差,尤其是在GSM8K和MBPP等任务上,甚至低于自回归解码 (Autoregressive Decoding),这再次证实了其外部检索带来的额外开销。 -
模型规模与吞吐量: 随着模型规模的增大(例如从 7B 到 70B),所有方法的吞吐量 (Throughput) 均显著下降,这是大模型固有的计算成本。但即使在 70B 模型上,
SPECTRA仍能提供最佳的吞吐量 (Throughput) 表现。以下是原文 Table 5 的结果:
GPU Method GSM8K MTBench Mac-TP Mic-TP Mac-TP Mic-TP A40 Autoregressive 32.66 32.66 32.14 31.66 Lookahead 48.59 48.73 49.13 47.96 SPECTRA 62.56 61.52 59.00 56.80 A6000 Autoregressive 39.15 39.17 38.78 38.24 Lookahead 58.13 58.30 58.84 57.40 SPECTRA 75.20 74.16 71.30 69.28 RTX8000 Autoregressive 34.03 34.27 34.21 34.02 Lookahead 45.25 45.42 45.73 44.16 SPECTRA 57.95 57.09 54.16 52.32 RTX3090 Autoregressive 40.67 40.76 41.17 41.22 Lookahead 53.69 53.75 53.51 52.09 SPECTRA 74.87 73.88 71.58 69.79
分析:
- 硬件兼容性:
SPECTRA在不同GPU类型(A40、A6000、RTX8000、RTX3090)上都保持了领先的吞吐量 (Throughput)。无论GPU的内存带宽和计算能力如何,SPECTRA都能提供比自回归解码 (Autoregressive Decoding) 和Lookahead更高的Mic-TP和Mac-TP。 - 对旧 GPU 的适用性: 即使在较旧的
GPU(如RTX3090或RTX8000)上,SPECTRA的领先优势仍得以保持,这表明其优化方法在不同硬件世代上都有效。在这些GPU上,Lookahead和SPECTRA之间的差距可能略有缩小,这可能是由于并行效率的差异,但SPECTRA始终保持领先。
7. 总结与思考
7.1. 结论总结
本文提出了 SPECTRA,一个新颖的无需训练 (Training-free) 框架,通过优化内部 (Internal) 和外部 (External) 推测 (Speculation) 来加速大语言模型 (LLM) 推理。
SPECTRA-CORE模块利用多级N-gram存储和双向搜索 (Bi-directional Search),并结合候选池 (Candidate Pool) 动态更新机制,高效地从LLM内部知识生成高质量猜测。SPECTRA-RETRIEVAL模块通过困惑度精炼 (Perplexity Refinement) 外部语料库,提供高质量的外部猜测,并能与SPECTRA-CORE无缝集成。- 在各种基准测试和
LLM架构上,SPECTRA实现了高达 的显著加速比,同时作为一种无损加速 (Lossless Acceleration) 方法,完全保留了原始模型的输出质量。 SPECTRA在不同GPU类型和多GPU环境中均表现出强大的稳健性 (Robustness) 和可扩展性 (Scalability),并且与FlashAttention等加速工具兼容,进一步提升性能。
7.2. 局限性与未来工作
论文作者指出了 SPECTRA 的以下局限性:
- 构建外部数据存储的成本 (Cost of Building External Datastores): 虽然
SPECTRA-CORE不依赖外部数据,但SPECTRA-RETRIEVAL需要从大型语料库中构建和索引一个庞大的外部数据存储 (Datastore)。这个过程可能非常耗时且占用大量内存,尤其是在数据更新频繁或存储受限的领域。虽然这种投资能带来显著加速,但并非普遍可行或具有成本效益。 - 有限的评估范围 (Limited Evaluation Scope): 实验主要集中在英语基准测试中的对话和代码生成任务,并使用了
LLaMA系列模型。虽然SPECTRA原则上适用于其他模型或语言,但特定领域 (Domain-specific) 的词元化 (Tokenization) 或特殊的文本结构可能会影响接受率 (Acceptance Rate) 和整体加速效果。未来工作需要评估SPECTRA在不同语言环境(例如低资源语言 (Low-resource Languages) 或专业技术文档)和更广泛的模型家族(超出LLaMA架构)中的通用性 (Generality),以确认和完善其适用性。
7.3. 个人启发与批判
7.3.1. 个人启发
- 无需训练的巨大优势:
SPECTRA再次强调了无需训练 (Training-free) 方法在LLM推理加速中的巨大实际价值。它规避了训练草稿模型 (Draft Model) 的高昂成本和模型管理复杂性,使得即插即用 (Plug-and-play) 成为可能,这对于快速迭代和部署至关重要。 - 内部与外部知识的巧妙结合:
SPECTRA成功地将LLM自身的词元分布 (Token Distribution) 知识与经过精炼的外部知识源相结合,实现了“1+1>2”的效果。SPECTRA-CORE通过双向 N-gram 字典 (Bi-directional N-gram Dictionaries) 动态生成高质量猜测,而SPECTRA-RETRIEVAL则通过困惑度过滤 (Perplexity Filtering) 确保外部知识的有效性,这种分而治之再合而用之的策略非常值得借鉴。 - 困惑度过滤的实用性: 使用困惑度 (Perplexity) 来筛选外部语料库是一个非常实用的方法。它利用了目标
LLM自身的语言建模能力来评估外部文本的“质量”或“相关性”,从而确保了外部猜测与模型本身的风格 (Style) 和内容 (Content) 保持一致,避免了引入低质量猜测而拖慢推理的情况。 - 工程优化细节: 论文在工程细节上做得非常出色,例如在单次前向传播 (Single Forward Pass) 中并行获取所有所需分布、利用特殊注意力掩码 (Special Attention Mask)、以及
FlashAttention的集成,都体现了对硬件特性和计算效率的深刻理解。
7.3.2. 批判
- 外部数据存储的维护挑战: 尽管论文承认了外部数据存储的成本,但其维护 (Maintenance) 和更新 (Update) 在动态变化的领域(如新闻、实时代码库)中仍是一个实际挑战。如何自动化和优化这个过程,确保
Trie结构始终反映最新、高质量的信息,是实际部署中需要进一步解决的问题。 - 参数的鲁棒性分析:
SPECTRA-CORE中引入的精炼阈值 (Refine Threshold) 用于平衡词元选择 (Token Selection) 中的探索性与贪婪性。论文将其默认为 0.1,但这个参数的最优值可能依赖于具体的模型、任务甚至生成阶段。缺乏对其敏感性和自适应调整 (Adaptive Adjustment) 机制的更深入分析,可能限制其在不同场景下的最佳性能。 - 多级 N-gram 的空间效率: 论文通过包含子
N-gram来提高字典覆盖率,但这可能导致N-gram字典的空间占用 (Space Consumption) 快速增长。尤其是在处理非常大的词汇表或非常长的N-gram时,字典的大小可能成为内存瓶颈。虽然这有助于猜测质量,但需要在内存效率 (Memory Efficiency) 方面进行进一步的权衡和优化。 - 验证效率的极限: 尽管
FlashAttention带来了显著提升,但推测解码 (Speculative Decoding) 仍然受到每次前向传播 (Forward Pass) 所能验证的词元数量上限的限制。对于需要生成极长序列的场景,即使是最高的压缩比 (Compression Ratio) 也可能无法满足极低延迟的要求。探索除了注意力机制 (Attention Mechanism) 优化之外,如何进一步提升验证步骤 (Verification Step) 的并行性和效率,仍是未来研究方向。 - 跨语言和模型泛化性的进一步验证: 论文提及了其在英语
LLaMA系列模型上的评估范围有限。未来的工作需要通过更广泛的实验来证实SPECTRA在非英语语言、不同词元化 (Tokenization) 方案、以及其他Transformer架构变体(例如循环神经网络 (Recurrent Neural Networks) 或状态空间模型 (State-Space Models))上的泛化性 (Generalizability) 和有效性。
相似论文推荐
基于向量语义检索推荐的相关论文。