符尧大佬一作发文,仅改训练数据,就让LLaMa-2上下文长度扩展20倍!

引言:探索语言模型的长上下文能力

近日,谷歌推出了Gemini Pro 1.5,将上下文窗口长度扩展到100万个tokens,目前领先世界。而其他语言模型也正在不断探索长上下文能力,也就是模型处理和理解超出其训练时所见上下文长度的能力。例如,一个模型可能在训练时只看到了每个输入中的4K tokens,但在实际应用中,我们希望它能够处理长达128K tokens的文档。这种能力对于多种应用场景至关重要,如多文档问答、代码库级别的代码理解、长历史对话建模,以及语言模型驱动的自主代理等。

然而,由于注意力机制的二次复杂度,将模型的上下文长度从4K扩展到128K看上去似乎是不切实际的。本文将介绍一种数据工程方法,通过在适当的数据混合上轻量级的持续预训练,来扩展语言模型的上下文长度至128K。

论文标题:Data Engineering for Scaling Language Models to 128K Context

公众号「夕小瑶科技说」后台回复“128K”获取论文PDF!
 

长上下文建模的重要性

1. 128K上下文窗口的新应用场景

随着语言模型上下文长度的增加至128K tokens,新的应用场景得以实现,这些场景在现有的模型范式中是难以完成的。例如,多文档问题回答、代码库级别的代码理解、长历史对话建模以及由语言模型驱动的自主代理等。这些应用场景的实现,不仅推动了语言模型的发展,也为人工智能领域带来了新的可能性。

2. 长上下文模型与Needle-in-a-Haystack测试

Needle-in-a-Haystack测试是一个用来检验模型是否能有效利用长上下文长度的测试平台。该测试要求模型在一个长达128K tokens的文档中,精确地复述一个被随机放置在任意位置的句子(即Needle)。目前,只有封闭源的前沿模型如GPT-4 128K展示了在此测试上的强大性能。而相比于开源领域的模型,我们的方法在Needle-in-a-Haystack测试中表现出色,缩小了与GPT-4 128K的差距。

图片

上图是各模型的Needle-in-a-Haystack性能比较。x 轴表示文档(Haystack)的长度,从1K到128K不等;Y轴表示一个短句(Needle)在文档中的位置。例如,50% 表示Needle位于文档的中间。红色单元格表示语言模型无法确认Needle的信息,绿色单元格表示模型可以。白色虚线表示模型持续预训练(或对指令调整模型进行微调)上下文长度;因此其右侧区域表示长度泛化。大多数现有的开源模型在文档较长时都会出错。我们的训练方案在文档长度达到100K左右时表现出了很强的性能。

数据工程的关键作用

从数据角度看,我们的方法与现有工作的主要区别在于,我们认为数据对于扩展上下文长度至关重要。我们的数据混合集在三个方面不同于之前的工作:

  • 持续预训练数据的长度。 我们使用 80K 的数据,而 Together 使用的是 32K,超过 32K 就无法泛化;

  • 数据混合集。 我们使用的是 SlimPajama,它具有均衡的域,而 YaRN 使用的是仅书籍的 PG19;

  • 长度上采样。 我们对长序列进行了上采样,而 LongLoRA 没有进行上采样。尽管这些细节非常微妙(例如,许多细节在以前的研究中只是作为一行被提及),但我们发现这些细节对大范围检索的性能至关重要。

图片

实验设置:基础模型与数据集

1. 使用LLaMA-2作为基础模型

在本研究中,我们采用了LLaMA-2作为基础模型,具体使用了7B和13B两个版本。LLaMA-2模型是在现有的LLaMA模型基础上进行的改进,我们没有对模型架构进行重大更改,仅对RoPE的基数进行了调整,以适应更长的上下文长度。选择LLaMA-2作为基础模型的原因在于其在处理长上下文任务方面已经展现出了强大的性能,而我们的目标是通过持续预训练,进一步扩展其在128K长上下文中的能力。

2. SlimPajama数据集的选择与优势

为了持续预训练,我们选用了SlimPajama数据集。这个数据集是LLaMA预训练数据混合的开源再现版本,包含了来自CommonCrawl、C4、GitHub、Wikipedia、书籍、Arxiv和StackExchange的数据。SlimPajama数据集的优势在于其与LLaMA模型预训练时使用的数据分布非常接近,因此在持续预训练过程中,可以减少分布偏移的问题。此外,SlimPajama数据集的文档长度和来源领域的多样性,为我们提供了丰富的数据,以支持我们的长上下文建模实验。

