新审视零阶优化在内存高效大模型微调中的应用

人工智能咨询培训老师叶梓 转载标明出处

随着大模型模型规模的增大,反向传播(BP)所需的内存开销也日益增加,这对内存效率提出了挑战。尤其是在设备上训练等内存效率至关重要的应用场景中,解决这一问题变得尤为迫切。

本文提出了一种新的方法,即在LLM微调过程中,采用零阶(Zeroth-Order, ZO)优化算法替代传统的需要反向传播的一阶(First-Order, FO)优化算法,以降低内存成本。这种BP-free的优化方法基于Malladi等人在2023年提出的初始概念。

论文地址:https://arxiv.org/abs/2402.11592

项目地址:https://github.com/ZO-Bench/ZO-LLM

方法

ZO优化作为一种不依赖梯度信息的替代方法,通过基于函数值的梯度估计来近似传统的一阶梯度。这种方法通常反映了其对应的一阶优化算法的算法框架,但它用ZO梯度估计替换了FO梯度作为下降方向。文中特别关注了随机梯度估计器(Randomized Gradient Estimator, RGE),这是一种依赖于沿随机选择的方向向量的函数值的有限差分的方法。

RGE的数学表达式,用来近似函数在点x处的梯度: 这里,是从标准高斯分布 中抽取的随机方向向量,q 是函数查询的数量,而 μ 是一个小的扰动步长。

前向梯度(Forward-Grad)是一种在LLM微调中可能被忽视的BP-free基线方法。与RGE不同,Forward-Grad利用前向模式自动微分(AD),但省去了在深度模型微调或训练中反向传播的需要。这意味着Forward-Grad不需要进行反向传播,因此可以作为提高LLM微调内存效率的另一种替代梯度估计方法。

ZO优化方法的范围包含: ZO-SGD是由Ghadimi和Lan在2013年提出的,它通过估计梯度来更新模型参数。Malladi等人在2023年的研究中采用了这种技术进行LLM的微调。基于符号的梯度估计的ZO-SGD(ZO-SGD-Sign),这种方法通过符号函数处理梯度估计,简化了计算过程。另外,带有动量(MMT)的ZO-SGD,它利用历史梯度信息来优化更新步骤,以及保守梯度更新的ZO-SGD(ZO-SGD-Cons),它在选择下降方向时采用一种基于启发式的方法。最后,ZO-Adam,这是Adam优化器的ZO变体,它结合了动量和自适应学习率。

通用的优化框架是将上述ZO优化方法统一起来,用于解决最小化问题 min_x f(x)。框架中的更新公式为: 这里,表示第t次迭代的解,是学习率,而h(·) 是对梯度估计进行后处理的下降方向操作。例如,ZO-SGD可以直接将估计的梯度作为下降方向,而ZO-SGD-Sign则使用梯度估计的符号作为下降方向。

任务对齐指的是将微调任务与预训练任务的格式对齐,这通常通过精心设计的输入提示来实现。例如,可以将文本分类任务转换为下一个词预测任务,从而使得微调任务与预训练任务更加一致。这种对齐有助于提高ZO优化的性能。

使用预训练的Roberta-Large模型在SST2和RTE数据集上进行微调,并比较了使用和不使用文本对齐时的性能差异。结果表明,没有进行文本对齐时,ZO-SGD和ZO-Adam的性能分别下降了约10%和8%,而FO-SGD的性能下降较小。这表明任务对齐对于提高ZO优化的微调性能至关重要。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验

研究者选择了四个具有不同复杂性的任务:最简单的二元分类任务SST2,问答任务COPA,常识推理任务WinoGrande,以及多句阅读理解任务MultiRC(仅用于效率评估)。这些任务覆盖了从简单分类到复杂推理的多种场景。同时,研究者探索了四种参数高效的微调(PEFT)方案:全参数微调(FT)、低秩适应(LoRA)、前缀调整(Prefix)和提示调整(Prompt)。

研究涵盖了几种具有代表性的LLM,包括Roberta-Large、OPT、LLaMA2、Vicuna和Mistral,这些模型在规模和架构上有所不同。

