让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

AIxiv专栏是本站发布学术、技术内容的栏目。过去数年,本站AIxiv专栏接收报道了2000多篇内容,覆盖全球各大高校与企业的顶级实验室,有效促进了学术交流与传播。如果您有优秀的工作想要分享,欢迎投稿或者联系报道。投稿邮箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com。
近期,大语言模型、文生图模型等大规模 AI 模型迅猛发展。在这种形势下,如何适应瞬息万变的需求,快速适配大模型至各类下游任务,成为了一个重要的挑战。受限于计算资源,传统的全参数微调方法可能会显得力不从心,因此需要探索更高效的微调策略。上述挑战催生了参数高效微调(PEFT)技术在近期的快速发展。
为了全面总结 PEFT 技术的发展历程并及时跟进最新的研究进展,最近,来自美国东北大学、加州大学 Riverside 分校、亚利桑那州立大学和纽约大学研究者们调研、整理并总结了参数高效微调(PEFT)技术在大模型上的应用及其发展前景,并总结为一篇全面且前沿的综述。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

论文链接:https://arxiv.org/pdf/2403.14608.pdf
PEFT 提供了一个高效的针对预训练模型的下游任务适配手段,其通过固定大部分预训练参数并微调极少数参数,让大模型轻装上阵,迅速适配各种下游任务,让大模型变得不再「巨无霸」。
全文长达 24 页,涵盖了近 250 篇最新文献,刚发布就已经被斯坦福大学、北京大学等机构所引用,并在各平台都有着不小的热度。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

具体来说,该综述分别从 PEFT 算法分类,高效 PEFT 设计,PEFT 跨领域应用,以及 PEFT 系统设计部署四大层面,对 PEFT 的发展历程及其最新进展进行了全面且细致的阐述。无论是作为相关行业从业者,或是大模型微调领域的初学者,该综述均可以充当一个全面的学习指南。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

1、PEFT 背景介绍
论文首先以最近大热的 LLaMA 模型作为代表,分析并阐述了大语言模型(LLM)和其他基于 Transformer 的模型的架构和计算流程,并定义了所需的符号表示,以便于在后文分析各类 PEFT 技术。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

此外,作者还概述了 PEFT 算法的分类方法。作者根据不同的操作将 PEFT 算法划分为加性微调、选择性微调、重参数化微调和混合微调。图三展示了 PEFT 算法的分类及各分类下包含的具体算法名称。各分类的具体定义将在后文详细讲解。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

在背景部分,作者还介绍了验证 PEFT 方法性能所使用的常见下游基准测试和数据集,便于读者熟悉常见的任务设置。
2、PEFT 方法分类
作者首先给出了加性微调、选择性微调、重参数化微调和混合微调的定义:
加性微调通过在预训练模型的特定位置添加可学习的模块或参数,以最小化适配下游任务时模型的可训练的参数量。
选择性微调在微调过程中只更新模型中的一部分参数,而保持其余参数固定。相较于加性微调,选择性微调无需更改预训练模型的架构。
重参数化微调通过构建预训练模型参数的(低秩的)表示形式用于训练。在推理时,参数将被等价的转化为预训练模型参数结构,以避免引入额外的推理延迟。
这三者的区分如图四所示:

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

可图大模型 可图大模型

可图大模型(Kolors)是快手大模型团队自研打造的文生图AI大模型

可图大模型 32 查看详情 可图大模型

混合微调结合了各类 PEFT 方法的优势,并通过分析不同方法的相似性以构建一个统一的 PEFT 架构,或寻找最优的 PEFT 超参数。
接下来,作者对每个 PEFT 种类进一步细分:
A. 加性微调:
1)Adapter
Adapter 通过在 Transformer 块内添加小型 Adapter 层,实现了参数高效微调。每个 Adapter 层包含一个下投影矩阵、一个激活函数,和一个上投影矩阵。下投影矩阵将输入特征映射到瓶颈维度 r,上投影矩阵将瓶颈特征映射回原始维度 d。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

