论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
点击蓝字

关注我们
AI TIME欢迎每一位AI爱好者的加入!

点击 阅读原文 观看作者讲解回放!
作者简介
王志豪,厦门大学博士生
刘诗雨,厦门大学硕士生
内容简介
新数据的不断涌现使版本更新成为大型语言模型(LLMs)不可或缺的需求。LLMs的版本更新训练范式包括从头预训练(PTFS)和继续预训练(CPT)。初步实验表明,PTFS在预训练性能上表现更好,而CPT的训练成本较低。此外,随着版本更新的进行,两种范式的性能和训练成本差距逐渐扩大。为探究这一现象的根本原因,作者分析了学习率对CPT的两个阶段的影响:准备初始化参数(checkpoint)和基于该checkpoint的继续预训练。研究表明,在第一阶段中使用较大学习率以及在第二阶段中使用具有完整率衰减过程的学习率对于LLMs的版本更新至关重要。因此,作者提出了一种基于学习率路径切换的训练范式。该范式包括一条主路径和多条分支路径。LLMs在主路径上以最大学习率进行预训练,而分支路径则基于LLMs在主路径上的checkpoints使用新增数据进行版本更新。广泛的实验表明该范式的有效性和泛化性。特别是在训练4个版本的LLMs时,该范式在保持与PTFS相当的预训练性能同时,将总训练成本减至58%。
论文地址:https://arxiv.org/abs/2410.04103
研究动机
这篇论文的研究动机在于,随着新的预训练数据不断涌现,大型语言模型(LLMs)面临着版本更新的需求,以确保模型能力的持续提升。现有的版本更新范式包括从头预训练(Pre-Training From Scratch,简称PTFS)和继续预训练(Continue Pre-Training,简称CPT)。图中列出了这两种范式在使用cosine学习率调度策略时的学习曲线。可以明显看到,两种范式之间的主要区别在于更新过程中的学习率变化。这启发了作者从学习率角度出发,研究新的预训练范式。

先导实验
为了比较这两种范式在性能和成本上的差异,作者进行了一个先导实验。实验选择了训练LLMs时最常见的3种学习率调度策略,测试在更新4个版本LLMs情况下的性能和成本差距。需要注意的是,这里的性能用困惑度(Perplexity,PPL)来表示,数值越低代表LLMs性能越好。
从实验结果可以观察到,尽管CPT的版本更新成本远低于PTFS,但PTFS的性能优于CPT,而且这种性能差距随着版本数的增加而增大。

性能差距增大的原因
为了研究这种性能差距产生的原因,作者将CPT拆分成两个阶段。第一个阶段是为CPT准备初始参数(checkpoint),第二个阶段是基于初始checkpoint进行继续训练。紧接着,作者基于这两个阶段,分别设计两组实验来探索学习率对CPT两个阶段的影响。
在第一组实验中,作者采用具有不同衰减速度的学习率作为第一阶段的学习率曲线,并固定了第二阶段的学习率曲线。结果表明,当第一阶段的学习率固定为最大值时,初始checkpoint的模型性能最低,但最终性能却是最好的。
在第二组实验中,作者固定了第一阶段的学习率曲线,采用具有不同衰减速度的学习率作为第二阶段的学习率曲线。结果显示,当第二阶段学习率快速衰减到最小值时,对应的LLMs性能最佳。
基于上述两组实验我们可以得出如下结论:1.第一阶段的大学习率和第二阶段完整的学习率衰减过程对CPT的性能尤为重要。2. CPT无法兼顾不同版本LLMs的性能。完整的学习率衰减过程能确保当前版本的LLMs的最优性能,但后续版本的LLMs则需要以大学习率训练提供的初始化checkpoint,这是CPT无法同时满足的。

训练范式
为了解决CPT两阶段对不同学习率要求的冲突,作者提出了一种基于学习率路径切换的训练范式。该范式包括一条主路径和多条分支路径。在主路径上,LLMs以最大学习率从头开始预训练,为后续版本更新提供初始化checkpoint。当我们想获得新版的LLMs时,可以直接基于主路径的当前checkpoint继续预训练。在这个过程中,学习率会经历一个完整且快速的衰减过程,从而以较低的成本来保证新版LLMs的性能。同时,在主路径上LLMs仍然使用新增数据对当前checkpoint以最大学习率进行预训练,以便于后续的版本更新。
不同于PTFS和CPT,该范式还包含关键超参数α用于控制分支路径在训练步长中所占的比例。根据版本更新的总时间复杂度计算,该范式与CPT一样,确保了线性的复杂度。