优化方法: 实验中使用了多种ZO优化方法,包括ZO-SGD、ZO-SGD-Sign、ZO-SGD-MMT、ZO-SGD-Cons和ZO-Adam。这些方法在处理梯度估计和参数更新时采用了不同的策略。例如,ZO-SGD直接使用估计的梯度进行更新,而ZO-SGD-Sign则使用梯度估计的符号。此外,还比较了基于前向模式自动微分的Forward-Grad方法,以及两种一阶(FO)优化器:SGD和Adam。

实验迭代: 实验中,ZO优化器和FO优化器分别运行了20,000和625次迭代。这反映了ZO优化通常需要更多的迭代次数才能收敛。

精度和效率评估: 通过测试准确性和效率(包括内存效率、查询效率和运行时效率)来评估不同优化方法的性能。

实验结果:

表2展示了在SST2数据集上不同BP-free和基于BP的方法的性能比较。结果显示,ZO-Adam在多数设置中表现最佳,但需要更多的内存。Forward-Grad在全参数微调(FT)设置中表现出色,表明它可能适合大规模问题。ZO方法的性能波动较大,这可能与随机梯度估计(RGE)的高方差有关。

当问题规模增大且变得更复杂时,不同ZO方法之间的性能差距增大。FO方法(FO-SGD和FO-Adam)在WinoGrande任务上的性能明显优于所有ZO方法,这揭示了ZO方法在处理大型模型和复杂任务时的可扩展性瓶颈。

内存效率深入分析:

表5提供了不同优化器在全参数微调和LoRA微调中的即时峰值内存消耗的比较。ZO方法通常比FO方法更有效,因为它们不需要存储中间结果,且可以逐层估计梯度,从而避免了存储整个模型的梯度。

实验结果与理论分析一致,表明ZO方法在内存效率方面具有显著优势。随着输入序列长度的增加,ZO方法的内存优势更加明显,因为它们的峰值内存消耗仅由模型参数大小决定,与中间结果的大小无关。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】07.Linux 下的项目自动化构建工具——make/makefile

前言 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要…

【Datawhale X 李宏毅苹果书 AI夏令营】Task1笔记

第三章:深度学习基础 3.1 局部极小值与鞍点 临界点,即梯度为零的点,包含局部极小值(local minimum)和鞍点(saddle point)。 梯度下降算法在接近鞍点的时候会变得非常慢,阻碍了继续…

机器学习:K-means算法(内有精彩动图)

目录 前言 一、K-means算法 1.K-means算法概念 2.具体步骤 3.精彩动图 4.算法效果评价 二、代码实现 1.完整代码 2.结果展示 3.步骤解析 1.数据预处理 2.建立并训练模型 3.打印图像 四、算法优缺点 1.优点 2.缺点 总结 前言 机器学习里除了分类算法&#xff0…

如何使用ssm实现计算机科学与技术学习网站的设计与开发

TOC ssm248计算机科学与技术学习网站的设计与开发jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大,随着当前时代的信息化,科学化发展,让社会各行业领域都争相使用新的信息技术,对行业内的各种相关数据进行科学化&…

尝试给OpenHarmony4.0增加可以在动态库中使用的日志模块

尝试给OpenHarmony4.0增加可以在动态库中使用的日志模块 前言一、资源来源二、实践步骤1.修改OH内核并编译2.动态库增加welog打印3.设备验证打完收工 总结参考 前言 最近在搞OpenHarmony4.0蓝牙模块的适配,最主要的工作就是在libbt_vendor.z.so这个库的编写修改&am…

AWS 使用 Amazon EC2 控制台安装和配置 CloudWatch 代理以添加其他指标如内存

默认情况下,Amazon CloudWatch 提供基本指标(例如 CPUUtilization 和 NetworkIn)用于监控 Amazon EC2 实例。要收集其他指标,您可以在 EC2 实例上安装 CloudWatch 代理,然后将该代理配置为发出所选指标。您可以使用 Am…

网络安全售前入门04——审计类产品了解

