LoRA: 大模型的低秩适配

devtools/2024/10/20 18:52:51/

图片

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

链接: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),也就是即使将这些矩阵投影到更小的空间中,模型依然可以有效学习。受此启发,假设在微调过程中,预训练模型参数的更新量也有较小的“本质秩”,可以对其做低秩矩阵分解,公式化表达如下:

图片

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

图片

将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 推理延迟对比

图片

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

5.2 GLUE数据集测试

图片

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

5.3 E2E 自然语言生成挑战

图片

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

5.4 GPT-3基座模型测试

图片

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

6、总结

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


http://www.ppmy.cn/devtools/19228.html

相关文章

在no branch上commmit后,再切换到其他分支,找不到no branch分支的修改怎么办?

解决办法 通过git reflog我们可以查看历史提交记录&#xff0c;这里的第二条提交&#xff08;fbd3ea8&#xff09;就是我在no branch上的提交。 再通过git checkout -b backup fbd3ea8&#xff0c;恢复到上次提交的状态&#xff0c;并且为其创建个分支backup&#xff0c;此时…

AI大模型探索之路-训练篇5:大语言模型预训练数据准备-词元化

系列文章目录&#x1f6a9; AI大模型探索之路-训练篇1&#xff1a;大语言模型微调基础认知 AI大模型探索之路-训练篇2&#xff1a;大语言模型预训练基础认知 AI大模型探索之路-训练篇3&#xff1a;大语言模型全景解读 AI大模型探索之路-训练篇4&#xff1a;大语言模型训练数据…

css flex布局两个元素水平居中垂直居中

文章目录 问题描述解决方案 问题描述 大家好&#xff01;今天是2024年4月23日|农历三月十五&#xff0c;马上就快到五一假期啦&#xff0c;今天这博文主要以使用flex布局&#xff0c;让两个元素水平居中垂直居中&#xff0c;具体实现效果如下&#xff1a; 让图片和文字描述水平…

CentOS 7 常用命令大全

1.基础知识 1.1Linux系统文件结构 /bin 二进制文件,系统常规命令 /boot 系统启动分区,系统启动时读取的文件 /dev 设备文件 /etc 大多数配置文件 /home 普通用户的家目录 /lib 32位函数库 /lib64 64位库 /media 手动临时挂…

iOS AVPlayer

参考文章 AVPlayer的基本使用

ARCGIS PRO3 三维模型OSGB转SLPK场景数据集

1.前言 因项目工作&#xff0c;需要将三维模型发布到arcgisserver上&#xff0c;但arcgisserver只支持slpk格式的模型&#xff0c;于是我开启了漫长的三维模型格式转换之旅&#xff0c;在这里记录下本人踩过的坑。 2.三维模型数据情况 2.1 模型大小&#xff1a;在20GB以上&a…

基于微信小程序的土地租赁的设计与实现

基于微信小程序的土地租赁的设计与实现 Design and Implementation of Land Leasing Based on WeChat Mini Program 完整下载链接:基于微信小程序的土地租赁的设计与实现 文章目录 基于微信小程序的土地租赁的设计与实现摘要第一章 绪论1.1 研究背景1.2 研究目的1.3 研究内容…

Spring控制反转(IOC)是什么

Spring框架的核心特性之一是控制反转(Inversion of Control,IoC),这是一个核心概念,用于减少代码之间的耦合度,使程序更加模块化、可扩展和可测试。其主要目的是将原本由代码直接操控的对象的调用权交给第三方(例如一个容器)来控制,以解耦代码,提高程序的可维护性和可…