关键参数实验
对于本文提出的范式,参数α是一个关键参数。α值越高,模型的性能相对越好,但总的训练成本也会相应增加。根据对不同α值的实验结果,作者选择了α等于0.6作为最终参数。

预训练性能
基于三种学习率调度策略下,作者测试了所提出的预训练范式、PTFS及CPT各自的性能和成本。结果显示,所提出的范式在性能和训练成本上取得了更佳的平衡。在实现与PTFS相当性能的同时,仅需要58%的训练成本。

下游任务性能
在9个常见的下游任务中,经过微调训练后,作者的范式取得了最优的平均性能。

泛化性
模型结构和参数规模
为了验证本文范式在模型结构和参数规模上的泛化性,作者不仅在LLaMA结构上进行了实验,还在Qwen模型结构上进行了实验。此外,作者还在不同参数规模下进行了测试。结果证明,该范式具有良好的泛化性能。

数据规模和最大学习率
并且,作者还测试了在不同数据规模和不同最大学习率设置下所提出范式的性能。结果表明,该范式在不同数据规模和学习率设置下表现出良好的性能,进一步验证了其适用性和泛化性。

实际应用与未来工作
最后,目前该范式已经实际应用于vivo蓝心基础大模型的研发中。对于未来的工作,作者计划将视角聚焦于大模型版本更新过程中可能存在的更多待解决场景。例如,在更新过程中,同时伴随模型参数规模的扩展、模型结构的调整,以及版本更新在监督微调(SFT)或对齐(alignment)阶段中的应用。

本期文章由陈研整理
往期精彩文章推荐

迈向AGI——大模型创新体验嘉年华邀请函
关于AI TIME
AI TIME源起于2019年,旨在发扬科学思辨精神,邀请各界人士对人工智能理论、算法和场景应用的本质问题进行探索,加强思想碰撞,链接全球AI学者、行业专家和爱好者,希望以辩论的形式,探讨人工智能和人类未来之间的矛盾,探索人工智能领域的未来。
迄今为止,AI TIME已经邀请了2000多位海内外讲者,举办了逾700场活动,超800万人次观看。

我知道你
在看
提出观点,表达想法,欢迎
留言

