Decoding at the Speed of Thought: Harnessing Parallel Decoding of Lexical Units for LLMs
作者: Chenxi Sun, Hongzhi Zhang, Zijia Lin, Jingyuan Zhang, Fuzheng Zhang, Zhongyuan Wang, Bin Chen, Chengru Song, Di Zhang, Kun Gai, Deyi Xiong
分类: cs.CL, cs.AI
发布日期: 2024-05-24
备注: Accepted for publication at LREC-COLING 2024
🔗 代码/项目: GITHUB
💡 一句话要点
提出词汇单元解码LUD,加速LLM推理且不损失生成质量
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 并行解码 词汇单元解码 大型语言模型 推理加速 自然语言生成
📋 核心要点
- 现有LLM解码过程的顺序性限制了生成速度,难以满足实时应用的需求。
- LUD方法通过并行解码预训练模型能自信预测的连续token(词汇单元)来加速解码。
- 实验表明,LUD在不损失或仅损失少量质量的情况下,显著提升了自然语言生成和代码生成的解码速度。
📝 摘要(中文)
大型语言模型在自然语言理解和生成方面表现出卓越的能力。然而,它们的生成速度受到解码过程固有顺序性的限制,给实时应用带来了挑战。本文介绍了一种新颖的解码方法,即词汇单元解码(LUD),它以数据驱动的方式实现,在不牺牲输出质量的前提下加速解码过程。我们方法的核心在于观察到预训练语言模型可以自信地预测多个连续的token,形成一个 extit{词汇单元}的基础,其中这些连续的token可以并行解码。大量的实验验证了我们的方法在保持生成质量的同时,显著减少了解码时间,即在自然语言生成方面加速33%,且没有质量损失,在代码生成方面加速30%,质量损失可忽略不计,仅为3%。值得注意的是,LUD不需要辅助模型,也不需要改变现有的架构。它还可以与其他解码加速方法集成,从而实现更显著的推理效率提升。我们认为LUD的基本原理可以为未来的语言模型定义一种新的解码范式,增强它们在更广泛应用中的适用性。
🔬 方法详解
问题定义:现有大型语言模型(LLM)的解码过程是顺序的,即一次生成一个token。这种顺序性严重限制了生成速度,尤其是在需要快速响应的实时应用中,成为了一个瓶颈。现有的加速方法通常需要引入额外的模型或修改模型结构,增加了复杂性和计算成本。
核心思路:该论文的核心思路是利用LLM本身的能力,发现并利用模型能够自信预测的连续token序列,即“词汇单元”。这些词汇单元可以并行解码,从而减少总的解码时间。这种方法不需要额外的模型或对现有模型结构的修改,具有很强的通用性和易用性。
技术框架:LUD方法的整体流程如下:1. 词汇单元识别:在解码过程中,模型预测下一个token的同时,也预测后续几个token的可能性。如果模型对一个连续的token序列的预测置信度都高于某个阈值,则将该序列识别为一个词汇单元。2. 并行解码:识别出的词汇单元中的所有token可以并行解码,无需等待前一个token生成完毕。3. 序列拼接:将并行解码得到的token序列拼接回完整的生成序列。整个过程与现有的解码流程无缝衔接,易于集成。
关键创新:LUD的关键创新在于提出了“词汇单元”的概念,并将其应用于LLM的并行解码。与现有方法相比,LUD不需要额外的模型或修改模型结构,而是充分利用了LLM本身的能力。此外,LUD可以与其他解码加速方法集成,进一步提升解码效率。
关键设计:LUD的关键设计包括:1. 置信度阈值:用于判断模型是否能够自信预测一个token序列。阈值的选择会影响词汇单元的长度和解码速度。2. 词汇单元长度:词汇单元的最大长度需要根据模型的预测能力和计算资源进行调整。3. 并行解码策略:可以选择不同的并行解码策略,例如同步解码或异步解码。
🖼️ 关键图片
📊 实验亮点
实验结果表明,LUD在自然语言生成任务上实现了33%的加速,且没有质量损失。在代码生成任务上,LUD实现了30%的加速,质量损失仅为3%。这些结果表明,LUD能够在显著提升解码速度的同时,保持甚至略微提升生成质量。此外,LUD可以与其他解码加速方法集成,进一步提升解码效率。
🎯 应用场景
LUD方法可以广泛应用于需要快速文本生成的场景,例如实时对话系统、机器翻译、代码自动生成等。通过提高LLM的推理速度,LUD可以显著提升用户体验,并降低部署成本。未来,LUD有望成为LLM的标准解码方法,推动LLM在更多领域的应用。
📄 摘要(原文)
Large language models have demonstrated exceptional capability in natural language understanding and generation. However, their generation speed is limited by the inherently sequential nature of their decoding process, posing challenges for real-time applications. This paper introduces Lexical Unit Decoding (LUD), a novel decoding methodology implemented in a data-driven manner, accelerating the decoding process without sacrificing output quality. The core of our approach is the observation that a pre-trained language model can confidently predict multiple contiguous tokens, forming the basis for a \textit{lexical unit}, in which these contiguous tokens could be decoded in parallel. Extensive experiments validate that our method substantially reduces decoding time while maintaining generation quality, i.e., 33\% speed up on natural language generation with no quality loss, and 30\% speed up on code generation with a negligible quality loss of 3\%. Distinctively, LUD requires no auxiliary models and does not require changes to existing architectures. It can also be integrated with other decoding acceleration methods, thus achieving an even more pronounced inference efficiency boost. We posit that the foundational principles of LUD could define a new decoding paradigm for future language models, enhancing their applicability for a broader spectrum of applications. All codes are be publicly available at https://github.com/tjunlp-lab/Lexical-Unit-Decoding-LUD-. Keywords: Parallel Decoding, Lexical Unit Decoding, Large Language Model