推测性解码(Predictive Decoding)是一种在自然语言处理(NLP)领域中使用的解码策略,特别是在机器翻译和文本生成任务中。它指的是在生成目标文本时,解码器会考虑之前已经生成的词或者短语,来预测接下来可能生成的词或短语。这种方法可以提高翻译或生成文本的流畅性和准确性。
推测性解码是一种用于大语言模型(LLM)推理加速的技术。
其主要思路是“先推测后验证”(Draft-then-Verify):在每个解码步,该算法首先高效地“推测”目标 LLM 未来多个解码步可能生成的 token,然后用目标 LLM 同时验证这些 token,通过验证的 token 作为当前解码步的解码结果。
如果“推测”足够准确,推测解码就可以在单个解码步并行生成多个 token,从而实现 LLM 推理加速。并且,使用目标 LLM 的验证过程可以在理论上保证解码结果和目标 LLM 自回归解码结果的完全一致。
一、解码过程
推测解码目的是在每个解码步骤中,先生成多个可能的 token,然后使用目标大语言模型并行地评估这些 token,以加快推理速度。
- 生成:
- 在每个解码步骤中,推测解码算法首先会生成多个可能的 token,作为对目标大语言模型输出内容的推测。生成的内容可以分为两类:独立生成(Independent Drafting)和自生成(Self-drafting)。
- 独立生成是指使用一个与目标大语言模型同系列的较小模型(例如 OPT-70B 可以用 OPT-125M 进行推测,T5-XXL 可以用 T5-small)来进行推测。这种方法可以直接利用现有的模型资源,无需额外训练。由于同系列模型具有相近的结构、分词方法、训练语料和流程,小模型本身与目标大语言模型存在一定的“行为相似性”,适合作为高效的推测模型。但这种方式需要在推测精度(即通过验证的 token 数量)和推测耗时之间进行权衡,一般来说,较大的推测模型能提高精度,但会增加耗时。
- 自生成则是利用目标大语言模型自身的信息来进行推测。例如,可以使用目标模型在前一步骤生成的 token 或者之前生成的部分序列来推测下一个或多个 token。
- 验证:
- 并行地验证近似模型生成的 token,以确保输出质量与目标大语言模型高度一致。这个过程确定了每一步可允许的 token 数量,是影响加速效果的重要因素。
- 常见的验证标准包括支持贪心解码和核采样等方法,以在确保质量的同时,让尽可能多的推测 token 通过验证,提高解码并行性。
生成和验证的子步骤会持续迭代,直到满足终止条件为止,例如解码出(EOS)token 或句子达到最大长度。此外,为了逐步提高 token 的接受度,还可以引入 token 的树验证算法。
为了提高推测准确性以加速推测解码,现有的工作还探索了各种知识提取(KD)策略,以使近似模型的输出内容与目标大语言模型的输出内容保持一致。例如分块解码首先采用序列级知识提取(Seq-KD)来进行模型对齐,用目标大语言模型生成的句子训练近似模型。
在实际应用中,需要根据具体情况选择合适的生成和验证方法,以及调整相关参数,以在加速推理的同时保证生成质量。同时,尽管推测解码可以在不损失生成效果的前提下显著提高推理速度,但也引出了一些需要进一步研究的关键问题,如如何更好地平衡推测准确性和生成效率,以及如何将推测解码与其他领先技术相结合等。
二、关键要素
- 相比于生成单一 token,LLM 并行计算额外引入的延迟很小,甚至可以忽略;
- “推测”的高效性和准确性:需要又快又准地“推测”LLM 未来多个解码步的生成结果,一般来说,用以推测的模型越大,推测精度越高(即通过验证的 token 越多),但推测阶段的耗时也可能越大,如何在两者之间达到平衡以获得较高的总体加速比是需要关注的问题;
- “验证”策略的选择:要在确保质量的同时,让尽可能多的“推测”token 通过验证,以提高解码并行性。
“推测”阶段(Drafting)的设计重点在于“推测精度(accuracy)”和“推测耗时(latency)”的权衡。其中一种“推测”思路是独立生成(Independent Drafting),即使用一个跟目标 LLM 同系列的较小模型进行“推测”,这样可以直接利用现有的模型资源,无需额外训练。由于同系列模型在结构、分词方法、训练语料和流程等方面相近,小模型本身与目标 LLM 之间存在一定的“行为相似性”,适合作为高效的“推测”模型。例如,可以用 OPT-125M 来推测加速 OPT-70B,用 T5-small 来推测 T5-XXL。
三、传统解码 vs 推测性解码
推测解码受到了学界和工业界的广泛关注,从2023年初至今涌现了许多相关的研究工作和工程项目。但该技术也引出了一些需要进一步研究的关键问题,例如如何权衡预测内容的准确性和生成效率,以及如何将推测解码与其他领先技术更好地结合等。
在传统的解码过程中,解码器通常是基于当前的上下文和模型的内部状态来选择下一个词。而推测性解码则在此基础上,会尝试预测并利用未来可能生成的词来影响当前的词选择。这种方法可以减少生成文本中的重复和不一致,提高整体的连贯性。
四、应用领域
自然语言处理、机器翻译、文本生成。
在自然语言处理任务中,它可用于加速语言模型的推理过程,提高处理效率,例如快速生成文本回复、文章创作等。在机器翻译任务中,能加快翻译模型的解码速度,实现更实时的翻译。对于文本生成任务,如故事创作、摘要生成等,可在不损失质量的前提下提高生成速度。
另外,推测解码的一些变体在特定任务中也表现出有效性。例如,有些学者认为它特别适合于模型输入和输出高度相似的任务,如语法纠错和检索增强生成。也有研究将这种范式应用于解决某些应用场景特有的延迟问题,从而实现推理加速。
总之,推测性解码技术为需要处理大量文本数据和实时交互的应用提供了一种加速推理的解决方案,有助于提高相关任务的执行效率和用户体验。但具体的应用效果还会受到多种因素的影响,如模型规模、数据特点、任务复杂度等。
推测性解码通常与注意力机制(Attention Mechanism)一起使用,通过关注源文本中的不同部分来生成更加准确和自然的目标文本。在某些情况下,推测性解码还可以结合外部知识,例如词汇表或语义信息,来进一步提高解码质量。