Training-Free Long-Context Scaling of Large Language Models

相关链接:arxiv github office

关键字:大型语言模型双块注意力上下文窗口扩展无需训练放缩长距离依赖

摘要

大型语言模型 (LLMs) 在处理和生成连贯文本时的能力显著减弱,当输入代币数量超出它们的预训练长度时。考虑到使用更长序列来微调大规模模型的昂贵开销,我们提出双块注意力 (DCA),它使得LLAMA2 70B能够支持超过100k代币的上下文窗口,而不需要持续训练。通过将长序列的注意力计算分解为基于块的模块,DCA能够有效地捕获相同块内代币之间(Intra-Chunk)和不同块之间(Inter-Chunk)的相对位置信息,并且与Flash Attention无缝整合。除了其令人印象深刻的推断能力之外,DCA在实际长上下文任务上的表现可媲美或甚至优于微调后的模型。向比其他专有模型,我们无需训练的70B模型达到了gpt-3.5-16k性能的94%,表明它是一个可行的开源替代品。本文中使用的所有代码和数据均已开源。

核心方法

核心方法包含三部分,分别是:

  • Intra-Chunk Attention: 用于计算相同块内词元的注意力分数。
  • Inter-Chunk Attention: 用于计算不同块之间词元的注意力分数。
  • Successive-Chunk Attention: 用于计算相邻块之间词元的注意力,并保持局部性。

具体细节如下:

  1. Intra-Chunk Attention:在同一块内执行注意力分数计算时,将序列分为n段,使块内的位置索引不超过块大小s。

  2. Inter-Chunk Attention:为了聚合其他块的信息,引入了Inter-Chunk Attention。这需要一种新的位置索引集合,在块之间保持流动性信息。

  3. Successive-Chunk Attention:特别针对相邻块之间的注意力计算,保持了模型的局部性,即模型倾向于依赖临近的词元来预测下一个词元。

关键点如下:

  • 避免在RoPE中线性缩小位置指数或增加基频。
  • 重用预训练模型中的原始位置指数及其嵌入,重新设计相对位置矩阵的构建。
  • 使用Flash Attention在开源社区里进行长上下文放缩。

实验说明

整体来看,实验结果表明:

  1. 语言模型测试中,DCA在训练自由方法中表现出色,将LLMs从4k上下文窗口扩展到32k以上,同时保持了PPL的微小增长。

  2. DCA与现有的流行的放缩位置编码(如PI、NTK)正交,验证了存在的长上下文LLMs可以进一步外推到192k上下文长度。

  3. 在长上下文理解方面,DCA在零次学习和少次学习设置中的系列长上下文理解基准的表现与或超过现有的最先进模型相当。

结论

本文中,我们介绍了双块注意力(DCA),一种新的无需训练的框架,用于扩展LLMs的上下文窗口。通过将注意力分数计算分段为块,DCA能够有效地捕捉长距离和短距离依赖关系。此外,基于块的注意力计算与Flash Attention无缝集成,对于开源社区中的长上下文放缩是关键要素。我们在各种任务中全面评估了模型,发现DCA的实际长上下文任务性能可媲美或甚至优于连续训练的模型。与专有模型相比,我们无需训练的70B模型可以达到gpt-3.5-16k性能的94%,为开源模型提供了一个有力的替代。所有代码和数据均已公开。

相关推荐
那个村的李富贵3 小时前
光影魔术师:CANN加速实时图像风格迁移,让每张照片秒变大师画作
人工智能·aigc·cann
腾讯云开发者5 小时前
“痛点”到“通点”!一份让 AI 真正落地产生真金白银的实战指南
人工智能
CareyWYR5 小时前
每周AI论文速递(260202-260206)
人工智能
hopsky5 小时前
大模型生成PPT的技术原理
人工智能
禁默6 小时前
打通 AI 与信号处理的“任督二脉”:Ascend SIP Boost 加速库深度实战
人工智能·信号处理·cann
心疼你的一切6 小时前
昇腾CANN实战落地:从智慧城市到AIGC,解锁五大行业AI应用的算力密码
数据仓库·人工智能·深度学习·aigc·智慧城市·cann
AI绘画哇哒哒6 小时前
【干货收藏】深度解析AI Agent框架:设计原理+主流选型+项目实操,一站式学习指南
人工智能·学习·ai·程序员·大模型·产品经理·转行
数据分析能量站6 小时前
Clawdbot(现名Moltbot)-现状分析
人工智能
那个村的李富贵7 小时前
CANN加速下的AIGC“即时翻译”:AI语音克隆与实时变声实战
人工智能·算法·aigc·cann
二十雨辰7 小时前
[python]-AI大模型
开发语言·人工智能·python