目录 1.前言 2.数据库审计介绍 2.1产品架构功能 2.2应用场景 2.3部署形式 2.4产品价值 2.5选型依据 1.前言 为方便初接触网络安全售前工作的小伙伴了解网安行业情况,我制作一系统售前入门(安全产品,安全服务,法律法规等)文章介绍,希望能给初进网安职场的小伙伴提供…

【Qt】Qt系统 | Qt事件 | 定时器

文章目录 定时器QTimerEventQTimer获取系统日期及时间 定时器 Qt 中在进行窗口程序的处理过程中,经常要周期性的执行某些动作,或者制作一些动画效果,使用定时器可以实现这些需求。 定时器,会在间隔一定时间后,执行某一…

Git下载安装配置

Git的下载与安装 Git是一种分布式版本控制系统,用于跟踪文件和文件夹的变化。它最初由Linus Torvalds开发,用于管理Linux内核的源代码。Git的设计目标是:速度快、开发效率高、数据完整性和可靠性强。 Git通过创建一个存储库(rep…

【FESCO福利专区-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

什么领域/方向的产品经理既有发展前景又能做的长久

前几天我在知乎上回答了一道“目前什么领域的产品经理比较有发展前景?有推荐的课程吗?”的问题,讲得还比较实在,于是在这里也顺便分享一下。 TOP1.商业产品经理 之所以这个方向能排在第1,我认为有3点理由。 第1点&a…

国产游戏技术能否引领全球?

国产游戏技术:引领全球还是任重道远? 近年来,伴随着中国科技和经济的迅猛发展,国产游戏行业也呈现出蓬勃发展的态势。从《原神》到《黎明杀机手机版》,多款国产游戏在国际市场上崭露头角。而国产游戏在画面渲染、物理…

基于layui实现简单的万智牌生命计数器页面

对照手机App“旅法师营地”的万智牌生命计数器窗口(如下图所示),使用layui、jQuery等实现简单的万智牌生命计数器页面。   主要实现的功能如下:   1)点击左右两侧的-1、1、-5、5区域更新左右两侧生命值&#xff1…

短视频SDK解决方案,代码逻辑结构清晰,接入便捷

美摄科技凭借其在多媒体处理领域的深厚积累,推出了高效、易用的短视频SDK解决方案,为开发者及内容创作者提供了一站式的短视频创作与编辑工具,让每一份灵感都能轻松转化为引人入胜的视觉盛宴。 一、技术领先,打造极致体验 美摄科…

DNS详解

DNS详解 DNS 是一个域名系统,它主要用于将人类容易记忆的域名转换成ip地址。 默认情况下,设备会自动从网络供应商获取DNS服务器地址,并使用DNS服务器对域名进行解析。 此外,你也可以手动设置DNS服务器,具体操作系统…

反射机制简单基础

前序 在我们没有学习框架之前我们都是通给new来创建对象,如:创建一个我们已知的对象 Car carnew Car(); 调用类中的成员变量和成员方法都是对象直接调用。 在学习了mybatis框架后,我们了解到可以通过类名,能动态得到类中定义的…

基于x86 平台opencv的图像采集和seetaface6的静默活体功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.3 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的静默活体功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的静默活体模块从而实现…

量化四大邪术之一:般若波罗蜜

网络相传亚洲有四大邪术,日本化妆,韩国整容,泰国变X,Z国PS。 这些都是让人在颜值上看起来很美,类似地,在量化交易领域,也有四大邪术能让净值曲线看起来很美,今儿个来说量化四大邪术当…

一文弄懂MySQL中的锁

MySQL中的锁概述 MySQL中的锁机制是数据库管理系统用于控制并发操作的一种手段,主要用于保证数据的一致性和完整性。当多个事务同时操作同一数据时,锁机制可以防止数据冲突和确保事务的隔离性。 在MySQL中,锁可以分为三大类:全局…

前端自动导入依赖

前言 开发中通常会有很多导入语句&#xff0c;如何确保一些通用的api和hook无需每次手动导入即可使用。 <script setup lang"ts"> import { ref, reactive } from "vue" import { useRoute, useRouter } from "vue-router" import { log…