2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models

2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models

Paper: https://arxiv.org/abs/2106.09685

Code: https://github.com/microsoft/LoRA

大型语言模型的LoRA低秩自适应

自然语言处理的一个重要范式包括对通用领域数据的大规模预训练和对特定任务或领域的适应。当预训练更大的模型时,完全微调(重新训练所有模型参数)变得不那么可行。以 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 上的模型质量与微调相当或更好,尽管可训练参数更少、训练吞吐量更高,并且与适配器不同,没有额外的推理延迟。

LoRA用来降低大语言模型下游任务训练的算力及内存资源需求量,降低预训练大模型产品化落地的成本。

LoRA基本思想

  1. 在原始PLM旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的intrinsic rank。
  2. 训练的时候固定PLM的参数,只训练降维矩阵A与升维矩阵B。
  3. 而模型的输入输出维度不变,输出时将BA与PLM的参数叠加。用随机高斯分布初始化A,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵。

下面是参数的更新表示:

其中,预训练的矩阵为 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0∈Rd×k,它的更新表示为:

W 0 + Δ W = W 0 + B A , B ∈ R d × r , A ∈ R r × k W_0+\Delta W=W_0+B A, B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times k} W0+ΔW=W0+BA,B∈Rd×r,A∈Rr×k

其中秩 r < < m i n ( d , k ) r << min(d,k) r<<min(d,k)。

对于 h = W 0 x h=W_0x h=W0x ,它的前向计算变为:
h = W 0 x + Δ W x = W 0 x + B A x = ( W 0 + B A ) x h=W_0 x+\Delta W x=W_0 x+B A x=\left(W_0+B A\right) x h=W0x+ΔWx=W0x+BAx=(W0+BA)x

这种方式类似与残差连接,同时使用这个旁路的更新来模拟full finetuning的过程。

参考

https://zhuanlan.zhihu.com/p/514033873

相关推荐
mit6.8241 分钟前
PyTorch & Transformers| Azure
人工智能
程序员陆通4 分钟前
OpenAI Dev Day 2025:AI开发新纪元的全面布局
人工智能
新兴ICT项目支撑4 分钟前
BERT文本分类超参数优化实战:从13小时到83秒的性能飞跃
人工智能·分类·bert
真智AI7 分钟前
小模型大智慧:新一代轻量化语言模型全解析
人工智能·语言模型·自然语言处理
小关会打代码33 分钟前
深度学习之YOLO系列YOLOv1
人工智能·深度学习·yolo
大山同学35 分钟前
CNN手写数字识别minist
人工智能·神经网络·cnn
道可云1 小时前
道可云人工智能每日资讯|2025世界智能网联汽车大会将在北京举办
人工智能·百度·汽车·ar·xr·deepseek
一车小面包1 小时前
Transformer Decoder 中序列掩码(Sequence Mask / Look-ahead Mask)
人工智能·深度学习·transformer
JY190641061 小时前
徕卡RTC360助力铝单板设计效率提升
人工智能