LoRA: Low-Rank Adaptation of Large Language Models

作者: Edward J. Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, Weizhu Chen 年份: 2021 会议: ICLR 2022 分类: 量化与低秩

论文笔记:LoRA: Low-Rank Adaptation of Large Language Models

元信息

项目内容
机构Microsoft Research
日期June 2021 (arXiv), ICLR 2022
项目主页github.com/microsoft/LoRA
链接arXiv

一句话总结

提出冻结预训练权重 W0W_0,仅训练低秩增量 ΔW=BA\Delta W = BABRd×r,ARr×k,rmin(d,k)B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times k}, r \ll \min(d,k))的参数高效微调方法,在 GPT-3 175B 上以 0.01% 的可训练参数 达到全量微调的性能水平。

核心贡献

低秩参数化假说: 提出大语言模型适应下游任务时的权重变化 ΔW\Delta W 具有低”内在秩”(intrinsic rank),因此可以用低秩矩阵分解高效近似

零额外推理延迟: 训练完成后 ΔW=BA\Delta W = BA 可直接合并到 W0W_0 中,推理时无需额外计算,与全量微调的模型架构完全相同

极致参数效率: 在 GPT-3 175B 上仅需 4.7M 可训练参数(全量的 0.01%),VRAM 需求降低约 2/3

模块化可组合: 冻结的 W0W_0 可与多个任务的 LoRA 模块快速切换,无需为每个任务存储完整模型

问题背景

要解决的问题

大语言模型(如 GPT-3 175B)的全量微调需要存储和更新所有参数,计算和存储成本极高

每个下游任务需要一份完整的模型副本,部署多任务系统时资源开销不可接受

现有方法的局限

Adapter layers(Houlsby 2019): 在 Transformer 层间插入小型前馈网络,但引入推理延迟——即使瓶颈维度很小,大 batch/小模型场景下延迟增加 20-30%

Prefix Tuning(Li & Liang 2021): 在输入前添加可训练的虚拟 token,但占用有效序列长度,且优化困难,性能随前缀长度非单调变化

直接微调子集(BitFit 等): 仅训练偏置或特定参数,参数效率有限且性能天花板低

本文的动机

先前研究(Aghajanyan 2020)表明预训练语言模型具有很低的”内在维度”(intrinsic dimensionality),暗示权重更新 ΔW\Delta W 可能存在低秩结构——LoRA 将这一直觉形式化为具体的参数化方案

方法详解

核心思想

对预训练权重矩阵 W0Rd×kW_0 \in \mathbb{R}^{d \times k},冻结 W0W_0 不更新

添加低秩旁路:h=W0x+ΔWx=W0x+BAxh = W_0 x + \Delta W x = W_0 x + B A x

其中 BRd×rB \in \mathbb{R}^{d \times r}ARr×kA \in \mathbb{R}^{r \times k},秩 rmin(d,k)r \ll \min(d, k)

初始化策略

AA: 使用 Kaiming 均匀分布(标准随机高斯)初始化

BB: 初始化为零矩阵

效果: 训练开始时 ΔW=BA=0\Delta W = BA = 0,模型行为与预训练完全一致,确保训练稳定性

缩放因子 α/r\alpha / r

实际前向传播为:h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r} B A x

α\alpha 是一个常数超参数(通常等于第一次实验设定的 rr 值)

当调整 rr 时,α/r\alpha/r 起到类似学习率缩放的作用,避免重新调整学习率

论文中 α\alpha 通常设为第一次调参时的 rr 值,后续只需调 rr

应用位置

LoRA 可应用于 Transformer 中的任意权重矩阵:Wq,Wk,Wv,WoW_q, W_k, W_v, W_o(注意力模块)和 Wup,WdownW_{\text{up}}, W_{\text{down}}(FFN 模块)

论文主要实验: 仅在 WqW_qWvW_v 上应用 LoRA(实验表明效果最佳)

固定参数预算下: 将 LoRA 分散到更多矩阵(低 rr)优于集中在少数矩阵(高 rr),说明 ΔW\Delta W 的秩不需要很高

与全量微调的关系

r=min(d,k)r = \min(d, k) 时,LoRA 退化为全量微调

LoRA 不会缩小模型的搜索空间维度——它只是约束了更新的秩,而非模型的表达能力

训练时 W0W_0 不接收梯度更新,因此无需存储 W0W_0 的优化器状态,显著节省内存

关键公式

公式1: LoRA 前向传播

h=W0x+αrBAxh = W_0 x + \frac{\alpha}{r} B A x

含义: 输出为预训练权重的原始输出加上低秩增量的贡献

符号说明:

  • W0Rd×kW_0 \in \mathbb{R}^{d \times k}: 冻结的预训练权重
  • BRd×rB \in \mathbb{R}^{d \times r}: 低秩分解的上投影矩阵
  • ARr×kA \in \mathbb{R}^{r \times k}: 低秩分解的下投影矩阵
  • rr: 秩(核心超参数,通常 1, 2, 4, 8, 16, 64)
  • α\alpha: 缩放常数

