当前位置: 首页 > news >正文

LoRA: Low-Rank Adaptation Abstract

LoRA: Low-Rank Adaptation Abstract

在这里插入图片描述

LoRA 论文的摘要介绍了一种用于减少大规模预训练模型微调过程中可训练参数数量和内存需求的方法,例如拥有1750亿参数的GPT-3。LoRA 通过冻结模型权重并引入可训练的低秩分解矩阵,减少了10,000倍的可训练参数,并降低了3倍的GPU内存使用量,同时在性能上与完全微调持平,并且没有额外的推理延迟。更多信息请访问 LoRA GitHub。
LoRA GitHub。

LoRA(低秩适配)的主要优势

  1. 共享预训练模型:LoRA 通过冻结预训练模型,并高效替换低秩矩阵,实现任务间的切换。
  2. 提升效率:LoRA 仅需训练注入的小型低秩矩阵,减少高达三倍的硬件需求。
  3. 无推理延迟:通过将可训练的矩阵与冻结的权重融合,不会引入额外的推理延迟。
  4. 兼容性:LoRA 与诸如前缀微调的许多方法兼容,增加了应用中的灵活性。

术语和约定:

这一部分介绍了 LoRA 论文中使用的术语和约定,包括自注意力机制中的投影矩阵 W q W_q Wq, W k W_k Wk, W v W_v Wv, 和 W o W_o Wo,以及预训练权重矩阵 W 0 W_0 W0,和梯度更新 Δ W \Delta W ΔW

完全微调过程:

在完全微调过程中,模型初始化为预训练的权重 Φ 0 \Phi_0 Φ0,并通过梯度下降反复更新为 Φ 0 + Δ Φ \Phi_0 + \Delta \Phi Φ0+ΔΦ,以最大化条件语言建模的目标函数:

max ⁡ Φ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( P Φ ( y t ∣ x , y < t ) ) \max_{\Phi} \sum_{(x,y) \in \mathcal{Z}} \sum_{t=1}^{|y|} \log \left( P_{\Phi} (y_t | x, y_{<t}) \right) Φmax(x,y)Zt=1ylog(PΦ(ytx,y<t))

其中一个主要缺点是,对于每个下游任务,必须学习一组不同的参数 Δ Φ \Delta \Phi ΔΦ,其维度等于 ∣ Φ 0 ∣ |\Phi_0| Φ0。因此,如果预训练模型很大(例如 GPT-3 具有约 1750 亿参数),存储和部署多个独立的微调模型将非常具有挑战性,甚至不可行。

为了解决这一问题,本文采用了一种更加高效的参数化方法,任务特定的参数增量 Δ Φ = Δ Φ ( Θ ) \Delta \Phi = \Delta \Phi (\Theta) ΔΦ=ΔΦ(Θ) 被进一步编码为一个更小的参数集 Θ \Theta Θ,其维度 ∣ Θ ∣ ≪ ∣ Φ 0 ∣ |\Theta| \ll |\Phi_0| ∣Θ∣Φ0。优化 Δ Φ \Delta \Phi ΔΦ 的任务变为优化 Θ \Theta Θ

max ⁡ Θ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( p Φ 0 + Δ Φ ( Θ ) ( y t ∣ x , y < t ) ) \max_{\Theta} \sum_{(x,y) \in \mathcal{Z}} \sum_{t=1}^{|y|} \log \left( p_{\Phi_0 + \Delta \Phi (\Theta)} (y_t | x, y_{<t}) \right) Θmax(x,y)Zt=1ylog(pΦ0+ΔΦ(Θ)(ytx,y<t))

在随后的部分中,我们提出了一种使用低秩表示来编码 Δ Φ \Delta \Phi ΔΦ,这既高效又节省内存。对于 GPT-3 这种 1750 亿参数的预训练模型,可训练的参数 Θ \Theta Θ 数量可以小至 Φ 0 \Phi_0 Φ0 的 0.01%。

