论文浅尝 | LoRA: 大模型的低秩适配

7d71febf8c6f2c612c1fdaeb1af65319.png

笔记整理:陈一林,东南大学硕士,研究方向为不确定知识图谱规则学习

链接:https://arxiv.org/abs/2106.09685

1、动机

自然语言处理的一个重要范式包括在通用领域数据上进行大规模预训练,然后对特定任务或领域进行适应性调整。随着我们预训练更大的模型,全量微调,即重新训练所有模型参数,变得不太可行。以GPT-3 175B为例 - 部署独立的微调模型实例,每个模型有175B个参数,成本过高。我们提出了低秩适应(Low-Rank Adaptation),简称LoRA,它冻结了预训练模型的权重,并将可训练的秩分解矩阵注入Transformer架构的每一层,大大减少了用于下游任务的可训练参数数量。与使用Adam微调的GPT-3 175B相比,LoRA可以将可训练参数的数量减少10,000倍,并将GPU内存需求减少3倍。LoRA在RoBERTa、DeBERTa、GPT-2和GPT-3的模型质量上表现与微调相媲美甚至更好,尽管可训练参数更少,训练吞吐量更高,并且与Adapter不同,没有额外的推理延迟。本文还提供了关于语言模型适应中秩亏损的实证研究,这些研究有助于阐明LoRA的有效性。

2、特性

一个预训练模型可以用来构建许多LoRA模块,每个模块对应不同的任务,通过简单替换LoRA模块,模型就可以获得不同任务的微调效果。

LoRA不需要保存大部分参数的梯度和优化器状态,只需要优化注入的低秩矩阵,降低了3倍的硬件资源需求。

在部署时,由于LoRA注入的是简单的线性层,可以直接将LoRA的训练参数与预训练模型的冻结参数合并,没有任何推理延迟。

LoRA与目前的方法互不影响,可以与其配合使用,如prefix-tuning。

3、方法

神经网络有很多计算矩阵乘法的稠密层,这些层中的矩阵都是满秩的,但是在适应特定任务时,预训练语言模型表现出有更小的“本质秩”(instrisic rank),也就是即使将这些矩阵投影到更小的空间中,模型依然可以有效学习。受此启发,假设在微调过程中,预训练模型参数的更新量也有较小的“本质秩”,可以对其做低秩矩阵分解,公式化表达如下:

7c5d598859d6b19443ec1bd3821a4180.png

其中,W0 ∈ Rd×k是预训练参数,∆W是参数更新量,B∈ Rd×r ,A∈ Rr×k,是分解后的低秩矩阵,满足r << min(d, k)。对A使用随机高斯初始化,对B使用零初始化,因此ΔW = BA在训练开始时为零。通过α/r缩放ΔWx,其中α是小于r的常数,这样在调整r时可以避免对超参数过多的重调。

50621dce40570d3c0c4ad5922789ab8e.png

将LoRA用到Transformer中,主要是对Transformer架构中的自注意力模块注入参数,自注意力模块有四个权重矩阵,即WQ,WK,WV,WO,在训练下游任务时,只训练这四个权重矩阵,其余参数直接冻结。

4、资源占用情况

由于不需要存储被冻结参数的优化器状态,需要的显存为原来的1/3。在GPT-3 175B模型上,原先需要1.2TB的显存才可以训练,使用LoRA后只需要350GB即可,当r设置为4,且只调整query和value矩阵时,需要的显存进一步从350GB降至35MB。

5、实验

5.1 推理延迟对比

6fd8d1b10e061d497b3d8f84f205a110.png

表格解释:GPT-2中等模型的单次前向传递推理延迟,以毫秒为单位测量,平均值基于100次试验。使用NVIDIA Quadro RTX8000。"|Θ|"表示Adapter层中可训练参数的数量。AdapterL和AdapterH是适配器调整的两个变种。适配器层引入的推理延迟在在线、短序列长度场景中均比较明显。

5.2 GLUE数据集测试

05b285070287ee76c7bbfa083d4a2621.png

表格解释:RoBERTabase, RoBERTalarge, and DeBERTaXXL作为基座模型,配合不同的微调方式的效果,与LoRA方法进行对比。各项指标越高代表模型效果越好。

5.3 E2E 自然语言生成挑战

25559d4f8a6459a4078a5ee7ea85ba70.png

