讲师中心 微信公众号
AI工具推荐 视频效率加速

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

星雪姑娘_5397

星雪姑娘_5397

发布时间:2024-07-11 21:10:02

|

902人浏览过

|

来源于机器之心

转载

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存
AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

本文共同第一作者简介:张逸骅:密歇根州立大学计算机系博士三年级学生,师从sijia liu教授,主要研究方向是大模型的安全、隐私和效率问题。李平治:本科毕业于中国科学技术大学,将于2024 fall博士入学北卡罗来纳大学教堂山分校,师从陈天龙教授,主要研究兴趣集中在高效机器学习和ai4science领域。洪骏远:德州大学奥斯汀分校博后,导师是zhangyang wang教授。博士毕业于密歇根州立大学,师从jiayu zhou教授,目前主要的研究方向是可信大语言模型和人工智能的医疗应用。李佳翔:明尼苏达大学博士后,目前在洪明毅教授和张树中教授指导下做数值优化理论、机器学习理论和大规模机器学习优化问题的研究。

开源大语言模型(LLM)百花齐放,为了让它们适应各种下游任务,微调(fine-tuning)是最广泛采用的基本方法。基于自动微分技术(auto-differentiation)的一阶优化器(SGD、Adam 等)虽然在模型微调中占据主流,然而在模型越来越大的今天,却带来越来越大的显存压力。因此,如何高效地在微调中降低显存使得单卡可以满足微调需求已经成为一个热门研究问题。值得注意的是,虽然反向传播是这些一阶优化器的基石,被用于计算神经网络每个权重的梯度,同时却也是显存杀手,其中庞大计算图的保存所带来的开销也在大模型时代被凸显得尤为突出。与此同时,零阶优化器(Zeroth-Order Optimization)则完全无需保存计算图,转而使用有限差分来近似计算网络的梯度,通过完全避免反向传播(back-propagation; BP)来大大减少神经网络更新中的内存开销。

类似于一阶优化器中随机梯度下降的各式变种,零阶优化器也有着各种此前无人探索的改进算法。近日,来自密歇根州立大学、北卡罗来纳大学教堂山分校、德克萨斯大学奥斯汀分校、明尼苏达大学双城分校、IBM 研究中心、普林斯顿大学、以及阿里巴巴达摩院的众多研究者联合推出全面评测(benchmark)文章:Revisiting Zeroth-Order Optimization for Memory-Efficient LLM Fine-Tuning: A Benchmark 。这篇文章覆盖六种无需反向传播(BP-free)的优化器、五类大模型、三种复杂度的各项任务、四类微调方案,以及三项增强零阶优化器的全新算法。目前,相关论文已被 ICML 2024 高分接收,代码已开源;详情如下。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

  • 论文地址:https://arxiv.org/abs/2402.11592
  • 代码地址:https://github.com/ZO-Bench/ZO-LLM
  • 零阶优化讲义地址 (AAAI 2024 Tutorial):https://sites.google.com/view/zo-tutorial-aaai-2024/ 

零阶优化器是什么?为何如此重要?

零阶优化器(Zeroth-Order Optimization)仅仅依靠神经网络的输出进行梯度估计,以完全不需要计算反向传播和极少的内训消耗而闻名。尽管在零阶优化器领域也存在不同的梯度估计方法,本文特指基于随机梯度估计器(Random Gradient Estimator, RGE)的一系列算法。简单来说,就是通过从高斯分布中抽取的随机扰动来计算有限差分,并将其作为梯度的近似估计,RGE 数学公式如下所示。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

在此之前,零阶优化已经大量应用于机器学习问题中,比如对抗样本生成和防御,黑箱模型解释,强化学习和自动机器学习;详细的算法和应用介绍请参看 [1]。在大模型领域,MeZO [2] 率先提出将零阶随机梯度下降法(ZO-SGD)用作大模型微调,并展示了零阶优化器的无限潜力。于此同时,ZO-SGD 是最简单、基本的 BP-free 优化器,它的许多更高级的变种 [3] 能否在大模型微调领域带给我们更多惊喜,是一个亟待研究的课题。本文系统地评测了以下无需反向传播(BP-free)的优化算法在大模型微调任务上的性能、效率和兼容性,目的是向社区展示零阶优化器在多种大模型任务上的广泛潜力:

  • ZO-SGD:零阶随机梯度下降 [4]
  • ZO-SGD-Sign:基于符号的(sign-based)零阶随机梯度下降 [5]
  • ZO-SGD-MMT:带有动量(momentum)的零阶随机梯度下降 [6]
  • ZO-SGD-Cons:保守(conservative)梯度更新的零阶随机梯度下降 [7]
  • ZO-Adam:零阶 Adam 优化器 [8]