低秩参数化更新矩阵

神经网络包含许多执行矩阵乘法的全连接层。这些层中的权重矩阵通常具有全秩。在适应特定任务时,Aghajanyan 等(2020)指出,预训练语言模型具有低“内在维度”,即便在投影到较小子空间时仍能有效学习。

基于此,我们假设权重的更新在适应过程中也具有低“内在秩”。对于预训练权重矩阵 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0Rd×k,我们通过低秩分解 W 0 + Δ W = W 0 + B A W_0 + \Delta W = W_0 + BA W0+ΔW=W0+BA 来约束其更新,其中 B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r A ∈ R r × k A \in \mathbb{R}^{r \times k} ARr×k,且秩 r ≪ min ⁡ ( d , k ) r \ll \min(d, k) rmin(d,k)

在训练过程中, W 0 W_0 W0 被冻结且不接受梯度更新,而 A A A B B B 包含可训练参数。注意, W 0 W_0 W0 Δ W = B A \Delta W = BA ΔW=BA 使用相同输入进行乘法运算,输出向量按坐标相加。对于 h = W 0 x h = W_0 x h=W0x,我们修改后的前向传递变为:

h = W 0 x + Δ W x = W 0 x + B A x h = W_0 x + \Delta W x = W_0 x + BA x h=W0x+ΔWx=W0x+BAx

我们在图 1 中展示了这种重新参数化方法。我们为 A A A 使用随机高斯初始化,并将 B B B 初始化为零,因此在训练开始时 Δ W = B A \Delta W = BA ΔW=BA 为零。然后我们通过 α r \frac{\alpha}{r} rα 缩放 Δ W x \Delta W x ΔWx,其中 α \alpha α 是与 r r r 成比例的常数。当使用 Adam 优化时,调节 α \alpha α 与调节学习率基本相同。因此,我们简单地将 α \alpha α 设置为我们尝试的第一个 r r r,且不进行微调。此缩放有助于减少在变化 r r r 时重新调节超参数的需要。

这种高效的低秩方法大大减少了参数数量,使得在保持性能的同时可以进行高效微调。

更广泛的微调

LoRA 引入了一种更广泛的微调方法,允许我们仅训练预训练参数的一部分,而不需要积累梯度更新以使权重矩阵在适应过程中达到全秩。通过设置 LoRA 秩 ( r ) 等于预训练权重矩阵的秩,我们可以大致恢复完整微调的表现能力。随着可训练参数的增加,LoRA 训练逐渐逼近原始模型的训练结果,而其他基于适配器的方法则趋向于一个无法处理长输入的简单 MLP。

无额外推理延迟

LoRA 在推理过程中没有额外的延迟。我们可以显式计算并存储 W = W 0 + B A W = W_0 + BA W=W0+BA,并像往常一样执行推理。当需要切换任务时,我们可以通过减去 B A BA BA 并添加不同的 B ′ A ′ B'A' BA 来恢复 W 0 W_0 W0,这是一个高效的操作,几乎没有内存开销。这确保了在推理过程中,不会引入比微调模型更多的延迟。

应用于 Transformer 的 LoRA

原则上,我们可以将 LoRA 应用于神经网络中的任何权重矩阵子集,以减少可训练参数的数量。在 Transformer 架构中,自注意力模块中的四个权重矩阵 ( W_q ), ( W_k ), ( W_v ), ( W_o ) 以及 MLP 模块中的两个矩阵被视为维度为 ( d_{\text{model}} \times d_{\text{model}} ) 的单一矩阵,尽管输出维度通常会被切割成注意力头。我们将研究仅限于适配注意力权重,冻结 MLP 模块(因此它们不会在下游任务中被训练),以简化操作并提高参数效率。我们进一步研究了不同类型的注意力权重矩阵在 Transformer 中的适配效果,详见 [Section 7.1]。至于适配 MLP 层、LayerNorm 层以及偏差权重的实证研究,则留待未来工作。