表格解释:测试了GPT-2 medium和GPT-2 large配合不同微调方式的效果。各项指标越高代表模型效果越好。

5.4 GPT-3基座模型测试

6530ccfc30129df8f1e8d336e1edd065.png

表格解释:测试了GPT-3配合不同微调方式的效果,LoRA的表现甚至超过全量微调。

6、总结

LoRA是一种有效的微调策略,既不引入推理延迟,也不减少输入序列长度,同时保持高模型质量。重要的是,当作为服务部署时,它可以通过共享绝大多数模型参数来快速切换任务。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

64296ffa5921578117bf0a32ac21da29.png

点击阅读原文,进入 OpenKG 网站。

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

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

相关文章

`THREE.AudioAnalyser` 音频分析

demo案例 THREE.AudioAnalyser 音频分析 入参 (Input Parameters): audio: 一个 THREE.Audio 实例&#xff0c;代表要分析的音频。fftSize: 快速傅里叶变换&#xff08;FFT&#xff09;的大小&#xff0c;用于确定分析的精度和频率分辨率。smoothingTimeConstant: 平滑时间…

[lesson58]类模板的概念和意义

类模板的概念和意义 类模板 一些类主要用于存储和组织数据元素 类中数据组织的方式和数据元素的具体类型无关 如&#xff1a;数组类、链表类、Stack类、Queue类等 C中将模板的思想应用于类,使得类的实现不关注数据元素的具体类型,而只关注类所需要实现的功能。 C中的类模板…

如何通过cURL库实现远程控制插座

如何通过cURL库实现远程控制插座呢&#xff1f; 本文描述了使用cURL库调用HTTP接口&#xff0c;实现控制插座&#xff0c;即插即用&#xff0c;先插入插座&#xff0c;再接电器&#xff0c;实现远程控制。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格…

开源文本嵌入模型M3E

进入正文前&#xff0c;先扯点题外话 这两天遇到一个棘手的问题&#xff0c;在用 docker pull 拉取镜像时&#xff0c;会报错&#xff1a; x509: certificate has expired or is not yet valid 具体是下面&#x1f447;这样的 rootDS918:/volume2/docker/xiaoya# docker pul…

油猴脚本:bing 搜索结果居中

文章目录 效果预览脚本使用步骤安装油猴脚本添加脚本 效果预览 脚本 // UserScript // name bing居中 // namespace http://tampermonkey.net/ // version 2024-04-24 // description try to take over the world! // author You // match http…

牛客 题解

文章目录 day4_17**BC149** **简写单词**思路&#xff1a;模拟代码&#xff1a; dd爱框框思路&#xff1a;滑动窗口&#xff08;同向双指针&#xff09;代码&#xff1a; 除2&#xff01;思路&#xff1a;模拟贪心堆代码&#xff1a; day4_17 BC149 简写单词 https://www.now…

缓存神器-JetCache

序言 今天和大家聊聊阿里的一款缓存神器 JetCache。 一、缓存在开发实践中的问题 1.1 缓存方案的可扩展性问题 谈及缓存&#xff0c;其实有许多方案可供选择。例如&#xff1a;Guava Cache、Caffine、Encache、Redis 等。 这些缓存技术都能满足我们的需求&#xff0c;但现…

CPDA|0到1突破:构建高效数据分析体系的秘密武器

在现今信息爆炸的时代&#xff0c;数据已经渗透到了我们生活的方方面面&#xff0c;成为了决策、创新和竞争优势的关键。因此&#xff0c;构建一套高效的数据分析体系&#xff0c;对于企业和个人而言&#xff0c;都是至关重要的。那么&#xff0c;如何在众多的数据海洋中脱颖而…

自动化立体库安全使用管理制度

导语 大家好&#xff0c;我是智能仓储物流技术研习社的社长&#xff0c;老K。专注分享智能仓储物流技术、智能制造等内容。 新书《智能物流系统构成与技术实践》 完整版文件和更多学习资料&#xff0c;请球友到知识星球 【智能仓储物流技术研习社】自行下载 关于自动化立体库安…

Visual Studio导入libtorch(Cuda版)

Visual Studio导入libtorch&#xff08;Cuda版&#xff09; 一、安装 官网&#xff1a;https://pytorch.org/get-started/locally/ 相应地选择并下载 二、环境变量配置 解压zip&#xff0c;得到libtorch文件夹&#xff0c;将libtorch\lib和libtorch\bin对应路径添加到系统环…

