AIGC002-LoRA让大模型微调更加轻盈方便!

AIGC002-LoRA让大模型微调更加轻盈方便!


文章目录

    • 0 论文工作
    • 1 论文方法
    • 2 效果

0 论文工作

这篇论文名为 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS,作者是 Edward Hu 等人。它提出了一种名为 低秩自适应 (Low-Rank Adaptation, LoRA) 的新方法,用于高效地适应大型语言模型到下游任务。
随着预训练语言模型规模的不断增大,对模型进行全参数微调变得越来越困难。例如,为每个任务部署一个独立的 175B 参数的 GPT-3 微调模型成本过高。为了解决这个问题,LoRA 冻结预训练模型的权重,并在 Transformer 架构的每一层注入可训练的低秩分解矩阵,从而大大减少了下游任务的可训练参数数量。与使用 Adam 微调的 GPT-3 175B 相比,LoRA 可以将可训练参数数量减少 10,000 倍,GPU 内存需求减少 3 倍。LoRA 在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量与微调相当或更好,尽管可训练参数更少,训练吞吐量更高,并且与适配器不同,没有额外的推理延迟。论文还对语言模型适应中的秩亏现象进行了实证研究,阐明了 LoRA 的有效性。
这是一个很显著且有效微调大模型的工具。
在2d图像生成中最常用的工具之一。在3d生成中也有应用。

1 论文方法

LoRA 的核心思想是将预训练权重矩阵的更新表示为低秩分解矩阵的乘积。 对于一个预训练权重矩阵 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0Rd×k,LoRA 将其更新 Δ W \Delta W ΔW 表示为:
Δ W = B A , \Delta W = B A, ΔW=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 r r 是 LoRA 模块的秩,且 r < < min ⁡ ( d , k ) r << \min(d, k) r<<min(d,k)
在训练过程中, W 0 W_0 W0 被冻结,不进行梯度更新,而 A A A B B B 包含可训练参数。 修改后的前向传播变为:
h = W 0 x + Δ W x = W 0 x + B A x . h = W_0 x + \Delta W x = W_0 x + BAx. h=W0x+ΔWx=W0x+BAx.
在部署时,可以将 W 0 + B A W_0 + BA W0+BA 预先计算并存储,进行常规推理。切换到另一个下游任务时,可以通过减去 B A BA BA 并添加不同的 B ′ A ′ B'A' BA 来快速恢复 W 0 W_0 W0
在这里插入图片描述

  1. 优点:
    参数效率: LoRA 大大减少了可训练参数的数量,降低了存储和计算成本,并使得在资源有限的设备上进行模型适应成为可能。
    高效的训练: LoRA 由于冻结了大部分参数,训练速度更快,GPU 内存需求更低。
    无推理延迟: LoRA 可以在部署时将学习到的矩阵与冻结的权重合并,因此不会引入额外的推理延迟。
    任务切换: LoRA 允许通过简单地交换 LoRA 权重在不同任务之间快速切换,而无需加载整个模型。
    下面这个图可以看到d>>r所以微调的计算量显著降低,为什么能这么做,很多人从奇异值分解SVD来类比,认为用w种前r行r列相乘得到的矩阵和原来的矩阵保持基本一致的属性。
    在这里插入图片描述
  2. 缺点:
    并非所有任务都适用: 对于某些任务,LoRA 的低秩假设可能不成立,导致性能下降。
    难以进行批量训练: 将 LoRA 应用于多个任务的批量训练时,需要为每个任务动态选择 LoRA 模块,增加了复杂性。
  3. SVD分解:
    在线性代数中,奇异值分解(SVD)是将一个实或复矩阵分解为一个旋转矩阵、一个重新缩放矩阵和另一个旋转矩阵的因式分解方法。它将方阵的特征分解推广到任意 m×n 矩阵,该方阵具有正交特征基。
    具体而言,奇异值分解(SVD)将一个m*n复矩阵 M 分解为以下形式的因式分解:
    M = U Σ V ∗ \mathbf{M} = \mathbf{U \Sigma V^*} M=V