实际的优势与限制

最显著的优势来自于减少了内存和存储的使用。对于使用 Adam 优化器训练的大型 Transformer,VRAM 使用量可以减少最多 ( \frac{2}{3} ),如果 ( r \ll d_{\text{model}} ),因为我们无需存储被冻结参数的优化器状态。在 GPT-3 175B 模型上,我们将训练期间的 VRAM 消耗从 1.2TB 降低到 350GB。对于 ( r = 4 ),并且仅适配查询和值投影矩阵,检查点大小减少了约 ( 10,000 \times ) (从 350GB 到 35MB)
。这使得我们可以使用显著更少的 GPU 进行训练,并避免 I/O 瓶颈。另一个好处是,我们可以通过仅交换 LoRA 权重而不是所有参数,在任务之间动态切换。这使得可以创建许多定制模型,这些模型可以在机器上即时进行切换,存储在 VRAM 中的预训练权重不会被影响。在 GPT-3 175B 的训练过程中,与全微调相比,LoRA 还观察到了 25% 的加速,因为我们不需要为大多数参数计算梯度。

LoRA 也有其局限性。例如,将输入批量化到不同的任务并非易事。如果在前向传递中选择将 ( A ) 和 ( B ) 吸收到 ( W ) 中以消除额外的推理延迟,这会有一定的限制。尽管可以选择不合并权重,并动态选择 LoRA 模块以在延迟不重要的场景中使用批量样本。

在这里插入图片描述

该表(表 4)展示了在三个任务上应用各种适应方法的 GPT-3 175B 的性能:WikiSQL、MultiNLI-matched(MNLI-m)和 SAMSum。主要度量指标是 WikiSQL 和 MNLI-m 上的验证准确率,以及 SAMSum 上的 Rouge-1/2/L 得分。

以下是结果的详细说明:

  • GPT-3 (FT)(完全微调)是基准方法。它对整个 175B 参数进行训练,并在 WikiSQL 上达到 73.8% 的准确率,在 MNLI-m 上达到 89.5%,在 SAMSum 上的 Rouge-1/2/L 得分为 52.0/28.0/44.5。

  • GPT-3 (BitFit) 仅训练了 14.2M 参数,在 MNLI-m 上表现相似(91.0%),但在 WikiSQL 上的准确率略低(71.3%)。Rouge 得分也比完全微调略低。

  • GPT-3 (PreEmbed)GPT-3 (PreLayer) 代表基于预训练嵌入和层的方法。这些方法在 WikiSQL 和 MNLI-m 上的表现相对较差,尤其是 PreEmbed 模型,与 LoRA 和完全微调相比得分显著较低。

  • GPT-3 (Adapter) 方法相较于完全微调训练的参数较少。高秩适配器(AdapterH)在 WikiSQL 上达到 73.2% 的准确率,在 MNLI-m 上达到最高的 91.5% 准确率,并且在 SAMSum 上表现良好(53.2/29.0/45.1)。

  • GPT-3 (LoRA):LoRA(低秩适应)与其他方法相比表现特别出色。LoRA 仅训练了 4.7M 参数,在 WikiSQL 上达到接近完全微调的准确率(73.4%),在 MNLI-m(91.7%)和 SAMSum(53.8/29.8/45.9)上表现更好。对于 37.7M 参数的 LoRA 模型,WikiSQL 得分更高(74.0%)。

总结:

  • LoRA 在大多数任务上都优于其他适应方法,甚至在某些任务上超过了完全微调的性能,同时训练的参数远远少于完全微调。
  • LoRA 减少了大规模微调的需求,同时在测试任务上仍能达到较高的准确率和 Rouge 得分。

相关文章:

LoRA: Low-Rank Adaptation Abstract

LoRA: Low-Rank Adaptation Abstract LoRA 论文的摘要介绍了一种用于减少大规模预训练模型微调过程中可训练参数数量和内存需求的方法&#xff0c;例如拥有1750亿参数的GPT-3。LoRA 通过冻结模型权重并引入可训练的低秩分解矩阵&#xff0c;减少了10,000倍的可训练参数&#xf…...

