一句话定位
微调大模型时冻结原权重,只在每层旁路训练一对很小的矩阵A,BA,BA,B(低秩分解),部署时可合并回原权重——省显存、任务可热切换、推理不添延迟;效果常能打平甚至超过全参微调。
本页概念卡
- 主方法:LoRA · PEFT · 低秩 / Intrinsic Rank
- 对照方法:Adapter · Prefix Tuning(文中对照,未单独建卡)
- 工程延伸:训练阶段管线 · VLA · openpi LoRA 微调
1. 背景概念(给新人)
站在大模型高效微调(Parameter-Efficient Fine-Tuning,PEFT)这条线上:底座已经很大,下游任务很多,不能也不该「每个任务复制一份整模」。
| 术语 | 白话 |
|---|---|
| LoRA | Low-Rank Adaptation:用低秩BABABA近似权重更新ΔW\Delta WΔW |
| PEFT | 参数高效微调:只训很少参数,底座冻结 |
| 全参微调(Full Fine-Tuning) | 所有权重都更新;GPT-3 175B 时存储与多任务部署几乎不可行 |
| Adapter | 在 Transformer 块里串入小瓶颈 MLP;参数少,但推理常多一段串行延迟 |
| Prefix / Prompt Tuning | 在输入侧加可训练「虚 token」;会占掉可用序列长度 |
| Intrinsic Rank(内在秩) | 论文假设:适配时权重变化ΔW\Delta WΔW本身可以用很低的秩近似 |
| Rankrrr | A,BA,BA,B中间的「窄通道」宽度;r≪dmodelr\ll d_{\mathrm{model}}r≪dmodel才省参数 |
| α\alphaα(alpha) | 对ΔWx\Delta W xΔWx的缩放常数;文中常设为首次尝试的rrr,少调 |
旧范式痛点(生活类比)
- 全参微调像:每开一家分店就复印整套百科全书再改几页——仓库爆了。
- Adapter 像:百科旁边加插页本,读的时候必须多翻几页 → 线上延迟上去。
- LoRA 像:百科不动,只订两页活页;上架前可以把活页胶进原书,读者翻页路径不变。
2. 论文在干什么
- 问题:预训练→下游适配时,全参微调对 GPT-3 级模型存储/显存/多任务部署成本爆炸;已有 Adapter / Prefix 要么加推理延迟,要么占序列长度,且常打不过全参微调。
- 设定:
- 动机场景:自回归语言建模(条件生成),目标形式见式 (1)(2)
- 评测:RoBERTa / DeBERTa 上 GLUE;GPT-2 上 E2E 等 NLG;GPT-3 175B 上 WikiSQL、MNLI、SAMSum
- 贡献概览:
- 提出 LoRA:冻结W0W_0W0,用BABABA参数化ΔW\Delta WΔW
- 相对 Adam 全参微调:可训参数约10,000×减少,训练显存约3×下降(GPT-3 175B)
- 质量上与全参微调持平或更好;相对 Adapter无额外推理延迟(可 merge)
- 经验分析:适配更新确实近似低秩;常优先挂Wq,WvW_q,W_vWq,Wv;很小的rrr往往够用
3. 核心创新点
低秩参数化权重更新
假设适配时ΔW\Delta WΔW内在秩低:W0+ΔW=W0+BAW_0+\Delta W=W_0+BAW0+ΔW=W0+BA,只训A,BA,BA,B。这是对「全秩更新」的约束,不是另开一套深度模块。可合并 → 零额外推理延迟
部署时显式算W←W0+BAW\leftarrow W_0+BAW←W0+BA,前向与全参微调模型同构;换任务可减回BABABA再加另一套B′A′B'A'B′A′。与 Adapter / Prefix 正交且可组合
不占序列长度、不加深串行层;附录里可与 prefix 组合。对「适配到底改了什么」的可解释分析
子空间重叠实验表明:增大rrr并不必然学到更多「有意义」方向;ΔW\Delta WΔW更像放大预训练里已有但未被强调的特征方向。
4.1 前向公式
对预训练权重W0∈Rd×kW_0\in\mathbb{R}^{d\times k}W0∈Rd×k:
h=W0x+BAx,B∈Rd×r, A∈Rr×k, r≪min(d,k) h = W_0 x + B A x,\quad B\in\mathbb{R}^{d\times r},\; A\in\mathbb{R}^{r\times k},\; r\ll\min(d,k)h=W0x+BAx,B∈Rd×r,A∈Rr×k,r≪min(d,k)
- 初始化:A\boldsymbol{A}A高斯随机,B=0B=\mathbf{0}B=0→ 开训时ΔW=0\Delta W=\mathbf{0}ΔW=0,不破坏预训练行为。
- 缩放:输出侧常乘α/r\alpha/rα/r(实现里写法因库而异;直觉是换rrr时少重调学习率)。
- 训练:只对A,BA,BA,B(及可选 bias)求梯度;Adam 不必为冻结参数存优化器状态 → 显存大降。
4.2 挂在 Transformer 哪里
- 注意力有Wq,Wk,Wv,WoW_q,W_k,W_v,W_oWq,Wk,Wv,Wo;MLP 有两套线性层。
- 本文主实验:只适配注意力权重,冻结 MLP(简单 + 省参)。
- GPT-3 预算固定约 18M 可训参数时(Table 5):同时适配WqW_qWq与WvW_vWv整体最好;只砸在WqW_qWq或WkW_kWk上明显更差。
- 工程习惯(含后来的 VLA / openpi):常见
q_proj/v_proj(或更多线性层),rank 常用 8–64。
4.3 实操好处与局限
| 好处 | 含义 |
|---|---|
| 共享底座 + 多套小 LoRA | 100 个任务 ≈ 底座 + 100× 几十 MB,而非 100 份整模 |
| 训练吞吐 | GPT-3 175B 上相对全参约+25%tokens/s(同并行配置) |
| 任务切换 | 热换A,BA,BA,B即可 |
局限:若为去延迟而merge 进WWW,则同一 batch 里混多种任务 LoRA 不方便;不 merge、动态选模块则仍可,但放弃「零延迟」优势。
5. 整体框架(Mermaid)
6.1 主结果(记数量级即可)
- RoBERTa base:LoRA 0.3M 可训参,GLUE 平均87.2,高于全参微调 86.4 与多种 Adapter(Table 2)。
- GPT-3 175B(Table 4):LoRA 4.7M 参数时 WikiSQL73.4/ MNLI-m91.7/ SAMSum Rouge 优于多数对照;37.7M 时 WikiSQL74.0,可超过全参微调 73.8。
- 相对全参:可训参数约10,000×少(r=4r=4r=4且只改 Q/V 时 checkpoint 从约 350GB 量级任务副本降到约 35MB 量级增量);训练 VRAM 约 1.2TB → 350GB。
6.2 秩与挂载消融(§7)
- Table 6:在{Wq,Wv}\{W_q,W_v\}{Wq,Wv}上,r=1r=1r=1已很强;盲目加大rrr到 64 未必更好。
- 子空间分析:不同rrr/ 不同随机种子学到的主奇异方向高度重叠→ 「有用更新」确实低维;其余方向更像噪声。
- ΔW\Delta WΔWvsWWW:ΔW\Delta WΔW不是简单重复WWW的主方向,而是放大预训练已有、但对下游不够强调的方向(放大倍数可很大)。
6.3 局限(论文诚实点 + 工程提醒)
- 任务与预训练语言差很远时,很小的rrr可能不够(文中 thought experiment)。
- 本文未系统扫 MLP / LayerNorm / bias 的 LoRA(留给后续工作;今天工程里常挂更多层)。
- 后人常见变体:QLoRA(量化底座 + LoRA)、DoRA、生成式 LoRA(如 EverWalker 超网络出A,BA,BA,B)——本精读只钉死 2021 原文。
7. 要点总结
- LoRA =冻结W0W_0W0+ 低秩ΔW=BA\Delta W=BAΔW=BA,不是另造一层深度 Adapter。
- 可 merge→ 推理延迟与全参微调同构;这是相对 Adapter 的关键产品优势。
- 预算紧时优先挂WqW_qWq+WvW_vWv;rrr从小试起,别迷信「越大越好」。
- 在 VLA / openpi / 4090 场景:LoRA 是「一张卡能微调大策略」的前提砖块。
- 终身 / 多场景时:固定多套 LoRA vs 超网络生成 LoRA是下一层问题。
8. 开放问题
- 在动作策略(π₀ / GR00T)上,挂注意力 vs 也挂 MLP / action head,经验秩该怎么选?
- merge 后做量化部署时,数值误差如何控制?
- 与 QLoRA / DoRA 在机器人小数据上谁更稳?