公式2: 推理时权重合并

W=W0+αrBAW = W_0 + \frac{\alpha}{r} B A

含义: 推理时将低秩增量合并到原权重中,消除额外计算开销

关键性质: 合并后的模型与全量微调的模型在架构上完全相同,不引入推理延迟

公式3: 可训练参数量

ΘLoRA=2×Ladapt×r×dmodel|\Theta_{\text{LoRA}}| = 2 \times L_{\text{adapt}} \times r \times d_{\text{model}}

含义: 总可训练参数量仅与秩 rr、模型维度 dmodeld_{\text{model}} 和应用 LoRA 的层数 LadaptL_{\text{adapt}} 成正比

对比: 全量微调参数量为 L×dmodel2L \times d_{\text{model}}^2(注意力矩阵)+ FFN 参数

公式4: 参数效率(GPT-3 175B 为例)

ratio=ΘLoRAΘfull=2×96×4×12288175×1090.01%\text{ratio} = \frac{|\Theta_{\text{LoRA}}|}{|\Theta_{\text{full}}|} = \frac{2 \times 96 \times 4 \times 12288}{175 \times 10^9} \approx 0.01\%

含义: 在 GPT-3 上 r=4r=4 仅应用于 Wq,WvW_q, W_v 时,可训练参数仅为全量的万分之一

符号说明: 96 层 × 2 矩阵 × r=4r=4 × d=12288d=12288

公式5: 内在秩的经验验证

UAr=8UAr=64F2/rvsUArandomUAr=64F2/r\|U_{A_{r=8}}^\top U_{A_{r=64}}\|_F^2 / r \quad \text{vs} \quad \|U_{A_{\text{random}}}^\top U_{A_{r=64}}\|_F^2 / r

含义: 比较 r=8r=8 学到的子空间与 r=64r=64 学到的子空间的重叠度,发现 r=8r=8 已覆盖 r=64r=64 的绝大部分方向,证实权重变化确实低秩

发现: ΔWq\Delta W_qΔWv\Delta W_v 的内在秩非常低(r=1r=1 已足够捕获大部分信息)

实验结果

GPT-3 175B(Few-shot + LoRA Fine-tuning)

方法可训练参数WikiSQL AccMNLI-m AccSAMSum R1/R2/RL
Fine-Tune175.0B73.889.552.0/28.0/44.5
BitFit14.2M71.391.0
Prefix (emb)3.2M63.188.6
Prefix (layer)20.2M70.489.7
Adapter-H7.1M71.989.8
Adapter-L40.1M73.291.5
LoRA4.7M73.491.753.8/29.8/45.9

LoRA 以 0.01% 的参数量达到或超越全量微调性能

在 SAMSum 摘要任务上甚至超过全量微调,可能因为低秩约束起到了正则化效果

GPT-2 Medium / Large

在 E2E NLG 任务上,LoRA (r=4r=4) 以 0.35M 可训练参数(GPT-2 Medium)匹配全量微调性能

训练 VRAM 降低约 2/3(GPT-3 175B: 1.2TB → 350GB)

rr 的消融实验

rrWikiSQLMNLI-m参数量
173.491.31.2M
273.391.52.4M
473.491.74.7M
873.791.69.4M
6473.491.475.5M

极低秩(r=1-4r=1\text{-}4)已足够,增大 rr 不带来显著提升,甚至可能略有下降

这有力支持了”权重更新具有低内在秩”的假说

局限性

不适用于所有任务: 当目标任务与预训练任务差异极大时(如跨模态),低秩假设可能不成立

无法动态选择秩: 不同层、不同矩阵的最优秩可能不同,论文使用统一的 rr——后续 AdaLoRA 解决了此问题

Batch 内多任务推理: 虽然可以快速切换 LoRA 模块,但同一 batch 内不同样本使用不同 LoRA 时需要额外工程(后续 [S-LoRA, Punica] 解决)

与 Adapter 的正交性未充分探索: LoRA 与 Adapter、Prefix Tuning 是否可以有效组合?论文未深入研究

仅实验了 NLG/NLU 任务: 未在视觉、多模态等领域验证

相关概念

AdaLoRA: 自适应分配不同层的秩,解决 LoRA 统一 rr 的局限

QLoRA: 将 W0W_0 量化为 4-bit 再施加 LoRA,进一步降低内存需求

Adapter: 在 Transformer 层间插入小型前馈网络,LoRA 的前身方法

Prefix Tuning: 在输入前添加可训练虚拟 token 的 PEFT 方法

InfLoRA: 将 LoRA 扩展到持续学习场景

低秩分解: LoRA 的核心数学工具,将 d×kd \times k 矩阵分解为两个小矩阵的乘积

GPT-3: LoRA 的主要实验平台,175B 参数的自回归语言模型

笔记创建时间: 2026-04-03