正点原子阿尔法ARM开发板-IMX6ULL(二)——介绍情况以及汇编

文章目录 一、裸机开发&#xff08;21个&#xff09;二、嵌入式Linux驱动例程三、汇编3.1 处理器内部数据传输指令3.2 存储器访问指令3.3 压栈和出栈指令3.4 跳转指令3.5 算术运算指令3.6 逻辑运算指令 一、裸机开发&#xff08;21个&#xff09; 二、嵌入式Linux驱动例程 三、…...

Unreal Engine——AI生成高精度的虚拟人物和环境(虚拟世界构建、电影场景生成)(一)

一、Unreal Engine 介绍 Unreal Engine&#xff08;虚幻引擎&#xff09;是由Epic Games开发的强大3D游戏开发引擎&#xff0c;自1998年首次发布以来&#xff0c;已经历了多个版本的迭代。虚幻引擎主要用于制作高品质的3D游戏&#xff0c;但也广泛用于电影、建筑、仿真等其他领…...

Emlog程序屏蔽用户IP拉黑名单插件

插件介绍 在很多时候我们需要得到用户的真实IP地址&#xff0c;例如&#xff0c;日志记录&#xff0c;地理定位&#xff0c;将用户信息&#xff0c;网站数据分析等,其实获取IP地址很简单&#xff0c;感兴趣的可以参考一下。 今天给大家带来舍力写的emlog插件&#xff1a;屏蔽…...

发送成绩的app或小程序推荐

老师们&#xff0c;新学期的第一次月考马上开始&#xff0c;是不是还在为如何高效、便捷地发布成绩而头疼呢&#xff1f;别担心&#xff0c;都2024年了&#xff0c;我们有更智能的方式来解决这个问题&#xff01; 给大家安利一个超级实用的工具——易查分小程序。这个小程序简…...

51单片机-AT24C02(IIC总线介绍及其时序编写步骤)-第一节(下一节实战)

IIC开始通信&#xff08;6大步&#xff09; 我以前的文章也有对基本常用的通信协议讲解&#xff0c;如SPI UART IIC RS232 RS485 CAN的讲解&#xff0c;可前往主页查询&#xff0c;&#xff08;2024.9.12,晚上20&#xff1a;53&#xff0c;将AT24C02存储芯片&#xff0c;掉电不…...

<<编码>> 第 11 章 逻辑门电路--或非门, 与非门, 缓冲器 示例电路

继电器或非门 info::操作说明 鼠标单击开关切换开合状态 闭合任意一个开关可使电路断开 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/code-hlchs-examples/assets/circuit/code-hlchs-ch11-19-nor-gate-by-relay.txt 或非门 i…...

股票api接口程序化报备,程序化交易监管对个人量化交易者有何影响

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

如何自己搭建一个网站?

今天的文章总结适合0基础&#xff0c;网站搭建的技巧和流程&#xff0c;哪怕你是小白&#xff0c;不会编程&#xff0c;也可以制作非常漂亮且实用的企业网站&#xff0c;如果想做个人博客更是不在话下。希望我的经验能帮助更多没有过多的经费、没有建站基础的朋友。用户跟着我的…...

虚拟化数据恢复—断电导致虚拟机目录项被破坏的数据恢复案例

虚拟化数据恢复环境&#xff1a; 某品牌服务器&#xff08;部署VMware EXSI虚拟机&#xff09;同品牌存储&#xff08;存放虚拟机文件&#xff09;。 虚拟化故障&#xff1a; 意外断电导致服务器上某台虚拟机无法正常启动。查看虚拟机配置文件发现这台故障虚拟机除了磁盘文件以…...

[机器学习]聚类算法