其中,U 是一个 m×m 复酉矩阵,Σ 是一个 m×n 的对角矩阵,对角线上的元素为非负实数,V 是一个 n×n 复酉矩阵,而$ V ^∗$是V 的共轭转置。对于任何复矩阵,这种分解总是存在的。如果 M 是实数矩阵,则 U 和 V 可以是实正交矩阵;在这种情况下,SVD 通常表示为:
U Σ V T \mathbf{U \Sigma V^T} VT
在这里插入图片描述
在另外一个图M用A替代,SVD的分解可以用三个矩阵中每个的一小部分相乘得到和原来矩阵相似的矩阵。LoRA证明了一个类似的理论。
在这里插入图片描述

2 效果

实际LoRA可以用于任意的网络结构,不管是原始提出用在大语言模型上的Transformer还是SD的UNet结构。后面有很多人在不同的LoRA衍生。
当然我们也说过每个问题从不同角度去考虑的时候都有不同的调整方式。对于SD来说,也有dreambooth这种微调策略,也有超网络controlnet方式,还有插入新的没见过词向量 v m v_m vm的这种方式。在科研路上的很多问题都在等不同研究者从不同角度去解析。也在等待不同的研究者提出一个个好的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

离线安装kubernetes

我们很多时候在开发或测试环境中使用的Kubernetes集群基本都是云厂商提供或者说基于有网环境快速搭建的&#xff0c;但是到了客户的生产环境&#xff0c;往往基于安全考虑他们是不允许服务器连接外部网络的&#xff0c;这时我们就不得不在离线环境下完成部署工作。 1、前言 1…

DDR、LPDDR和GDDR的区别

1、概况 以DDR开头的内存适用于服务器、云计算、网络、笔记本电脑、台式机和消费类应用&#xff0c;支持更宽的通道宽度、更高的密度和不同的形状尺寸。 以LPDDR开头的内存适合面向移动和汽车这些对规格和功耗非常敏感的领域&#xff0c;提供更窄的通道宽度和多种低功耗运行状态…

Revit的特性 - 族类型和族实例、联动更新

Revit 模型的表示方式 Revit 是 Autodesk 推出的一款建筑建模软件&#xff0c;主要应用于建筑信息模型&#xff08;Building Information Modeling&#xff0c;简称BIM&#xff09;领域。Revit发布至今已经超过20年&#xff0c;他的核心理念是以族的概念来表达建筑模型。 在Re…

su模型转3d模型不够平滑怎么办?---模大狮

当将SU模型转换为3D模型时&#xff0c;可能会遇到模型不够平滑的情况&#xff0c;这会影响到最终的渲染效果和视觉体验。本文将探讨在此情况下应该如何解决&#xff0c;帮助读者更好地处理这一常见的问题。 一、检查SU模型细分程度 首先要检查的是原始的SU模型的细分程度。在S…

【vue-2】v-on、v-show、v-if及按键修饰符

目录 1、v-on事件 2、按键修饰符 3、显示和隐藏v-show 4、条件渲染v-if 1、v-on事件 创建button按钮有以下两种方式&#xff1a; <button v-on:click"edit">修改</button> <button click"edit">修改</button> 完整示例代码…

阿里云物联网平台python ADK 发布/订阅

基础知识学习参考&#xff1a; 1、使用消息通讯Topic 2、python link SDK 一、环境变量配置 1、python3.6&#xff1a;下载安装 2、安装paho-mqtt 1.4.0版本 pip install paho-mqtt1.4.03、安装安装Link SDK最新版本 pip install aliyun-iot-linkkit 4、下载python ADK…

自定义函数python:深入解析与实操

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;函数的命名与规范 二、函数命名&#xff1a;遵循规范&#xff0c;易于…

Linux 批量网络远程PXE

一、搭建PXE远程安装服务器 1、yum -y install tftp-server xinetd #安装tftp服务 2、修改vim /etc/xinetd.d/tftpTFTP服务的配置文件 systemctl start tftp systemctl start xinetd 3、yum -y install dhcp #---安装服务 cp /usr/share/doc/dhc…

springboot 集成 es--未完结

基于es7.10.x版本 一、前提知识 常见的两种方式&#xff1a;spring boot提供的API 和 ES 官方提供的API ES官方&#xff1a; RestHighLevelClient&#xff1a; 适用于复杂、更细粒度控制的Elasticsearch 操作 spring boot&#xff1a; ElasticsearchRestTemplate&#xff1a…