持续预训练的策略

1. 长度上采样的不同方法

下图是SlimPajama数据集中各种数据混合策略的长度和域分布。在持续预训练过程中,我们考虑了几种不同的长度上采样方法,包括在4K处截断文档、在128K处截断文档、每源长度上采样以及全局长度上采样。这些方法各有利弊,例如在4K处截断文档虽然保留了原始数据混合,但打破了自然存在的长范围依赖;而在128K处截断文档则保留了这些长范围依赖,但仅使用自然存在的长依赖是不够的。全局长度上采样和针对特定源(如Arxiv/Book/Github)的上采样则会同时改变域混合和长度分布。

图片

2. 选择每源长度上采样策略的理由

我们最终选择了每源长度上采样策略,因为实验表明(下图)这种方法能够在保持原始域混合比例的同时,提高长文档的比例,从而获得最平衡的性能提升。具体来说,我们将每个域中超过4K长度的文档的比例从约30%提高到约70%,这样做可以在不改变域混合比例的情况下,只改变训练文档的长度分布。与其他方法相比,每源长度上采样策略在保持短上下文性能的同时,显著提高了长上下文任务的性能。

图片

下表是我们考虑了将原始数据混合更改为长上下文上采样数据混合后,跨领域的损失有何不同,并报告了与原始数据混合的损失差异(例如,每个源长度的上采样损失减去原始混合的损失)。我们认为损失差异大于0.01是显著的,用红色阴影表示性能下降超过+0.01的损失;或用绿色阴影表示性能改善小于-0.01的损失,或用灰色阴影表示没有显著差异。尽管对书籍/代码/arxiv进行上采样可以提高短上下文和长上下文的域内性能,但这种改进并不适用于所有领域。相反,对一个领域进行上采样,例如代码,甚至可能损害另一个领域,例如书籍。每个源长度的上采样是最平衡的混合,几乎没有任何跨领域的损失显著增加。

图片

实验结果:长上下文性能的提升

1. 长上下文任务的表现与短上下文性能的维持

在长上下文任务中,我们的方法不仅提高了精确检索的能力,还保持了短上下文性能。这一点通过MMLU得分得到了证明(如下表),MMLU是一个广泛接受的基准测试,用于测试语言模型在短上下文内的一般能力。我们的方法在长上下文任务(Needle.)上的表现优于顶级开源模型,并且在短上下文性能(MMLU)上在开源模型中保持领先。

图片

下表是我们进一步比较了128K上下文语言模型在一本书长度问题解答基准上的表现。这项任务是在一本书上建立语言模型,然后提出有关情节的问题。我们的方法优于LongLoRA和Yarn Mistral。我们的13B模型性能缩小了与GPT-4 128K的差距,预计未来的扩展和指令调整将进一步提高性能。

图片

2. 长上下文能力的逐步解锁与数据量的关系

如下图,我们的实验结果表明,随着训练数据量的增加,模型的检索性能逐渐提高。特别是,当模型在500M到1B的token上进行持续预训练时,模型在其持续预训练的80K上下文内取得了相对良好的性能,但并不泛化到80K-128K的范围。在5B token之后,模型在0-80K上表现良好,并能泛化到未见长度80K-128K。在10B token时,模型似乎对其80K训练范围过拟合,长度泛化开始下降。在这一过程中,我们看到了损失的逐渐减少,这与检索性能的提高相关联。

图片

讨论:数据工程对长上下文性能的影响

1. 长上下文模型性能的关键因素

在大语言模型研究中,数据工程与建模和算法创新同等重要。我们的研究结果强调了数据工程在长上下文模型性能中的重要性。我们的方法在长上下文任务上的改进归功于我们对数据工程的细致处理,包括持续预训练数据的长度、数据混合集、长度上采样等三个方面。我们也承认,我们的研究之所以成为可能,也得益于最新的机器学习系统研究中的创新,特别是FlashAttention,它将注意力机制的内存使用量从二次方减少到线性。

2. 长上下文训练的可行性与资源需求

我们展示了在学术级资源下进行长上下文持续预训练是可行的。我们的配置在8×80G A100上进行训练,耗时5天(下表)。我们的结果表明,对于监督式微调,由于长上下文训练的成本远低于之前认为的,未来的工作可以更深入地探讨100K长度微调和推理的解决方案,目前几乎没有开源工作涉及这一领域。对于预训练研究,目前还没有明确的答案,即长上下文持续预训练是否应该与其他能力(如数学和编码)结合,这通常需要数千亿的token。