1 聚类算法简介 # 导包 from sklearn.datasets import make_blobs import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.metrics import calinski_harabasz_score # 构建数据 x,ymake_blobs(n_samples1000,n_features2,centers[[-1,-1],[0,0],[1…...

JVM面试真题总结(七)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 解释GC的引用计数算法及其局限性 引用计数算法是一种非常直观、简…...

深入理解CASAtomic原子操作类详解

1.CAS介绍 什么是 CAS CAS&#xff08;Compare And Swap&#xff0c;比较与交换&#xff09;&#xff0c;是非阻塞同步的实现原理&#xff0c;它是CPU硬件层面的一种指令&#xff0c;从CPU层面能保证"比较与交换"两个操作的原子性。CAS指令操作包括三个参数&#x…...

C51单片机-单按键输入识别,键盘消抖

【实验目的】 独立按键的识别方法、键盘消抖等。 【实验现象】 每按一次独立键盘的S2键&#xff0c;与P1口相连的八个发光二极管中点亮的一个往下移动一位。 【实验说明】 关于按键去抖动的解释&#xff0c;我们在手动按键的时候&#xff0c;由于机械抖动或是其它一些非人为的因…...

基于CNN卷积神经网络迁移学习的图像识别实现

基于CNN卷积神经网络迁移学习的图像识别实现 基于CNN卷积神经网络迁移学习的图像识别实现写在前面一&#xff0c;原理介绍迁移学习的基本方法1.样本迁移&#xff08;Instance based TL&#xff09;2.特征迁移&#xff08;Feature based TL&#xff09;3.模型迁移&#xff08;Pa…...

【iOS】push和present的区别

【iOS】push和present的区别 文章目录 【iOS】push和present的区别前言pushpop presentdismiss简单小demo来展示dismiss和presentdismiss多级 push和present的区别区别相同点 前言 在iOS开发中&#xff0c;我们经常性的会用到界面的一个切换的问题&#xff0c;这里我们需要理清…...

在Linux服务器上添加用户并设置自动登录

需要在Linux服务器上添加一个新用户&#xff0c;可以使用以下命令 # 这个命令会创建一个新的用户账户&#xff0c;默认情况下不会设置密码&#xff0c;不会在 /home 目录下为新用户创建home目录&#xff1a; # sudo useradd 用户名 # # 如果希望同时为新用户创建家目录&#…...

网站被爬,数据泄露,如何应对不断强化的安全危机?

近年来&#xff0c;众多传统零售商和互联网企业借助大数据、人工智能等先进技术手段&#xff0c;通过场景化设计、优化客户体验、融合线上线下渠道&#xff0c;推动了网络电商行业的消费方式变革&#xff0c;成为电商领域新的增长动力。 但值得注意的是&#xff0c;网络电商带来…...

为什么HTTPS会引入SSL/TLS协议

这时我面试遇到过的问题,整理了一下,希望对大家有帮助! 祝大家秋招顺利! 首先 SSL/TLS 协议通过使用数字证书来实现服务器身份认证, 当用户访问一个 HTTPS 网站时,浏览器会验证服务器的数字证书, 1.首先他对验证整证书是否在有效期 2.其次他会看证书中的服务器域名…...

Spring AOP,通知使用,spring事务管理,spring_web搭建

spring AOP AOP概述 AOP面向切面编程是对面向对象编程的延续&#xff08;AOP &#xff08;Aspect Orient Programming&#xff09;,直译过来就是 面向切面编程,AOP 是一种编程思想&#xff0c;是面向对象编程&#xff08;OOP&#xff09;的一种补充。&#xff09; 面向切面编…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

sshd代码修改banner

sshd服务连接之后会收到字符串&#xff1a; SSH-2.0-OpenSSH_9.5 容易被hacker识别此服务为sshd服务。 是否可以通过修改此banner达到让人无法识别此服务的目的呢&#xff1f; 不能。因为这是写的SSH的协议中的。 也就是协议规定了banner必须这么写。 SSH- 开头&#xff0c…...