图五展示了三种典型的 Adapter 层在模型中的插入策略。Serial Adapter 顺序地插入到 Transformer 模块之后,Parallel Adapter 则并行地插入到 Transformer 模块旁。CoDA 是一种稀疏的 Adapter 方式,对于重要的 token,CoDA 同时利用预训练 Transformer 模块和 Adapter 分支进行推理;而对于不重要的 token,CoDA 则仅使用 Adapter 分支进行推理,以节省计算开销。
2)Soft Prompt
Soft Prompt 通过在输入序列的头部添加可学习的向量,以实现参数高效微调。代表性方法包括 Prefix-tuning 和 Prompt Tuning。Prefix-tuning 通过在每个 Transformer 层的键、值和查询矩阵前面添加可学习的向量,实现对模型表示的微调。Prompt Tuning 仅仅在首个词向量层插入可学习向量,以进一步减少训练参数。
3)Others
除了上述两种分类,还有一些 PEFT 方法同样也是在训练过程引入新的参数。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

典型的两种方法如图六所示。(IA) 3 引入了三个缩放向量,用于调整键、值以及前馈网络的激活值。SSF 则通过线性变换来调整模型的激活值。在每一步操作之后,SSF 都会添加一个 SSF-ADA 层,以实现激活值的缩放和平移。
B. 选择性微调:
1)非结构化掩码
这类方法通过在模型参数上添加可学习的二值掩码来确定可以微调的参数。许多工作,如 Diff pruning、FishMask 和 LT-SFT 等,都专注于计算掩码的位置。
2)结构化掩码
非结构化掩码对于掩码的形状没有限制,但这就导致了其影响效率低下。因此,一些工作,如 FAR、S-Bitfit、Xattn Tuning 等均对掩码的形状进行了结构化的限制。两者的区别如下图所示:

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

C. 重参数化微调:

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

1)低秩分解
这类方法通过寻找预训练权重矩阵的各种低维度重参数化形式,以代表整个参数空间进行微调。其中最为典型的方法为 LoRA,它通过添加两个额外的上投影和下投影矩阵来构建原始模型参数的低秩表示用于训练。在训练后,额外引入的参数还可以被无缝的合并到预训练权重中,避免引入额外推理开销。DoRA 将权重矩阵解耦为模长和方向,并利用 LoRA 来微调方向矩阵。
2)LoRA 衍生方法
作者将 LoRA 的衍生方法分为了动态选择 LoRA 的秩以及 LoRA 在各方面的提升。
LoRA 动态秩中,典型方法为 DyLoRA,其构造了一系列秩,用于在训练过程中同时训练,从而减少了用于寻找最优秩所耗费的资源。
LoRA 提升中,作者罗列了传统 LoRA 在各个方面的缺陷以及对应的解决方案。
D. 混合微调:
这部分研究如何将不同 PEFT 技术融合进统一模型,并寻找一个最优的设计模式。此外,也介绍了一些采用神经架构搜索(NAS)用以得到最优 PEFT 训练超参数的方案。
3、高效 PEFT 设计

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

这部分,作者探讨了提升 PEFT 效率的研究,重点关注其训练和推理的延迟和峰值内存开销。作者主要通过三个角度来描述如何提升 PEFT 的效率。分别是:
PEFT 剪枝策略:即将神经网络剪枝技术和 PEFT 技术结合,以进一步提升效率。代表工作有 AdapterDrop、SparseAdapter 等。
PEFT 量化策略:即通过降低模型精度来减少模型大小,从而提高计算效率。在与 PEFT 结合时,其主要难点是如何更好的兼顾预训练权重以及新增的 PEFT 模块的量化处理。代表工作有 QLoRA、LoftQ 等。
内存高效的 PEFT 设计:尽管 PEFT 能够在训练过程中只更新少量参数,但是由于需要进行梯度计算和反向传播,其内存占用仍然较大。为了应对这一挑战,一些方法试图通过绕过预训练权重内部的梯度计算来减少内存开销,比如 Side-Tuning 和 LST 等。同时,另一些方法则尝试避免在 LLM 内部进行反向传播,以解决这一问题,例如 HyperTuning、MeZO 等。
4、PEFT 的跨领域应用
在这一章中,作者探讨了 PEFT 在不同领域的应用,并就如何设计更优的 PEFT 方法以提升特定模型或任务的性能进行了讨论。本节主要围绕着各种大型预训练模型展开,包括 LLM、视觉 Transformer(ViT)、视觉文本模型以及扩散模型,并详细描述了 PEFT 在这些预训练模型的下游任务适配中的作用。
在 LLM 方面,作者介绍了如何利用 PEFT 微调 LLM 以接受视觉指令输入,代表性工作如 LLaMA-Adapter。此外,作者还探讨了 PEFT 在 LLM 持续学习中的应用,并提及了如何通过 PEFT 微调 LLM 来扩展其上下文窗口。
针对 ViT,作者分别描述了如何利用 PEFT 技术使其适配下游图像识别任务,以及如何利用 PEFT 赋予 ViT 视频识别能力。
在视觉文本模型方面,作者针对开放集图像分类任务,介绍了许多应用 PEFT 微调视觉文本模型的工作。
对于扩散模型,作者识别了两个常见场景:如何添加除文本外的额外输入,以及如何实现个性化生成,并分别描述了 PEFT 在这两类任务中的应用。
5、PEFT 的系统设计挑战
在这一章中,作者首先描述了基于云服务的 PEFT 系统所面临的挑战。主要包括以下几点:
集中式 PEFT 查询服务:在这种模式下,云服务器存储着单个 LLM 模型副本和多个 PEFT 模块。根据不同 PEFT 查询的任务需求,云服务器会选择相应的 PEFT 模块并将其与 LLM 模型集成。
分布式 PEFT 查询服务:在这种模式下,LLM 模型存储在云服务器上,而 PEFT 权重和数据集存储在用户设备上。用户设备使用 PEFT 方法对 LLM 模型进行微调,然后将微调后的 PEFT 权重和数据集上传到云服务器。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述多 PEFT 训练:挑战包括如何管理内存梯度和模型权重存储,以及如何设计一个有效的内核来批量训练 PEFT 等。

