https://github.com/snu-mllab/Context-Memory
https://janghyun1230.github.io/memory/
https://arxiv.org/abs/2312.03414
在在线场景中,上下文会随着时间的推移而不断累积。现有的上下文压缩方法主要关注固定上下文场景,但在动态变化的上下文中,它们可能效率较低且存在冗余。因此,作者提出了一种新颖的压缩上下文内存系统,可以在在线推理过程中以最小的内存和计算开销动态更新。
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]
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]