图片

结论:长上下文预训练的新策略

1. 长上下文能力的预训练获取

在对长上下文模型的研究中,我们发现,通过在适当的数据混合上进行轻量级的持续预训练,可以将模型的长上下文能力从4K扩展到128K。这一发现基于假设:即使是在4K上下文长度的预训练中,模型已经大致获得了在任意位置利用信息的能力。我们的实验表明,通过在1-5亿个token的长上下文数据上进行持续预训练,模型能够在128K的上下文中检索信息,而无需从头开始进行大规模预训练。

我们的数据工程方法强调了数据量和质量的重要性。对于数据量,我们证明了500亿到50亿token足以使模型能够在128K上下文中检索信息。而在数据质量方面,我们的研究结果强调了域平衡和长度上采样的重要性。我们发现,简单地在某些域(如书籍)上进行长数据上采样会导致次优的性能,而保持平衡的域混合则至关重要。

2. 对未来长上下文指导性微调研究的启示

我们的研究为未来在长上下文中进行指导性微调提供了新的见解。我们展示了在长上下文数据上进行持续预训练是一种有效且经济的策略,我们的方法在长上下文检索任务上缩小了与前沿模型如GPT-4 128K的差距,并为未来在100K上下文长度上进行指导性微调的研究奠定了基础。

公众号「夕小瑶科技说」后台回复“ 128K ”获取论文PDF!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/404240.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于飞凌嵌入式RK3568核心板的边缘计算门禁屏解决方案

边缘计算作为一种将计算任务从云端推向网络边缘的新型计算模式,正日益受到各行各业的青睐,并已在我们的生产和生活当中得到了广泛的应用,其中“门禁系统”就是最常见的与边缘计算相结合的应用之一。 传统的门禁系统受限于数据处理能力和网络…

2023年的AI模型学习/部署/优化

可以的话,github上给点一个小心心,感谢观看。 LDC边缘检测的轻量级密集卷积神经网络: meiqisheng/LDC (github.com)https://github.com/meiqisheng/LDC segment-anything分割一切的图像分割算法模型: meiqisheng/segment-anyt…

新手学习Cesium的几点建议

Cesium是当前非常火热的三维数字地球开发框架,很多公司基于Cesium做项目以及形成了自己的产品,关于Cesium的学习,有诸多网站、书籍、学习资料甚至培训教材,这里不再详细推荐,从学习Cesium的角度,资料和教程…

精美的WordPress外贸独立站模板

WordPress外贸独立站主题 简洁实用的WordPress外贸独立站主题,适合时尚服装行业搭建wordpress企业官网使用。 https://www.jianzhanpress.com/?p4999 简洁wordpress独立站模板 绿色精美、简洁大气的wordpress外贸独立网站模板 https://www.jianzhanpress.com/?…

NXP实战笔记(六):S32K3xx基于RTD-SDK在S32DS上配置PWM发波

目录 1、概述 2、SDK配置 2.1、Port配置 2.2、Emios_Mcl_Ip 2.3、Emios_Pwm 2.4、代码示例 1、概述 针对S32K3xx芯片,产生PWM的硬件支持单元仅有两个,分别是eMiosx与Flexio. 生成PWM的顺序,按照单片机所用资源进行初始化执行如下 初始化…

微软推出Windows照片编辑新功能:AI魔术橡皮擦生成擦除工具让照片修图更轻松

微软宣布推出生成擦除功能,该功能让用户在 Windows 捆绑的照片应用程序中使用人工智能技术对照片进行修改。这一功能类似于谷歌和三星设备上的 AI 选择性照片橡皮擦,让用户可以轻松消除照片中的不需要的元素,如狗的皮带或意外出现的人物。不仅…

数据可视化在商业领域有哪些重要性?

数据可视化在商业领域的重要性体现在多个方面,它通过将复杂的数据集转化为直观、易于理解的图形和图表,帮助企业和组织做出更明智的决策。以下是数据可视化对商业的一些关键重要性: 提高决策效率:通过直观的图表和图形&#xff0c…

如何把电脑上的png图片变为jpg?图片格式在线转化的方法