针对上述系统设计挑战,作者又列举了三个详细的系统设计案例,以更深入的分析这些挑战与其可行的解决策略。
Offsite-Tuning:主要解决微调 LLM 时出现的数据隐私困境以及大量资源消耗的问题。
PetS:提供了一个统一的服务框架,针对 PEFT 模块提供统一的管理和调度机制。

让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述

PEFT 并行训练框架:介绍了两种并行 PEFT 训练框架,包括 S-LoRA 和 Punica,以及他们如何提升 PEFT 的训练效率。
6、未来研究方向
作者认为,尽管 PEFT 技术已经在很多下游任务取得了成功,但仍有一些不足需要在未来的工作中加以解决。
建立统一的评测基准:尽管已存在一些 PEFT 库,但缺乏一个全面的基准来公平比较不同 PEFT 方法的效果和效率。建立一个公认的基准将促进社区内的创新和合作。
增强训练效率:PEFT 在训练过程中,其可训练参数量并不总是与训练过程中的计算和内存节省一致。如高效 PEFT 设计章节所述,未来的研究可以进一步探索优化内存和计算效率的方法。
探索扩展定律:许多 PEFT 技术都是在较小的 Transformer 模型上实现的,而其有效性不一定适用于如今的各种大参数量模型。未来的研究可以探索如何适应大型模型的 PEFT 方法。
服务更多模型和任务:随着更多大型模型的出现,如 Sora、Mamba 等,PEFT 技术可以解锁新的应用场景。未来的研究可以关注为特定模型和任务设计 PEFT 方法。
增强数据隐私:在服务或微调个性化 PEFT 模块时,中心化系统可能面临数据隐私问题。未来的研究可以探索加密协议来保护个人数据和中间训练 / 推理结果。
PEFT 与模型压缩:模型压缩技术如剪枝和量化对 PEFT 方法的影响尚未得到充分研究。未来的研究可以关注压缩后的模型如何适应 PEFT 方法的性能。

以上就是让大模型不再「巨无霸」,这是一份最新的大模型参数高效微调综述的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/420897.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Mac怎样使用连续互通相机扫描文档?跨设备协作
上一篇 2025年11月7日 09:19:34
怎么零基础开发制作一款教育培训类app?
下一篇 2025年11月7日 09:19:37

