LoRA: 大模型的低秩适配

news/2024/11/9 16:45:56/

图片

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

链接: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/news/1435094.html

相关文章

设计模式简介之几大原则

设计模式是解决在软件设计中经常遇到的一类问题的最佳实践。使用设计模式有助于设计出可重用、可维护、可扩展且灵活的软件系统。在设计模式中&#xff0c;有一些重要的原则&#xff0c;这些原则指导我们如何编写出高质量、易于维护的代码。 以下是设计模式中的几大原则&#…

通过阿里云OOS实现定时备份redis实例转储到OSS

功能背景 随着企业业务数据的快速增长&#xff0c;Redis 作为高性能的内存数据存储方案&#xff0c;在多种应用场景下承担着重要的角色。为确保数据安全&#xff0c;定时备份成为了不可或缺的一环。Redis 实例定时备份是关键数据库管理任务的一个重要组成部分&#xff0c;它主…

低空经济和无人机

低空经济和无人机是当前科技领域中的两个热门话题&#xff0c;它们的发展互为促进&#xff0c;共同推动着低空经济持续发热&#xff0c;投资主线也愈发清晰。 低空经济是指以低空空域为活动场所&#xff0c;以各类低空飞行器为运载工具&#xff0c;所衍生的各类经济形态、经济…

zfaka 虎皮椒微信+支付宝插件(内附说明)

源码下载地址&#xff1a;zfaka 虎皮椒微信支付宝插件.zip

一个联合均值与方差模型的R包——dglm

目录 一、引言二、包的安装与载入三、模拟例子3.1 数据生成3.2 数据查看3.3 模型估计参数 一、引言 在 R 语言中&#xff0c;dglm 包是用于拟合双参数广义线性模型&#xff08;Double Generalized Linear Models&#xff0c;简称 DGLMs&#xff09;的一个工具。这类模型允许同…

路由过滤与引入

实验要求与拓扑 实验思路 1.配置IP 2.分别启动rip协议和ospf协议&#xff0c;实现内布互通&#xff1b; 3.路由引入 --- 让两个rip和ospf两个协议可以相互学习路由&#xff1b; 4.在做路由引入的时候&#xff0c;做路由过滤&#xff0c;避免R4的环回被RIP学到&#xff1b; 5.使…

openstack-镜像封装 7

再克隆两台主机并且安装图形化组件和虚拟化组件 进入图形化界面并安装一个虚拟化管理器 根下创建一个目录&#xff0c;虚拟化管理器新添加一个路径 创建虚拟化 配置虚拟化主机 设置虚拟化主机配置 安装所需软件 清理创建云主机时安装的组件 主机安装虚拟化工具 清理虚拟化缓存 …

STL::string简单介绍

目录 1、什么是STL STL6大组件:仿函数、算法、容器、空间配置器、迭代器、配接器 推荐文档&#xff08;必须学会看文档&#xff09; 2、string常用接口 a、初始化 1、什么是STL 标准模板库 STL&#xff08;Standard Template Library&#xff09;&#xff0c;主要是数据结构…