一个低成本解决大模型多轮编码上下文开销过大的开源框架


        
          
https://github.com/snu-mllab/Context-Memory  
https://janghyun1230.github.io/memory/  
https://arxiv.org/abs/2312.03414  

      

picture.image

picture.image在在线场景中,上下文会随着时间的推移而不断累积。现有的上下文压缩方法主要关注固定上下文场景,但在动态变化的上下文中,它们可能效率较低且存在冗余。因此,作者提出了一种新颖的压缩上下文内存系统,可以在在线推理过程中以最小的内存和计算开销动态更新。

CCM方法包括两个主要部分:压缩过程和内存更新过程。在压缩过程中,通过引入一个轻量级适配器(lightweight adapter),使得语言模型能够在前向计算过程中构建压缩上下文内存。然后,在内存更新过程中,使用压缩结果动态更新上下文内存。这样,语言模型可以在减少内存和注意力操作的情况下执行推理。

通过在对话、个性化和多任务学习等不同数据集上的评估,作者证明了CCM方法在效率和性能方面优于现有的上下文压缩基线。具体来说,与使用完整上下文的方法相比,CCM方法在仅需1/5的上下文内存空间的情况下实现了相当的性能。此外,在内存受限的GPU上进行批处理时,这种增强的内存效率可显著提高语言模型的吞吐量。

README搬运

  • 我们的方法在LLM交互过程中动态创建上下文的压缩内存。
  • 我们的方法只需要训练一个用于压缩的条件LoRA。
  • 我们使用完全并行化的训练策略来进行循环压缩过程。
  • 我们在不同的应用中进行评估:对话、多任务ICL和个性化。

Demo: Interactive inference with compressed memory


        
          
python download.py --type model --dataset all  # Download adapters  
python interact.py -i -m llama-7b --eval_name [concat_recur/merge_recur]  

      

picture.image

training

我们的实验基本上在一张A100 GPU上运行。在DailyDialog的情况下,由于上下文长度较小,我们可以在一张RTX 3090 GPU上运行。


        
          
python run.py --train --dataset [all/metaicl/dialog] --model llama-7b --comp_type no  
  
python run.py --train --dataset [all/metaicl/dialog] --model llama-7b \  
    --load_path llama-7b-no \   
    --attn_type [concat_recur/merge_recur] --n_tok [# <COMP> tokens]  

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