相关推荐

  • Debian syslog性能优化技巧有哪些

    提升Debian系统syslog (通常基于rsyslog)性能,关键在于精简配置和高效处理日志。以下策略能有效优化日志管理,提升系统整体性能: 精简配置,高效加载: 在rsyslog配置文件中,仅加载必要的输入、输出和解析模块。 使用全局指令设置日志级别和格式,避免不必要的处理。 自定义模板: 创…

    2026年5月10日
    000
  • JavaScript 闭包:理解闭包原理与内存泄漏问题

    闭包是函数访问其外部作用域变量的能力,即使外部函数已执行完毕。如 inner 函数引用 outer 中的 count,形成闭包,使变量持久存在。闭包本身无害,但可能因延长变量生命周期导致内存泄漏,例如事件监听器引用大对象时。若未及时清理 DOM 事件或定时器,闭包会阻止垃圾回收,造成内存占用过高。解…

    2026年5月10日
    000
  • Golang如何提升TCP长连接处理效率_Golang TCP长连接处理性能优化实践详解

    答案:通过非阻塞I/O、单Goroutine双工模型、sync.Pool对象复用、TCP_NODELAY优化及高效心跳管理,结合系统调优,可显著提升Golang百万级TCP长连接处理效率。 在高并发网络服务场景中,TCP长连接的处理效率直接影响系统的吞吐能力和资源消耗。Golang凭借其轻量级Gor…

    2026年5月10日
    000
  • Golang 文件IO操作与性能优化实践

    合理使用Go标准库并优化IO策略可显著提升文件处理性能。1. 使用bufio减少系统调用,适合小块读写;2. 大文件用流式读取避免OOM,小文件可一次性加载;3. 并发分片读取大文件并配合预读提升吞吐;4. 结合系统调优如O_DIRECT、关闭atime等防止IO瓶颈。 Go语言在文件IO操作上提供…

    2026年5月10日
    000
  • C++怎么使用静态库和动态库_C++链接静态库与动态库的方法与区别

    静态库在编译时链接,生成独立可执行文件;动态库运行时加载,节省内存。1. 静态库用ar打包.o文件为.a,编译时通过-L和-l链接;2. 动态库需-fPIC编译生成.so,运行前配置LD_LIBRARY_PATH或系统路径;3. 静态库体积大但部署方便,动态库共享内存利于更新。 在C++项目开发中,…

    2026年5月10日
    000
  • Python Pandas:高效合并多工作簿多工作表 Excel 数据

    本教程详细指导如何使用 Python Pandas 库高效合并来自多个 Excel 文件中指定工作表的数据。文章将解释如何遍历文件目录、正确加载 Excel 文件、识别并解析特定工作表,并将来自不同文件的同名工作表数据智能地整合到一个 Pandas DataFrame 字典中,同时提供完整的示例代码…

    2026年5月10日
    000
  • JavaScript DOM操作:点击关联元素获取目标文本内容的教程

    本教程详细介绍了如何通过JavaScript处理用户点击事件,并结合DOM的 closest() 和 querySelector() 方法,从复杂的HTML结构中准确获取目标元素的文本内容。文章强调了使用 addEventListener() 进行事件绑定、避免重复ID以及高效DOM遍历的最佳实践,…

    2026年5月10日
    000
  • 如何优化JavaScript代码的性能以避免运行时瓶颈?

    优化JavaScript性能需减少DOM操作,通过缓存查询、使用DocumentFragment和合并样式修改来降低重排重绘;2. 采用事件委托减少内存占用并提升绑定效率;3. 拆分长任务,利用requestIdleCallback、Web Worker和requestAnimationFrame避…

    2026年5月10日
    000
  • XML流式解析的优势是什么?

    流式解析能高效处理超大XML文件,因它边读边处理,内存占用低。SAX事件驱动、性能高但状态管理复杂;StAX拉模式灵活可控,适合复杂逻辑。挑战包括上下文维护、错误恢复难、验证集成和无随机访问,需用栈管理、索引或混合模式应对。 XML流式解析的优势在于它能够以极低的内存消耗处理任意大小的XML文档,尤…

    2026年5月10日
    000
  • PHP递归和迭代哪个快_PHP递归与迭代执行效率对比评测

    递归因函数调用开销大、内存消耗高,在PHP中执行效率通常低于迭代;以斐波那契数列为例,朴素递归时间复杂度达O(2^n),迭代为O(n),带缓存的递归可优化至O(n)但仍慢于迭代;通过microtime和memory_get_usage对比测试可验证该结论;启用OPcache等环境优化可提升整体性能,…

    2026年5月10日
    000
  • C# 如何高效读取超大xml文件

    使用 XmlReader 流式读取超大 XML 文件,避免内存溢出。1. 通过 XmlReader 逐节点解析,仅读取所需数据;2. 遇到 Record 节点时提取 Id 属性及 Name 元素值;3. 可结合 ReadSubtree 对局部子树使用 LINQ to XML 解析;4. 设置 Xml…

    2026年5月10日
    000
  • Go语言中基于Channel的并发快速排序:原理、实现与性能分析

    本文深入探讨了go语言中利用channel实现并发快速排序的机制。我们将分析其代码结构,阐明channel如何作为数据输入输出的管道,以及并发goroutine如何协同工作。同时,文章将重点评估这种实现方式的性能特点,指出其在展示go并发模型优雅性的同时,相比传统排序算法可能存在的性能开销与内存占用…

    2026年5月10日
    000
  • javascript闭包如何保存富文本状态

    javascript闭包如何保存富文本状态javascript闭包如何保存富文本状态javascript闭包如何保存富文本状态javascript闭包如何保存富文本状态

    闭包在富文本编辑器中扮演“守门人”和“隔离器”的角色,1. 它通过封装私有变量(如内容、撤销栈、选区)确保状态不被外部直接访问;2. 每个编辑器实例拥有独立的作用域,实现状态隔离;3. 提供公共方法作为唯一操作接口,保障数据一致性;4. 支持模块化与可维护性,便于测试与扩展;5. 需注意内存泄漏、过…

    2026年5月10日 用户投稿
    000
  • 如何计算C++结构体的大小?解析结构体内存对齐原则

    如何计算C++结构体的大小?解析结构体内存对齐原则如何计算C++结构体的大小?解析结构体内存对齐原则如何计算C++结构体的大小?解析结构体内存对齐原则如何计算C++结构体的大小?解析结构体内存对齐原则

    结构体内存对齐的原则包括:1. 结构体成员对齐,每个成员按自身大小对齐;2. 结构体整体对齐,整体大小需是对齐系数(通常为最大成员大小)的倍数;3. 填充字节插入以满足上述规则。例如,struct mystruct { char a; int b; char c;} 默认情况下会因填充导致大小为12…

    2026年5月10日 用户投稿
    000
  • Golang的函数字面量如何使用 讲解匿名函数的定义与调用方式

    Golang的函数字面量如何使用 讲解匿名函数的定义与调用方式Golang的函数字面量如何使用 讲解匿名函数的定义与调用方式Golang的函数字面量如何使用 讲解匿名函数的定义与调用方式Golang的函数字面量如何使用 讲解匿名函数的定义与调用方式

    go语言中的函数字面量(匿名函数)是一种无需命名即可直接定义和使用的函数,它能提升代码灵活性和表达力。1. 它可赋值给变量并调用;2. 可立即执行(iife);3. 可作为参数传递给其他函数;4. 适用于goroutine并发任务;5. 支持闭包,捕获外部变量形成“记忆体”。使用时需注意循环变量捕获…

    2026年5月10日 用户投稿
    100
  • Golang指针与结构体组合使用优化技巧

    使用指针指向结构体可避免复制开销,提升性能。在传递大型结构体时,传指针仅传递地址,减少内存占用和复制时间。如User和Image结构体示例所示,值传递会复制整个结构体,导致性能下降,而指针传递高效且能修改原数据。此外,处理嵌套指针时需检查nil,防止空指针异常,如Employee结构体中先判空emp…

    2026年5月10日
    000
  • 如何通过 JavaScript 的 File API 在浏览器中实现文件的分片上传?

    答案:浏览器文件分片上传通过File API将大文件切片,利用FormData逐个发送,结合并发控制与断点续传提升稳定性。具体为:1. 使用File.slice()按字节分割文件;2. 每片携带索引、总片数、fileId等信息通过fetch上传;3. 限制并发请求数避免资源耗尽,使用Promise控…

    2026年5月10日
    100
  • php opcache是如何工作的?PHP Opcache工作原理与配置

    PHP Opcache通过缓存编译后的操作码,避免重复解析编译,提升执行效率。启用后,首次请求生成Opcode并存入共享内存,后续请求直接加载缓存,跳过解析步骤。关键指标如opcache.hit_rate反映缓存命中率,理想值应达95%以上。通过phpinfo()或opcache_get_statu…

    2026年5月10日
    000
  • Golang缓存机制提升访问效率实践

    使用sync.Map实现内存缓存,结合TTL过期与LRU淘汰策略,可有效提升高并发下Golang服务性能,减少数据库压力。 在高并发服务场景中,频繁访问数据库或远程接口会显著影响响应速度和系统负载。Golang 作为高性能语言,天然适合构建高效缓存机制来减少重复计算和外部依赖调用。通过合理使用内存缓…

    2026年5月10日
    000
  • 怎样使用Node.js流处理数据?

    Node.js流处理通过可读、可写、双工和转换流实现高效数据处理,利用pipe()方法连接流并自动管理背压,结合stream.pipeline进行错误处理,适用于大文件、网络通信等场景,提升内存和时间效率。 在Node.js中处理数据,尤其当面对大量信息时,直接把所有内容加载到内存里往往不是一个好主…

    2026年5月10日
    100

发表回复

登录后才能评论
关注微信