APAR:一个新的解码加速策略(LLM可以进行自动并行解码)


        
          
https://arxiv.org/pdf/2401.06761.pdf  

      

picture.image

这篇文章介绍了一种名为Auto-Parallel Auto-Regressive (APAR)的解码方法,它允许大型语言模型(LLMs)自主地结构化解码过程,并动态创建并行解码线程,同时不损害生成质量。APAR的核心思想是利用LLMs在文本结构理解方面的能力,通过在包含层次结构的一般领域数据上进行指令微调,使LLMs能够独立规划其生成过程并执行APAR生成,显著减少了生成步骤的数量。

APAR的关键组成部分包括:

  1. 层次结构的后训练(Post-training with Hierarchical Text Structures) :通过在包含层次结构的文本数据上进行微调,LLMs学会了识别和利用这些结构来生成文本。这些结构被称为段落节点(paragraph nodes),每个节点表示生成响应的一个组成部分。

picture.image

  1. 解码算法的设计(Decoding Algorithm Design) :APAR的解码算法支持并行解码操作,包括在生成过程中维护层次结构,并将其恢复为线性序列。这涉及到两个关键的控制标记:
  • 分叉标识符(Fork Identifier) :用于指示响应中的可并行结构。当模型检测到接下来的内容可以与同一级别的下一个段落一起解码时,会输出一个[Fork]标记。
  • 子标识符(Child Identifier) :总是跟随[Fork],并表示接下来的内容是前一个内容引导的子段落的开始。

picture.image

  1. 解码过程(Decoding Procedures) :APAR解码算法从用户提示序列开始,构建一个序列组,每个序列组对应一个段落树。在解码过程中,模型会根据[Fork]标记来分叉生成线程,并在生成完成后释放相应的KV缓存。

APAR的三个关键特性使其在推理延迟、吞吐量和内存消耗方面表现优越:

  1. 并行解码结构减少延迟 :通过训练,模型能够自动发现并行结构,并相应地发出并行生成线程,从而减少生成步骤。
  2. 早期释放子KV缓存减少内存消耗 :在APAR中,一旦一个分叉的序列(即生成线程)完成生成,就可以立即释放该序列的KV缓存,而剩余部分的生成可以继续进行。
  3. 减少注意力长度节省计算 :在APAR中,新生成的标记只关注其到根节点路径上的标记,这减少了生成过程中的注意力计算。

通过这些方法,APAR能够在保持生成质量的同时,显著提高生成速度和效率。在实验中,APAR在内存受限场景下能够实现平均2倍的速度提升,并且在与投机解码(speculative decoding)结合时,速度提升可以达到4倍。此外,APAR还减少了KV缓存消耗和注意力计算,从而在高吞吐量场景中实现了20-70%的吞吐量提升和20-35%的延迟降低。

0
0
0
0
评论
未登录
暂无评论