由于自注意力机制的计算和内存开销随着序列长度的增加而呈二次方增长,以及生成过程中KV缓存的大量占用,长文本的处理一直是LLMs的一个难题。
为了解决这个问题,提出了一种离线学习长上下文的方法 LLoCO(Learning Long Contexts Offline) ,通过上下文压缩和领域内的参数高效微调(finetuning),使得LLM能够创建原始上下文的简洁表示,并在回答问题时高效地检索相关信息,最终将 4k token 的LLaMA2-7B模型的有效上下文窗口扩展到能够处理高达 128k tokens 。
常规大型语言模型(LLM,左图)与LLoCO(右图)的架构对比 。在常规LLM中,长文本上下文直接附加到提示(prompt)上。而在LLoCO中,长文本上下文首先通过上下文编码器。输出的摘要标记嵌入(summary token embeddings),它们被添加到LLM的提示前,比原始的标记嵌入短得多。
LLoCO通过以下三个阶段实现:
- 预处理:将文档压缩成“小抄”形式。
- 微调:使用LoRA对这些“小抄”进行分组微调。
- 服务:在模型服务阶段,使用标准的RAG检索器检索压缩后的文档和最相关的LoRA模块,并将它们应用于LLM进行推理。
LLoCO流程的服务阶段
通过在多个长文本问答数据集上的评估,证明了LLoCO在推理过程中使用比上下文学习少 30倍 的标记,同时实现了 7.62倍 的速度提升,显著降低了长文档问答的成本,使其成为处理长文本的有效解决方案。
在长文档问答数据集上的实验结果
。τ表示压缩比。对于使用检索的LLaMA2-7B-4k/32k模型,压缩比是通过将模型的上下文窗口限制(4k/32k)除以检索到的段落长度来获得的,该长度固定为2560个标记。
在LongBench上对 单文档(SingleDoc) 、 多文档(MultiDoc) 和 摘要(Summarization) 任务的评估结果。LLaMA-2-7B-4k/32k的数字取自官方LongBench仓库(THUDM,2023年)。
大海捞针评测对比,
所选文章(“干草堆”)以“玛丽……,一个温柔、时尚的女孩……”开头,与上下文相关的“针”被策划为“玛丽青少年时期最喜欢的时装设计师是可可·香奈儿。玛丽青少年时期最喜欢的时装设计师是谁?”
左侧 :在A100和A6000 GPU上,每个标记的端到端解码延迟(毫秒)。没有压缩的LLaMA2在处理A100上的64k和128k序列,以及A6000上的32k序列时会耗尽VRAM。 右侧 :在NarrativeQA数据集上对没有压缩的LLaMA2-7B-32k和LLoCO进行微调时,每秒处理的训练样本数。
LLoCO: Learning Long Contexts Offline
https://arxiv.org/pdf/2404.07979.pdf
https://github.com/jeffreysijuntan/lloco
推荐阅读
- • 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
- • 2024:ToB、Agent、多模态
- • TA们的RAG真正投产了吗?(上)
- • Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“ PaperAgent ”, 每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。