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

news2024/7/30 5:24:06

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的这种方式。在科研路上的很多问题都在等不同研究者从不同角度去解析。也在等待不同的研究者提出一个个好的问题。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI 谈“浔川AI翻译机”

在天工AI&#xff0c;天工AI在全网搜索“浔川AI翻译机”。 1 创作助手谈“浔川AI翻译机”&#xff1a; “浔川AI翻译机”是一个利用人工智能技术进行语言翻译的设备或应用程序。它可以将一种语言的文字或口语翻译成另一种语言&#xff0c;以实现不同语言之间的沟通和理解。浔…

网络布线与数制转换

信号与传输介质 信号概述 什么是信号 信息 人对现实世界事物存在方式或运动状态的某种认识 数据 用于描述事物的某些属性的具体量值 信号 信息传递的媒介 例如&#xff0c;描述某一件物体&#xff0c;它的长、宽、高、质地、颜色、气味等就是用以形容该物体的数据。通…

图书管理系统——Java版

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;JavaSE 顺序表的学习&#xff0c;点我 目录 图书管理系统菜单 基本框架&#xff1a; 书&#xff1a; 书架&#xff1a; 用户&#xff…

web及网络基础图文详解

目录 1.1TCP/IP 协议族 1.2TCP/IP 的分层管理 1.3TCP/IP通信传输流 1.4 与 HTTP 关系密切的协议 : IP、TCP 和 DNS &#xff08;1&#xff09;负责传输的 IP协议&#xff08;网络层&#xff09; &#xff08;2&#xff09;确保可靠的 TCP协议&#xff08;传输层&#xff…

sklearn实现线性回归

sklearn实现线性回归 一、数据集介绍二、使用sklearn实现线性回归一、数据集介绍 本案例使用女性身高体重数据集,数据集如下图所示: 可以看到,数据集有15行2列。 二、使用sklearn实现线性回归 sklearn中的线性模型模块是linear_model。这里使用linear_model下的普通线性…

TiDB学习4:Placement Driver

目录 1. PD架构 2. 路由功能 2. TSO 2.1 TSO 概念 2.2 TSO分配过程 2.3 TSO时间窗口 3. 调度 3.1 信息收集 3.2 生成调度(operator) 3.3 执行调度 4. Label 与高可用 4.1 Label 的配置 5. 小结 1. PD架构 PD是整个TiDB的总控&#xff0c;相当于集群的大脑 PD集成了…

易备数据备份软件: 快速备份 MySQL\SQL Server\Oracle\泛微 OA 数据库

易备数据备份软件支持对 SQL Server、Oracle、MySQL、PostgreSQL、MariaDB、泛微 OA 等数据库进行快速备份&#xff0c;备份过程不会对任何服务造成中断。 使用一份授权&#xff0c;可以备份无限量的数据库&#xff0c;不管数据库服务器是否在本机、本地网络、或是远程网络。可…

用LabVIEW进行CAN通信开发流程

本文详细介绍了在LabVIEW中开发CAN&#xff08;Controller Area Network&#xff09;通信的流程&#xff0c;包括硬件配置、软件编程和调试步骤。重点讨论了开发过程中需要注意的问题&#xff0c;如节点配置、数据帧格式和错误处理等&#xff0c;为开发高效可靠的CAN通信应用提…

可以在搜索结果中屏蔽指定网站的插件

可以在搜索结果中屏蔽指定网站的插件 | LogDict背景 在搜索引擎中搜索问题, 往往充斥各种无效内容 比如搜个技术类的问题, 前几页CSDN, 百度百家号, 百度经验, 百度知道, 腾讯云各类云爬的水文 CSDN基本都是复制粘贴的, 甚至格式都乱码了, 虽然我以前也干过 要复制粘贴无所谓, …

Java语法篇-易错

文章目录 类型转换switch case类之间关系及UMLtry catch finally 类型转换 隐式类型转换&#xff0c;不同数值类型参与计算时&#xff0c;低精度会转化为高精度参与运算 byte,short,char参与整数运算时会转成int float,int 参与浮点数运算时会转成double 强制类型转换 高精…

Hadoop概览以及编译hadoop说明

一、Hadoop概述 Hadoop 是一个用于跨计算机集群存储和处理大型数据集的软件框架。它旨在处理大数据&#xff0c;即传统数据库无法有效管理的极其庞大和复杂的数据集。Hadoop不是传统意义上的数据仓库&#xff0c;因为它们的用途不同&#xff0c;架构也不同。Hadoop 是一个跨分布…

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

OS复习笔记ch6-2

死锁的解决 死锁的预防&#xff08;打疫苗&#xff09;死锁的避免&#xff08;戴口罩&#xff09;死锁的检测&#xff08;做核酸&#xff09; 死锁的预防 前面我们提到了死锁的四个必要条件 防止前三个必要条件&#xff0c;就是间接预防防止最后一个必要条件–循环等待&…

每日一题23:统计文本中单词出现的次数

一、每日一题 解答&#xff1a; import pandas as pd def count_occurrences(files: pd.DataFrame) -> pd.DataFrame:bull_cnt len(files[files[content].str.contains(r\sbull\s)])bear_cnt len(files[files[content].str.contains(r\sbear\s)])res_df pd.DataFrame({…

【Text2SQL 论文】SeaD:使用 Schema-aware 去噪训练的 end2end 的 Text2SQL

论文&#xff1a;SeaD: End-to-end Text-to-SQL Generation with Schema-aware Denoising ⭐⭐ NAACL 2022, arXiv:2105.07911 本论文提出 SeaD 模型&#xff0c;使用 schema-aware 的去噪方法来训练一个 end2end、seq2seq 的 Transformer 模型来实现 Text2SQL。 一、论文速读…

【LeetCode刷题记录】207.课程表

207 课程表 你这个学期必须选修 numCourses 门课程&#xff0c;记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出&#xff0c;其中 prerequisites[i] [ai, bi] &#xff0c;表示如果要学习课程 ai 则 必须 先学习课程 b…

第20届文博会:“特别呈现”—周瑛瑾雷米·艾融双个展,著名美术评论家,批评家彭德教授对周瑛瑾作品进行评论

周瑛瑾不是学院派艺术家&#xff0c;但在彩墨画领域的天赋超出中国八大美院的同类型画家。相比具有批判意识的当代艺术&#xff0c;他的彩墨艺术如同我们这个苦难世界的创可贴和安慰剂。当我面对他的彩墨画&#xff0c;首先是惊艳&#xff0c;随之想到屈原的离骚&#xff0c;还…

淘工厂订单导出自动化工具

目录 下载安装与运行 主要目的 其他工具的弊端 本工具的优势 视频演示 下载新版后的注意事项 支持的导出项 什么叫一单多拍 常见问题 如何实现快捷登录 导出卡住时如何操作 如何精确导出 下载安装与运行 下载、安装与运行 语雀 主要目的 导出订单信息&#xf…

【数据结构】哈希表的原理及其实现

文章目录 哈希表的概念哈希函数的设计常见的哈希函数 哈希冲突1. 闭散列代码实现 2. 开散列拉链法的优点 针对开散列哈希的扩展基于开散列拉链法封装哈希表MyHash.h 基于哈希表实现unordered_map类Myunordered_map.h 基于哈希表实现unordered_set类Myunordered_map.h 哈希表的概…