如何把视频中的画面保存为图片?免费的工具不用白不用

在数字化时代&#xff0c;截取视频中的珍贵瞬间成为了人们创作、分享和保存回忆的重要方式。 那么&#xff0c;如何迅速捕捉视频中的精彩画面&#xff0c;留存美好瞬间呢&#xff1f;有人说直接截图就可以&#xff0c;如果直接截图就可以&#xff0c;小编就不用写这篇文章了&a…

Redis 安装及配置教程(Windows)【安装】

文章目录 一、简介一、 下载1. GitHub 下载2. 其它渠道 二、 安装1. ZIP2. MSI 软件 / 环境安装及配置目录 一、简介 Redis 官网地址&#xff1a;https://redis.io/   Redis 源码地址&#xff1a;https://github.com/redis/redis   Redis 官网安装地址&#xff08;无Windo…

组合预测 | Matlab实现LSTM-XGBoost长短期记忆网络组合极限梯度提升树多输入单输出回归预测

组合预测 | Matlab实现LSTM-XGBoost长短期记忆网络组合极限梯度提升树多输入单输出回归预测 目录 组合预测 | Matlab实现LSTM-XGBoost长短期记忆网络组合极限梯度提升树多输入单输出回归预测效果一览基本描述模型描述代码实现参考资料效果一览 基本描述 组合预测 | Matlab实现L…

AIGC-stable-diffusion(文本生成图片)+PaddleHub/HuggingFace

功能 stable-diffusion(文本生成图片)PaddleHub&#xff0c;HuggingFace两种调用方式 PaddleHub 环境 pip install paddlepaddle-gpu pip install paddlehub 代码 from PIL import Image import paddlehub as hub module hub.Module(namestable_diffusion)## 保存在demo…

Golang基础4-type、go测试

type相关 别名&#xff1a;本质上是更好的理解代码&#xff0c;比如byte(uint8)、rune(int32) 定义新类型&#xff0c;那么就相当于时struct了 package mainimport ("fmt""strconv" )// XInt 别名,在编译的时候会直接替换int type XInt int// YInt 自定…

C/C++程序设计实验报告4 | 函数实验

本文整理自博主本科大一《C/C程序设计》专业课的课内实验报告&#xff0c;适合C语言初学者们学习、练习。 编译器&#xff1a;gcc 10.3.0 ---- 注&#xff1a; 1.虽然课程名为C程序设计&#xff0c;但实际上当时校内该课的内容大部分其实都是C语言&#xff0c;C的元素最多可能只…

Spring Boot 的文件配置

SpringBoot的配置文件,有三种格式 1.properties 2.yaml 3.yml(yaml的简写) 这里主要介绍1和3格式的。 在项目中,同时存在properties和yml配置文件, properties的优先级更高 同时存在时,两个文件都生效 如果两个文件中,都包含同一个配置,以properties为主。 properties的配置…

纸箱码垛机:从传统到智能,科技如何助力产业升级

随着科技的飞速发展&#xff0c;传统工业领域正经历着一场重要的变革。作为物流行业重要一环的纸箱码垛机&#xff0c;其从传统到智能的转型升级&#xff0c;不仅提高了生产效率&#xff0c;还大幅降低了人工成本&#xff0c;为产业升级提供了强大助力。星派将探讨纸箱码垛机的…

Python Web应用框架库之web2py使用详解

概要 Python Web2py是一个开源的Web应用框架,旨在简化Web开发过程并提供强大的功能。本文将深入探讨Web2py库的安装、特性、基本功能、高级功能、实际应用场景等方面。 安装 首先,需要安装Web2py库。 可以通过pip工具进行安装: pip install web2py安装完成后,就可以开始…

Node.JS安装及配置教程(Windows)【安装】

文章目录 一、 Node.JS 下载1. 官网下载&#xff08;1&#xff09;国内地址&#xff08;2&#xff09;国外地址 2. 其它渠道 二、 Node.JS 安装三、 Node.JS验证四、 Node.JS 配置&#xff08;可选&#xff09;1. 配置全局模块安装路径方法一方法二2. 配置国内镜像 五、 yarn 安…
最新文章