本研究还包括了 Forward-Grad [9] 方法,该方法基于沿随机方向向量的方向导数来无偏估计梯度。值得注意的是,Forward-Grad 虽然不直接使用梯度回传,但是却仍然用到了自动微分算法,因此它是一种一阶的 BP-free 算法。

综上所述,本文的评测包含了上述 5 种零阶优化器以及 Forward-Grad 方法,同时对比一阶优化器中最常用的 FO-SGD 和 FO-Adam。在具体微调形式上,评测全面覆盖了 5 种 LLM 架构(RoBERTa, OPT, LLaMA, Vicuna, Mistral),3 种不同复杂度的任务(SST2, COPA, WinoGrande),以及 4 种微调方案(full-tuning, LoRA, prompt tuning, prefix tuning)。

大模型微调准确性评测

作者指出,为了有效地利用零阶优化器对大型模型在下游任务上进行微调,必须合理地运用输入模板,以便将下游任务与预训练任务进行对齐。例如对于 SST2 来说,使用模板 “SENTENCE. It was [terrible|great].” 能够在 ZO-SGD 上带来约 10% 的性能提升。然而对于一阶优化器(如 FO-SGD),无论是否使用模板性能差异都不大,衬托出零阶优化器的独特性。

SST2 作为一个较为基础的任务,其实验结果可以支持以下结论:

  • ZO-Adam 似乎是最有效的零阶优化器:在 8 个微调设置中的 4 个中表现最佳。
  • Forward-grad 是一种竞争力强但以前被忽视的方法,特别是在全模型微调 (full fine-tuning) 中。
  • ZO-SGD-Cons 和 ZO-SGD-MMT 也展示了强大的性能,而 ZO-SGD-Sign作为最简单的零阶优化器,往往是最弱的方法。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

进一步,该研究使用更大的模型 OPT-13B,在更复杂、更困难的任务(COPA 和 WinoGrande)上进行实验,得出以下结论:

  • 在更复杂的任务中,不同优化器的性能差异被进一步放大。
  • ZO-Adam 和 ZO-SGD-MMT 在各种实验下展示了非常好的稳定性,这可能归因于减少了方差的设计。
  • LoRA 微调对于零阶算法始终表现出强大的鲁棒性,在各种实验环境中稳定且可靠。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

git摸鱼周报自动化
git摸鱼周报自动化

生成周报:读取本机 Git 仓库最近一周的提交记录,按项目分类提炼总结,生成标准周报格式,通过微信推送并返回给用户。触发词:周报、weekly report、git总结、提交记录总结、工作周报。

下载
大模型微调内存开销评测与详解

以 OPT-13B 模型在 MultiRC 数据集上微调为例,作者还进一步对比分析了不同零阶和一阶优化器的内存与时间成本。如下表所示:首先,从内存效率的角度看,ZO-SGD、ZO-SGD-Cons 和 ZO-SGD-Sign 显示出了类似的高内存效率,只需要一个 A100 GPU 来进行大型语言模型的微调。这并不令人惊讶,因为这些零阶优化器采用相对简单的优化步骤,主要依赖于零阶梯度估计器 RGE 的利用。其次,Forward-Grad 似乎是零阶优化方法在内存效率方面超过一阶方法的临界点(例如与 ZO-Adam 相比)。最后,与一阶方法相比,零阶优化每次迭代的运行时间成本降低了约 41.9%(以 ZO-SGD 与 FO-SGD 为例)。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

作者进一步深入比较了 ZO-SGD 与 FO-SGD 在不同序列长度下的内存效率。可以看到,ZO-SGD 的内存消耗保持一致,因为其峰值内存消耗仅由模型参数大小决定,相比之下,随着序列长度的增加,FO-SGD 的峰值内存消耗先保持不变,然后开始增加。因此,在长上下文长度的设置中,ZO-SGD 将展示出更好的内存效率优势。具体的内存理论值和实验值可参见原论文。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

三种改进算法用以增强零阶优化器