点击 阅读原文 观看作者讲解回放!
相关文章:
论文解读 | EMNLP2024 一种用于大语言模型版本更新的学习率路径切换训练范式
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 点击 阅读原文 观看作者讲解回放! 作者简介 王志豪,厦门大学博士生 刘诗雨,厦门大学硕士生 内容简介 新数据的不断涌现使版本更新成为大型语言模型(LLMsÿ…...
Java基础(Json和Java对象)
定义好实体类 package com.pyb.pojo; /*** version 1.0* Author 彭彦彬* Date 2024/12/24 20:47* 注释*/ public class Person {private String username;private String password; public Person() {} public Person(String username, String password) {this.username…...
Linux 中检查 Apache Web Server (httpd) 正常运行时间的 4 种方法
注:机翻,未校。 4 Ways To Check Uptime of Apache Web Server (httpd) on Linux November 28, 2019 by Magesh Maruthamuthu We all know about the purpose of uptime command in Linux. 我们都知道 Linux 中 uptime 命令的目的。 It is used to c…...
Linux驱动开发--字符设备驱动开发
一、概述 字符设备是 Linux 驱动中最基本的一类设备驱动,字符设备就是一个一个字节,按照字节 流进行读写操作的设备,读写数据是分先后顺序的。比如我们最常见的点灯、按键、 IIC、 SPI, LCD 等等都是字符设备,这些设备的驱动就叫做字符设备驱动。 Linux 应用程序对驱动程…...
MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式)
MarkItDown的使用(将Word、Excel、PDF等转换为Markdown格式) 本文目录: 零、时光宝盒🌻 一、简介 二、安装 三、使用方法 3.1、使用命令行形式 3.2、用 Python 调用 四、总结 五、参考资料 零、时光宝盒🌻 &a…...
一文彻底拿捏DevEco Studio的使用小技巧
程序员Feri一名12年的程序员,做过开发带过团队创过业,擅长Java相关开发、鸿蒙开发、人工智能等,专注于程序员搞钱那点儿事,希望在搞钱的路上有你相伴!君志所向,一往无前! 0.安装DevEco Studio DevEco Studio面向HarmonyOS应用及元服务开发者提供的集成开…...
R9000P键盘失灵解决办法
问题描述 突然,就是很突然,我买的R9000P 2024不到三个月,键盘突然都不能用了,是所有键盘按键都无效的那种。(可以使用外接键盘) 解决办法 我本科室友说的好哈,全坏全没坏。 (该解…...
【Linux之Shell脚本实战】编写简单计算器shell脚本
【Linux之Shell脚本实战】编写简单计算器shell脚本 一、Shell脚本介绍1.1 Shell脚本简介1.2 Shell脚本特点二、脚本要求三、检查本地环境3.1 本地环境规划3.2 检查本地系统3.3 检查系统内核版本四、编写脚本4.1 脚本内容4.2 脚本分析整体逻辑各功能实现使用方法4.3 执行效果五、…...
【0x001D】HCI_Read_Remote_Version_Information命令详解
目录 一、命令概述 二、命令格式及参数说明 2.12. HCI_Read_Remote_Version_Information 命令格式 2.2. Connection_Handle 三、生成事件 3.1. HCI_Command_Status 事件 3.2. HCI_Read_Remote_Version_Information_Complete 事件 四、命令执行流程 4.1. 命令发起阶段(…...
秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行
别忘了请点个赞收藏关注支持一下博主喵!!!! ! ! 下篇更新: 秒鲨后端之MyBatis【3】自定义映射resultMap、动态SQL、MyBatis的缓存、MyBatis的逆向工程、分页插件。 默认的类型别名 MyBatis的增删改查 添加 <!--int insertUs…...
python中使用selenium执行组合快捷键ctrl+v不生效问题
在执行ctrlv进行粘贴时,绑定一个页面上的元素对象(无论元素对象是否是引用过期或者是粘贴的目标文本区,但前提需要粘贴的目标文本区获取焦点)执行ctrlv后可以生效。执行粘贴组合快捷键(ctrlv)的示例代码 se…...
大语言模型中的Agent;常见的Agent开发工具或框架
大语言模型中的Agent 大语言模型中的Agent是指以大语言模型为核心驱动,具有自主理解、感知、规划、记忆和使用工具等能力,能够自动化执行复杂任务的系统.以下是一些例子: AutoGPT:它相当于一个完整的工具包,可以为各种项目构建和运行自定义AI Agent。使用OpenAI的GPT-4和…...
VSCode 性能优化指南:提高编码效率,减少资源占用
Visual Studio Code(简称VSCode)是一款广受欢迎的代码编辑器,以其强大的功能和丰富的插件生态系统著称。然而,随着项目规模的扩大和插件数量的增加,VSCode 的性能可能会受到影响。本文将介绍一系列优化措施,…...
深入理解C++ 容器类
承接Qt/C软件开发项目,高质量交付,灵活沟通,长期维护支持。需求所寻,技术正适,共创完美,欢迎私信联系! 引言 C 标准库提供了丰富的容器(container)类型,用于存…...
优化 invite_codes 表的 SQL 创建语句
-- auto-generated definition create table invite_codes (id int auto_incrementprimary key,invite_code varchar(6) not null comment 邀请码,6位整数,确保在有效期内…...
springboot容器无法获取@Autowired对象,报null对象空指针问题的解决方式
示例错误代码: package com.uniin.ib.provider.iot.handle;Slf4j Component public class FireStringInboundHandler extends ChannelInboundHandlerAdapter {Autowiredprivate RsFireMonitoringMapper rsFireMonitoringMapper;Autowiredprivate RsFireAlertMapper…...
服务器数据恢复—Lustre分布式文件系统下服务器节点进水的数据恢复案例
服务器数据恢复环境&故障: 5台节点服务器,每台节点服务器上有一组RAID5阵列。每组RAID5阵列上有6块硬盘(其中1块硬盘设置为热备盘,其他5块硬盘为数据盘)。上层系统环境为Lustre分布式文件系统。 机房天花板漏水导致…...
由于这些关键原因,我总是手边有一台虚拟机
概括 虚拟机提供了一个安全的环境来测试有风险的设置或软件,而不会影响您的主系统。设置和保存虚拟机非常简单,无需更改主要设备即可方便地访问多个操作系统。运行虚拟机可能会占用大量资源,但现代 PC 可以很好地处理它,为实验和工作流程优化提供无限的可能性。如果您喜欢使…...
word无法创建工作文件,检查临时环境变量。
word无法创建工作文件,检查临时环境变量。 word preview版本,关联打开文件出现报错。word无法创建工作文件,检查临时环境变量。 打开注册表,删除键 Word Preview: HKCR\CLSID{84F66100-FF7C-4fb4-B0C0-02CD7FB668FE} PowerPoint …...
照亮技术传播之路:构建卓越的技术文档
照亮技术传播之路:构建卓越的技术文档 引言 在信息技术快速发展的今天,技术文档作为沟通开发者、用户以及其他利益相关者的桥梁,其重要性不言而喻。一份优秀的技术文档不仅能够帮助团队成员理解项目背景和技术细节,还能够在产品…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
