LLM2021· ICLR 2022· CLASSIC

LoRA: Low-Rank Adaptation of Large Language Models

Hu et al.

用两个低秩矩阵(A·B)替代全参数微调——训练参数量降到 0.1%-1%,推理零额外开销。

arXiv:2106.09685
#peft#finetune#efficiency#foundational

核心贡献

  • 01核心假设:微调引起的权重变化 ΔW 是低秩的
  • 02W + ΔW = W + A·B,其中 A∈R^(d×r)、B∈R^(r×d),r << d
  • 03训练时只更新 A、B;原 W 冻结
  • 04推理时可以合并:W_final = W + A·B,零延迟增加
  • 05多任务场景可以共享 base 模型,每个任务只存 A、B

核心思想

全参数微调大模型的痛点:

  • 每个下游任务都要存一份完整副本(7B 模型微调 10 个任务 = 70B 存储)
  • 显存开销大(梯度、Adam 一阶二阶矩全量)

LoRA 的假设:微调对权重的改动 ΔW 集中在低维子空间。如果原来 d×d 的权重矩阵 W,我们不直接学 ΔW,而是学它的低秩分解:

ΔW=AB,ARd×r,BRr×d\Delta W = A \cdot B, \quad A \in \mathbb{R}^{d \times r},\, B \in \mathbb{R}^{r \times d}

其中 r 一般取 4、8、16、64 —— 远小于 d(比如 4096)。

参数量对比

  • 全微调 7B 模型:7B × 2(FP16 权重)+ 额外梯度/优化器状态 ≈ 数百 GB
  • LoRA r=8:仅训练 ~20M 参数,显存占用减少 95%+

初始化技巧

  • A 用随机高斯初始化
  • B 初始化为零
  • 这样开始时 ΔW = A·B = 0,等价于原模型,训练稳定

作用位置

通常加在 TransformerQuery 和 Value 投影矩阵 上;QKVO 全加效果略好但参数翻倍。后续工作(DoRA、VeRA)进一步优化了哪里加、怎么加的问题。

面试视角

面试考点

为什么 ΔW 是低秩的? 这是经验假设,论文做了 SVD 分析发现微调权重变化确实集中在 top-k 奇异值。直觉:下游任务只需要在原有能力上做 "小扰动",不需要彻底改写 base。

推理开销:训练后可以把 A·B 合并回 W,推理时间完全不变。这是 LoRA 相对于 Adapter(增加层)、Prefix Tuning(增加序列长度)的关键优势。

rank 怎么选? 经验法则:简单任务 r=8 足够;复杂任务(代码、多语言)r=32~64。过大的 r 会导致过拟合——低秩本身是一种正则。

QLoRALoRA + 4bit 量化 base 模型,进一步降显存。能在单卡 24GB 显存微调 33B 模型。

DoRA(Decomposed LoRA:把 W 分解为 magnitude 和 direction 分别学,效果更接近全微调。

常见对比题

  • LoRA vs Full Fine-tuning:参数量、显存、推理速度、效果的 trade-off
  • LoRA vs Prompt Tuning:结构化 vs 输入层干预
  • LoRA vs Adapter:零推理开销 vs 层间插入
相关论文