零阶优化器在应用于 LLM 时收敛效率受限,主要是因为它们在梯度估计上的方差较大。为了进一步增强零阶优化器,作者从降低梯度估计方差的角度入手,提出了三种进阶算法,包括:分块零阶微调(block-wise ZO fine-tuning)、零阶和一阶混合微调(hybrid ZO and FO fine-tuning)、引入稀疏性的零阶梯度估计(sparsity-induced ZO gradient estimation)。

分块零阶微调(Block-wise ZO fine-tuning)此方法的主要出发点在于,如果零阶优化器在估计梯度时,对 LLM 中参数分块分别进行扰动,通过降低问题规模的方式来见效每次对梯度估计的方差,从而改进优化性能。这种方法的优点体现在能够对模型梯度进行更准确的估计,但是完成一次梯度估计所需要的前向传播的次数会增加。例如,OPT-1.3B 可以分成 26 个参数块(24 个 Transformers 层、嵌入层和 LM 分类头),那么零阶优化器每次计算模型梯度时就会计算 26 次前向传播。为了公平比较 ZO-SGD 和 ZO-SGD-Block,作者还比较了另一种 ZO-SGD 变体的性能,该变体每次对完整的模型进行参数扰动,并将多次扰动后的梯度估计求平均(例如 OPT-1.3B 的 26 次),以此来保证比较时的前向传播次数相同。OPT-1.3B 上实验结果表明,ZO-SGD-Block 大幅超越了两种 ZO-SGD。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

零阶和一阶混合训练(Hybrid ZO and FO fine-tuning)反向传播(BP)从深层至浅层神经网络依次计算权重梯度。由于零阶优化器在内存占用上有远超传统一阶优化器的优势,但一阶优化器的性能往往更好。因此,采用零阶和一阶优化器的结合将达到一种内存使用和性能之间的平衡(trade-off)。具体而言,对于较深层次网络,可以利用一阶优化器通过反向传播精确计算梯度;对于浅层网络,则可以通过零阶优化器进行梯度估算。实验结果表明,在浅层部分(例如 OPT-1.3B 的前 8/24 层)采用零阶优化器,而在剩余的深层部分使用一阶优化器,可以在节约大约三分之一的显存的同时,达到与完全使用一阶优化器相同的性能水平。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

使用稀疏梯度的零阶优化器(ZO with gradient pruning)在一阶优化器中,梯度剪裁通常用于加速训练过程;而在零阶优化器中,通过梯度剪裁引入的稀疏梯度可以进一步降低梯度估计的方差,从而提高性能。本文研究了在零阶优化器中应用基于幅值的剪裁策略来获取每一层的稀疏率,然后根据这些稀疏率生成随机的稀疏梯度掩码(mask),并将其应用于随机梯度估计的扰动上。实验结果显示,适度的梯度稀疏性(约 20% 左右)能给零阶优化器带来一定程度的性能提升。

ICML 2024高分论文 | 零阶优化器微调大模型,大幅降低内存

结语

在本文中,我们展示了零阶优化器在大型语言模型微调中的有效应用。通过利用损失差分来近似梯度,零阶优化方法避免了反向传播和激活存储的需求,极大地节省了内存资源。我们通过扩大已有的研究范围,将不同的零阶优化方法、任务类型及评估指标容纳到了本次评测中,进行了首次系统的零阶优化技术基准研究。我们的研究不仅揭示了这些方法在精度和效率方面的表现,还深入探讨了任务对齐和前向梯度的关键作用。利用这些实验分析,我们提出了诸如分块优化、零阶与一阶混合训练、梯度稀疏化等技术,以进一步增强基于零阶优化的大模型微调。这些改进技术旨在在保持内存效率的同时,提高微调的准确性。

我们坚信,这些发现和技术的应用可以大力降低大模型研究对硬件资源的要求,使得大模型微调在低端 GPU 也成为可能,从而进一步推动学术研究并在工业界产生实际而有价值的影响。我们鼓励广大研究人员和技术开发者关注我们的研究成果,并探索更多利用 ZO 优化的可能性。未来的研究将继续探索这一领域的深层问题,以解锁 LLM 微调中的更多潜力。

了解更多内容请参考论文与 GitHub 仓库,获取更多信息和资源。