由于jpg文件比较小,把png格式转换后更适合我们的保存和使用,尤其是对于一些平台上传来说,很多地方都要求图片格式为jpg,为了能更顺利的上传,本文就叫大家一个图片格式转换的方法,使用压缩图网站&#xff0c…

STM32Cubemx TB6612直流电机驱动

一、TB6612FNG TB6612是一个支持双电机的驱动模块,支持PWM调速。PWMA、AIN1、AIN2 为一组控制引脚,PWMA 为 PWM 速度控制引脚,AIN1、AIN2 为方向控制引脚;PWMB、BIN1、BIN2 为一组控制引脚,PWMB 为 PWM 速度控制引脚&…

Fpga_高斯滤波

一 算法原理 高斯滤波即将图像频域处理和时域处理相联系,作为低通滤波器使用,滤去低频能量,平滑图像,适用于消除高斯噪声,应用于图像降噪领域。 高斯滤波是对图像像素点进行加权平均的过程,某一像素点的值…

Unity编辑器内工程文件重命名|Project视图文件名修改

Unity编辑器内文件重命名 前言大项内容一使用方法代码展示 总结 前言 本文代码可以一键更改Project视图的文件名字 在当前文件名的状态下增加一段字符区分文件。 大项内容一 功能是因为在给其他人导入项目资源时有重复的资源的时候,资源会产生覆盖的问题。所以直…

Neo4j导入数据之JAVA JDBC

目录结构 前言设置neo4j外部访问代码整理maven 依赖java 代码 参考链接 前言 公司需要获取neo4j数据库内容进行数据筛查,neo4j数据库咱也是头一次基础,辛辛苦苦安装好整理了安装neo4j的步骤,如今又遇到数据不知道怎么创建,关关难…

C语言第二十九弹---浮点数在内存中的存储

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 目录 1、浮点数在内存中的存储 1.1、练习 1.2、浮点数怎么转化为二进制 1.3、浮点数的存储 1.3.1、浮点数存的过程 1.3.2、浮点数取的过程 1.3、题目解析…

vue 动态渲染本地图片不显示的解决方法

代码更改前 <img class"img" :src"/assets/images/${syntheticalGrade}.png" />data(){return{syntheticalGrade:"1"} }效果图&#xff1a; 解决代码 <img class"img" :src"require(/assets/images/${syntheticalGrad…

【服务器数据恢复】FreeNAS+ESXi虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 一台服务器通过FreeNAS&#xff08;本案例使用的是UFS2文件系统&#xff09;实现iSCSI存储&#xff0c;整个UFS2文件系统作为一个文件挂载到ESXi虚拟化系统&#xff08;安装在另外2台服务器上&#xff09;上。该虚拟化系统一共有5台虚拟机&…

JAVAEE初阶 JVM(一)

JVM的热门话题 一. JVM中的内存区域划分1.经典笔试题. 二. JVM的类加载机制 一. JVM中的内存区域划分 1.经典笔试题. 二. JVM的类加载机制

智慧农业四情监测预警系统

TH-Q3智慧农业四情监测预警系统是指通过对农田环境、作物生长、病虫害发生以及气象变化等四种情况的实时监测和数据分析&#xff0c;实现对农业生产过程的预警和决策支持的系统。该系统集成了物联网、大数据、云计算等现代信息技术&#xff0c;为农业生产提供了全面、准确、实时…

chatGPT很能干,害不害怕被替代?

文章目录 chatGPT很能干&#xff0c;但无法做到无所不能chatGPT能帮我们做的50事情哪些职业不容易被chatGPT影响未来职业天梯总结 chatGPT很能干&#xff0c;但无法做到无所不能 利用跟chatGPT的对话&#xff0c;它告诉我们它能干点啥。 chatGPT能帮我们做的50事情 能做的事情…

Qt的跨平台开发

自从最初发布以来&#xff0c;Qt就以其跨平台的能力而闻名——这是创建这个框架背后的主要愿景。您可以在自己喜欢的桌面平台(如Windows、Linux和mac OS)上使用Qt Creator&#xff0c;并使用相同的代码库或稍加修改&#xff0c;创建流畅、现代、触摸友好的图形用户界面(GUI)和桌…

2.22 作业

顺序表 运行结果 fun.c #include "fun.h" seq_p create_seq_list() {seq_p L (seq_p)malloc(sizeof(seq_list));if(LNULL){printf("空间申请失败\n");return NULL;}L->len 0; bzero(L,sizeof(L->data)); return L; } int seq_empty(seq_p L) {i…