arXiv AI 综述列表(2024.05.20~2024.05.24)

公众号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 每周末更新&#xff0c;完整版进群获取。 Q 群在群文件&#xff0c;VX 群每周末更新。 目录 1. Beyond Traditional Single Object Tracking: A …

OSPF减少LSA更新量1

OSPF的LSA优化 一、汇总——优化骨干区域 (1)域间汇总ABR设备基于某个区域的1/2类LSA计算所得的最佳路由&#xff0c;共享给其他区域时&#xff0c;进行汇总传递。 [r2]ospf 1 [r2-ospf-1]area 1——明细路由所在区域&#xff0c;该ABR设备必须和明细路由在同一区域 [r2-ospf…

flink程序本地运行报: A JNI error has occurred和java.lang.NoClassDefFoundError

1.问题描述 在idea中运行flink job程序出现如下错误&#xff1a; Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/flink/api/common/io/FileInputFormat …

再见PS,Canva Create正式上线

再见&#xff0c;Photoshop&#xff01; Canva Create 正式上线&#xff0c;太疯狂了&#xff01;&#xff01; Canva是一款著名的免费在线AI图像生成器 构想你的创意&#xff0c;然后将其添加到你的设计中。使用最佳的AI图像生成器&#xff0c;观察你的文字和短语变换成美丽…

关于搜索引擎链路

一、搜索引擎的的链路 简单流程如下&#xff0c;一般都包括query理解&#xff0c;召回&#xff0c;粗排&#xff0c;精排&#xff0c;重排。 二、query理解&#xff0c;查询词处理 对于进来的query需要有很多道工序做处理。才能让搜索引擎的效果更好、更智能。 2.1 分词 分词…

OrangePi AIpro 开箱初体验及语音识别样例

OrangePi AIpro 开箱初体验及语音识别样例 一、 前言 首先非常感谢官方大大给予这次机会&#xff0c;让我有幸参加此次活动。 OrangePi AIpro联合华为精心打造&#xff0c;采用昇腾AI技术路线&#xff0c;具体为4核64位处理器AI处理器&#xff0c;集成图形处理器&#xff0c;…

Lin网络一:DHCP与FTP

目录 1、了解DHCP服务 2、使用DHCP服务有哪些好处 3、DHCP的分配方式 4、DHCP的租约过程 客户机请求IP地址 服务器确定租约 重新登陆 上述总结 配置&#xff1a; 5、传输文件到Linux服务器的常用工具: 1、FTP 文件传输协议 2、FTP传输模式&#xff1a; 3、FTP控制…

maven的下载以及配置的详细教程(附网盘下载地址)

文章目录 下载配置IDEA内部使用配置 下载 1.百度网盘下载 链接: https://pan.baidu.com/s/1LD9wOMFalLL49XUscU4qnQ?pwd1234 提取码: 1234 2.解压即可 配置 1.打开安装文件下conf下的settings.xml文件&#xff0c;我的如下 2.修改配置信息&#xff08;目的是为了修改本地…

Linux 磁盘管理命令tune2fs mkisofs cfdisk sfdisk parted

文章目录 3.Linux 磁盘管理命令3.26 tune2fs:文件系统调整案例练习 3.27 mkisofs:建立ISO9660 映象文件案例练习 3.28 cfdisk:磁盘分区案例练习 3.29 sfdisk:硬盘分区工具程序案例练习 3.30 parted:磁盘分区工具案例练习 3.Linux 磁盘管理命令 3.26 tune2fs:文件系统调整 作用…

汇编:比较跳转

在16位汇编语言&#xff08;如x86汇编&#xff09;中&#xff0c;比较指令用于比较两个操作数的大小&#xff0c;通常用于条件跳转、循环控制等逻辑操作&#xff0c;比较指令&#xff08;如CMP&#xff09;会根据操作数的比较结果设置标志寄存器中的相关标志位 比较指令影响的…

深入理解布瑞克(break)逻辑与嵌套循环的奥秘

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;布瑞克逻辑是什么&#xff1f; 二、布瑞克逻辑在嵌套循环中的应用 1.…