Reference:
[1] Liu, et al,. "A primer on zeroth-order optimization in signal processing and machine learning." IEEE Signal Processing Magazine 37, no. 5 (2020): 43-54.
[2] Malladi, et al., “Fine-Tuning Language Models with Just Forward Passes.” NeurIPS’ 2023.
[3] Liu, et al., “A Primer on Zeroth-Order Optimization in Signal Processing and Machine Learning.” IEEE Signal Processing Magazine.
[4] Ghadimi, et al., “Stochastic First- and Zeroth-order Methods for Nonconvex Stochastic Programming.” 
[5] Liu, et al., “signSGD via Zeroth-Order Oracle. ” ICLR’ 2019.
[6] Huang, et al., “Accelerated Zeroth-Order and First-Order Momentum Methods from Mini to Minimax Optimization.” JMLR’ 2022. 
[7] Kim, et al., “Curvature-Aware Derivative-Free Optimization.”
[8] Chen, et al., “ZO-AdaMM: Zeroth-Order Adaptive Momentum Method for Black-Box Optimization.”
[9] Baydin, et al., “Gradients without Backpropagation.”

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

相关专题

更多
github中文官网入口 github中文版官网网页进入
github中文官网入口 github中文版官网网页进入

github中文官网入口https://docs.github.com/zh/get-started,GitHub 是一种基于云的平台,可在其中存储、共享并与他人一起编写代码。 通过将代码存储在GitHub 上的“存储库”中,你可以: “展示或共享”你的工作。 持续“跟踪和管理”对代码的更改。

8605

2026.01.21

GitHub官网入口版本汇总
GitHub官网入口版本汇总

本专题整合了GitHub入口版本地址汇总,阅读专题下面的文章了解更多详细内容。

898

2026.04.02

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

6196

2023.08.14

oracle清空表数据
oracle清空表数据

当表中的数据不需要时,则应该删除该数据并释放所占用的空间。本专题为大家提供oracle清空表数据的相关文章,帮助大家解决该问题。

1021

2023.08.16

Oracle中declare的使用
Oracle中declare的使用

Oracle DECLARE语句是PL/SQL编程语言中用于声明变量、常量、游标或异常的关键字。它的主要作用是在程序中定义这些对象,以便在后续的代码中使用。DECLARE语句的语法简单明了,可以根据需要声明多个对象。通过使用这些声明的对象,可以进行各种操作,如计算、查询数据库、处理异常等 。

3013

2023.09.15

oracle怎么分页
oracle怎么分页

实现分页的步骤:1、使用ROWNUM进行分页查询;2、在执行查询之前进行设置分页参数;3、使用"COUNT(*)"函数来获取总行数,并使用"CEIL"函数来向上取整计算总页数;4、在外部查询中使用"WHERE"子句来筛选出特定的行号范围,以实现分页查询。想了解更多oracle怎么分页的文章,可以来阅读本专题先的文章。

3010

2023.09.18

Oracle查看表操作历史记录
Oracle查看表操作历史记录

查看操作历史记录的方法:1、使用Oracle内置的审计功能,可以记录数据库中发生的各种操作,包括登录、DDL语句、DML语句等;2、使用Oracle日志文件,其中包含了数据库中发生的各种操作,可以通过查看日志文件来获取操作历史记录;3、使用Oracle的Flashback功能,可以查看数据库在某个时间点的操作历史记录;4、使用第三方工具等。本专题还提供其他查看表操作的文章,大家可以免费阅读。

1709

2023.09.19

Oracle中RAC的用法
Oracle中RAC的用法

Oracle中RAC的用法:1、通过在多个服务器上运行数据库实例来提供高可用性;2、允许在需要时增加或减少节点数量;3、通过将工作负载分布到多个节点上来实现负载均衡;4、使用共享存储来实现多个节点之间的数据共享;5、允许多个节点同时处理数据库请求,从而实现并行处理;6、提供了透明故障切换功能;7、使用了一些技术来确保数据的一致性;8、提供了管理工具来简化RAC环境的管理和维护。本专题还提供RAC相关的其他文章,大家可以免费阅读。

2333

2023.09.19

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

40

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Gradle 9 主版本升级指南
Gradle 9 主版本升级指南

共0课时 | 0人学习

Gradle 安全最佳实践
Gradle 安全最佳实践

共0课时 | 0人学习

Gradle 依赖管理最佳实践
Gradle 依赖管理最佳实践

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn