PAPER READING · LoRA
ICLR 2022 · arXiv:2106.09685v2 · 深度精读

LoRA:只训练权重变化所需的低秩方向

冻结预训练权重,以两块小矩阵表示任务适配的权重更新。论文同时回答参数如何减少、推理为何可以保持原有线性层结构,以及极低秩更新在多个语言任务上究竟表现如何。

Edward J. Hu、Yelong Shen(共同第一作者)、Phillip Wallis、Zeyuan Allen-Zhu、Yuanzhi Li、Shean Wang、Lu Wang、Weizhu Chen · Microsoft Corporation · arXiv · ICLR 2022 · 官方代码

10,000×论文报告的 GPT-3 175B 可训练参数数量降幅,取特定 LoRA 配置
约 3×论文报告的 GPT-3 训练显存需求降幅,采用 Adam 的估算
0 额外层将低秩更新合入原权重后,推理图维持原有线性层
01 / Research Motivation

任务越多,完整微调越昂贵

一个 175B 参数的预训练模型可以服务多个任务。每个任务独立完整微调,会生成另一份同量级模型权重,训练时还要存放梯度和优化器状态。论文关注任务适配的存储、显存和切换开销,同时希望保留模型质量与在线推理速度。[1, §1–3]

此前方案留下的约束

Adapter 在 Transformer 内增加串行计算层;论文的 GPT-2 Medium 单步实验显示短序列、单样本推理可增加约 20.7% 或 30.3% 延迟。Prefix 系方法占用可用 token 长度,在论文实验中部分配置的性能随参数数量增加反而下降。[1, Table 1; §3; Table 15]

核心假设

下游任务并不一定需要自由修改整个高维权重矩阵。若“有用的更新”集中在少数方向,直接学习低秩权重增量就可能达到完整微调的质量,同时显著减少可训练参数。[1, §1; §4]

研究空缺此前低秩方法多用于压缩或训练原权重;本文明确约束的是冻结预训练模型后的任务权重增量,并检验这种约束在语言理解、生成及 175B 模型上的有效性。[1, §6]
论文 Figure 1:冻结预训练权重,只训练并行的低秩矩阵 A 与 B
原论文 Figure 1。原权重路径固定,任务更新由两块矩阵构成,并与原线性层输出相加。图源:arXiv v2 官方 HTML。[1]
02 / Problem Formulation

优化对象从整套权重转为低秩参数

设预训练模型参数为 \(\Phi_0\),样本集合为 \(\mathcal{Z}=\{(x_i,y_i)\}_{i=1}^{N}\)。\(x_i\) 是输入 token 序列,\(y_i\) 是目标 token 序列;例如 WikiSQL 输入自然语言问题和表结构,目标是 SQL。完整微调允许所有参数改变,训练目标为:[1, §2]

原论文 Equation 1 · 完整微调
\[\max_{\Phi}\sum_{(x,y)\in\mathcal{Z}}\sum_{t=1}^{|y|}\log P_{\Phi}(y_t\mid x,y_{\lt t})\]

LoRA 以小规模参数集合 \(\Theta\) 表示增量 \(\Delta\Phi(\Theta)\),因此训练只优化 \(\Theta\);\(\Phi_0\) 持续冻结。分类实验也使用相应分类损失,低秩参数化本身不依赖特定目标函数。[1, §2; §5]

原论文 Equation 2 · 参数有效的任务适配
\[\max_{\Theta}\sum_{(x,y)\in\mathcal{Z}}\sum_{t=1}^{|y|}\log P_{\Phi_0+\Delta\Phi(\Theta)}(y_t\mid x,y_{\lt t}),\qquad |\Theta|\ll|\Phi_0|\]

对一个权重矩阵,\(W_0\in\mathbb{R}^{d\times k}\) 将 \(k\) 维输入映射到 \(d\) 维输出。LoRA 不存储独立的完整增量,而令 \(A\in\mathbb{R}^{r\times k}\)、\(B\in\mathbb{R}^{d\times r}\),其中 \(r\ll\min(d,k)\)。矩阵增量的秩最高为 \(r\)。[1, §4.1]

原论文 Equation 3 与实现中的缩放
\[W=W_0+\Delta W,\qquad\Delta W=BA,\qquad h=W_0x+\frac{\alpha}{r}BAx\]

这里 \(x\) 是线性层输入,\(h\) 是输出,\(\alpha/r\) 控制低秩路径的幅度。一个 \(d\times k\) 矩阵完整更新需要 \(dk\) 个可训练参数,LoRA 只需 \(r(d+k)\) 个;若是方阵且 \(r\) 远小于 \(d\),比值约为 \(2r/d\)。训练开始时论文令 \(A\) 随机初始化、\(B=0\),因此模型起始输出与预训练模型一致。[1, §4.1]

公式含义低秩约束限制了任务更新可以进入的矩阵方向;它并不要求原有 \(W_0\) 自身低秩。论文将其理解为任务变化可能只需要少数有效方向,这一解释依赖后续实验检验。
03 / Algorithm & Pipeline

并行更新、冻结主干、按任务保存

01 输入预训练 Transformer 与下游任务数据
02 选择确定待适配的注意力投影,通常为 Q、V
03 注入给各选中矩阵配置 \(A\)、\(B\) 与缩放值
04 训练冻结原权重,更新低秩矩阵及任务头
05 保存只保存任务增量与必要任务参数
06 推理合并 \(BA\) 至原权重并执行原线性层

Transformer 自注意力通常包含查询 \(W_q\)、键 \(W_k\)、值 \(W_v\) 和输出 \(W_o\) 投影。论文主要把 LoRA 应用于 \(W_q\) 与 \(W_v\),冻结 MLP,并通过固定可训练参数预算比较不同投影位置。选择 Q/V 是实验配置与经验结果,并非数学上唯一允许的配置。[1, §4.2; Table 5]

当 \(d=k=d_{\mathrm{model}}\),一个投影增量需要 \(2d_{\mathrm{model}}r\) 个参数。若 \(L\) 层中各有 Q/V 两个投影,则总量约为 \(4Ld_{\mathrm{model}}r\)。GPT-3 175B 的 \(L=96\)、\(d_{\mathrm{model}}=12{,}288\),在 Q/V 各取 \(r=1\) 时约为 4.7M 参数;与正文 Table 4 一致。[1, §4; Table 4]

训练时计算 \(W_0x\) 和低秩路径并相加;部署时可预先计算 \(W_0+(\alpha/r)BA\)。合并后一次线性层调用即可完成推理。切换任务可撤销先前增量并合入另一任务的增量;论文也指出,若单批次内样本来自不同任务,预合并方式不方便逐样本更换增量。[1, §4.1–4.2]

与 Adapter 的结构差别

Adapter 在原网络路径上增加非线性层和串行深度。LoRA 的增量仍是线性映射,合并后可折叠为原权重。论文的“零额外推理延迟”以已经完成权重合并、相同基础算子和模型配置为前提。[1, §3–4; Appendix B]

与 Prefix 的资源差别

Prefix 将训练参数放在输入或层内前缀激活中,额外位置可能占用序列长度。LoRA 修改线性映射的参数化,因而不占用输入 token 预算;两种机制可以组合。[1, §3; Appendix E]

04 / Data · Training · Inference

复现所需的设置与未公开部分

论文以四组模型覆盖理解与生成:RoBERTa base/large、DeBERTa XXL 1.5B、GPT-2 Medium/Large、GPT-3 175B。GLUE 包含 MNLI、SST-2、MRPC、CoLA、QNLI、QQP、RTE、STS-B;生成任务包含 E2E、DART、WebNLG、WikiSQL 和 SAMSum。WikiSQL 有 56,355 个训练样本和 8,421 个验证样本;SAMSum 给出 14,732 个训练样本和 819 个测试样本;E2E 约 42,000/4,600/4,600 个训练/验证/测试样本;DART 约 82,000 个样本;WebNLG 约 22,000 个样本。[1, Appendix C]

模型与任务优化与时长LoRA 设置推理与报告
RoBERTa base / large · GLUEAdamW、warmup 比例 0.06、线性学习率下降;按任务设置批量大小、epoch 与学习率Q/V 各 \(r=8\);base \(\alpha=8\),large \(\alpha=16\)5 个随机种子的中位数,选最佳 epoch;附录 Table 9 给出逐任务超参数
DeBERTa XXL · GLUEAdamW、warmup 比例 0.1、线性下降;逐任务 5–30 epochQ/V 各 \(r=8\)、\(\alpha=8\);部分小数据任务从 MNLI LoRA 检查点开始5 个随机种子的中位数,选最佳 epoch;Table 10
GPT-2 M/L · E2E、WebNLG、DARTAdamW、批量 8、5 epoch、500 warmup steps、学习率 0.0002Q/V 各 \(r=4\)、\(\alpha=32\);权重衰减 E2E/WebNLG 为 0.01,DART 为 0Beam=10、4-gram 去重、长度惩罚 E2E 0.9,其余 0.8;3 随机种子均值,最佳 epoch;Table 11
GPT-3 175B · WikiSQL、MNLI、SAMSumAdamW、批量 128、2 epoch、权重衰减 0.1、250,000 warmup tokens、线性下降低预算 4.7M 参数与高预算 37.7M 参数;LoRA 学习率 0.0002任务序列长度 384 / 768 / 2048;报告最佳验证结果;Table 12

训练超参数来自原论文 Appendix D;RoBERTa 与 DeBERTa 的 MRPC、RTE、STS-B 常规设置复用最佳 MNLI LoRA 检查点,而 RoBERTa large 的公平比较配置从原预训练模型开始。实际复现时须使用每个任务的对应表项。[1]

论文称所有实验使用 NVIDIA Tesla V100,但没有为每一组实验提供完整 GPU 数量、总训练时间或所有数据预处理细节。GPT-3 的模型权重与完整训练脚本也未在官方 LoRA 仓库中提供;官方仓库提供 loralib、RoBERTa/DeBERTa 与 GPT-2 示例、部分检查点。GPT-2 示例 README 给出数据准备、训练、beam decoding 与评测命令。[1, §5; 2]

Prompt 与推理边界

论文中的“prompt”主要表示语言模型接收的任务输入或 Prefix 方法的可训练前缀,没有公开通用 LLM system prompt、chain-of-thought 模板或工具调用协议。GPT-2 生成使用 beam search。对 RoBERTa/DeBERTa 分类及 GPT-3 各任务,应分别依据附录与官方示例配置;未公开的解码参数不能补写成论文设置。[1, Appendix C–D; 2]

05 / Baselines & Results

较少参数达到接近或更好的任务指标

论文比较完整微调、只训练 bias、不同 Adapter、Prefix 和 LoRA。部分完整微调与其他方法数值取自先前工作,因而实验环境、初始化及训练设置未完全统一;作者另在 RoBERTa large 上加入更接近 Adapter 设置的对照。[1, §5.1–5.2]

Table 1 · 在线推理延迟

GPT-2 Medium 单步前向批量 32 / 长度 512批量 16 / 长度 256批量 1 / 长度 128
完整微调 / 已合并 LoRA1449.4 ms338.0 ms19.8 ms
Adapter-L1482.0 ms(+2.2%)354.8 ms(+5.0%)23.9 ms(+20.7%)
Adapter-H1492.2 ms(+3.0%)366.3 ms(+8.4%)25.8 ms(+30.3%)

原论文 Table 1。RTX8000 上 100 次单步前向平均;这些数字只反映表内硬件、模型和输入配置。[1]

Table 2 · GLUE 摘要

模型与方法可训练参数MNLIRTESTS-B八任务平均
RoBERTa base · FT*125.0M87.678.791.286.4
RoBERTa base · LoRA0.3M87.586.691.587.2
RoBERTa large · FT*355.0M90.286.692.488.9
RoBERTa large · LoRA0.8M90.687.492.689.0
DeBERTa XXL · FT*1500.0M91.893.992.991.1
DeBERTa XXL · LoRA4.7M91.994.993.091.3

原论文 Table 2 摘要。* 数值引用先前工作;MNLI 为准确率,STS-B 为 Pearson,其他展示项为准确率。完整表还包括 BitFit 和 Adapter 各变体。[1]

Table 3 · GPT-2 E2E 文本生成

模型与方法可训练参数BLEUNISTMETEORROUGE-LCIDEr
GPT-2 Medium · FT*354.92M68.28.6246.271.02.47
GPT-2 Medium · Prefix*0.35M69.78.8146.171.42.49
GPT-2 Medium · LoRA0.35M70.48.8546.871.82.53
GPT-2 Large · FT*774.03M68.58.7846.069.92.45
GPT-2 Large · Prefix*0.77M70.38.8546.271.72.47
GPT-2 Large · LoRA0.77M70.48.8946.872.02.47

原论文 Table 3 代表性行;“最好”仅相对于此处展示的方法,GPT-2 Large 的 CIDEr 与 Prefix 持平。[1]

Table 4 · GPT-3 175B

方法可训练参数WikiSQL 验证准确率MNLI-m 验证准确率SAMSum ROUGE-1/2/L
完整微调175,255.8M73.889.552.0 / 28.0 / 44.5
BitFit14.2M71.391.051.3 / 27.4 / 43.5
Prefix-embedding3.2M63.188.648.3 / 24.2 / 40.5
Adapter-H7.1M71.989.853.0 / 28.9 / 44.8
LoRA4.7M73.491.753.8 / 29.8 / 45.9
LoRA37.7M74.091.653.4 / 29.2 / 45.1

原论文 Table 4 摘要。WikiSQL 的典型波动约 ±0.5 个百分点,MNLI 约 ±0.1;4.7M LoRA 的 WikiSQL 73.4 与完整微调 73.8 的差值处于报告波动范围,不能称显著超越。[1]

结果如何解读最稳固的证据是参数量显著缩减且多项任务保持竞争力。GPT-3 的 WikiSQL、MNLI、SAMSum 指标不能混为单一“胜率”;GLUE 中部分强基线取自不同论文,RoBERTa large 的更严格对照应单独阅读。[1, Tables 2–4]
06 / Ablations & Analysis

低秩有效,但最佳位置与秩取决于任务

Table 5 · 固定 18M 参数预算时选择投影

投影位置秩WikiSQLMNLI-m
仅 Q870.491.0
仅 K870.090.8
仅 V873.091.0
仅 O873.291.3
Q + K471.491.3
Q + V473.791.3
Q + K + V + O273.791.7

原论文 Table 5;作者偏好 Q/V,因为它在两个任务上表现均衡。全四投影在 MNLI 更高,故不能断言 Q/V 普遍最优。[1, §7.1]

Table 6 · 秩增加并不保证指标持续提升

GPT-3 WikiSQLr=1r=2r=4r=8r=64
仅 Q68.869.670.570.470.0
Q + V73.473.373.773.873.5
Q + K + V + O74.173.774.074.073.9

原论文 Table 6 的 WikiSQL 部分;MNLI 同表也呈现小秩即可竞争的趋势。不同任务、模型和学习率可能改变最佳秩,不能由此推出“秩 1 对所有任务足够”。[1, §7.2]

作者进一步对不同秩和随机种子所学的 \(A\) 做奇异值分解,使用子空间相似度衡量主要方向的重叠。若 \(U_A^i\)、\(U_B^j\) 是两个矩阵的前 \(i\)、前 \(j\) 个奇异向量,则:[1, Equation 4; Figure 3–4]

原论文 Equation 4 · 子空间重叠
\[\phi(A,B,i,j)=\frac{\left\lVert (U_A^i)^{\top}U_B^j\right\rVert_F^2}{\min(i,j)},\qquad 0\le\phi\le1\]

值接近 1 表示方向集合高度重合。Figure 3 显示 \(r=8\) 与 \(r=64\) 的前沿方向存在重叠;Figure 4 的不同随机种子对照指出部分方向比较稳定。原论文 Figure 3、Figure 4 的图像位置可在 官方 HTML Figure 3 和 Figure 4 查阅;此处解释实验用途与结论。[1, §7.2]

Our Interpretation

小秩模型取得高分,说明被测试任务存在可由低维更新表达的解;它并没有证明完整微调的最优更新本身必然低秩。子空间可视化主要分析 GPT-3 第 48 层,其他层结果放在附录;低秩选择仍需任务验证。[1, §7; Appendix H]

附录 Table 16 的 MNLI 少样本实验:100 条样本下,完整微调 60.2、Prefix-embedding 37.6、Prefix-layer 48.3、LoRA 63.8;1,000 条样本下,完整微调 85.8、LoRA 85.6,差异很小。附录 Table 18 显示 GPT-2 Medium 的 E2E 验证损失在 \(r=16\) 达到 1.16,BLEU 在 \(r=4\) 为 70.38;“最佳秩”依赖指标。[1, Appendix F.3; H.2]

07 / Paper vs. Implementation

官方实现需要一起阅读

初始化方式

论文写 \(A\) 采用随机 Gaussian、\(B=0\)。官方 loralib/layers.py 的 Linear.reset_parameters 用 Kaiming uniform 初始化 \(A\),并明确注释“与论文描述不同”;\(B\) 仍为零,初始增量仍为零。此差异影响精确复现的随机初始化分布。[1, §4.1; 3]

合并与训练状态

官方 Linear.train(False) 合并增量,train(True) 撤销合并;merge_weights=False 可禁用。部署时若未合并,仍需要额外低秩路径计算,论文的“无额外延迟”前提不成立。[2; 3]

注意力实现

许多模型用一块矩阵实现 Q/K/V。官方仓库提供 MergedLinear,可通过 enable_lora=[True,False,True] 仅适配 Q 与 V;若改拆独立线性层,需同步调整预训练检查点映射。[2]

生成设置差异

论文 Appendix D.3 对 E2E 写长度惩罚 0.9;官方 GPT-2 E2E 复现 README 的示例命令使用 --length_penalty 0.8。记录该差异并核对具体实验脚本与检查点后,才能要求数值逐项重现。[1, Table 11; 4]

官方代码支持 Linear、Embedding、Conv2d 和组合投影;论文主体实验聚焦 Transformer 注意力投影。仓库的 RoBERTa/DeBERTa/GPT-2 示例和检查点支持部分实验复现,GPT-3 175B 的公开材料仍不足以独立重复整套训练。[1, §5; 2]

08 / Reviewer Commentary

贡献、证据边界与后续问题

Strengths · 已验证的价值

低秩增量与冻结主干组合简单,参数数量可准确计算,推理时可合并。实验覆盖多种模型规模、NLU/NLG、少样本与矩阵位置选择,提供公开 PyTorch 包及复现示例。大规模 GPT-3 表明很低的可训练参数预算依然能达到竞争性验证指标。[1, §4–7; 2]

Weaknesses · 证据限制

部分强基线引用既有论文,训练协议不完全统一。GPT-3 完整代码与检查点未公开;论文对 GPT-3 多数实验给典型波动而非逐项置信区间。秩缺陷的理论解释以经验结果和子空间可视化为主,尚无对任意任务的充分条件。任务混合批次与权重合并需要额外工程处理。[1, §4–7]

Author Claim

作者提出任务适配的权重更新具有很低的“内在秩”,并认为增量可放大预训练权重中原本不突出的任务相关方向。Table 5–7 与 Figure 3–4 为该解释提供经验支持;普遍性的严格证明及跨领域条件尚未给出。[1, §7]

Research Extension

对于程序化材质生成,可研究在图生成器、VLM 编码器或渲染反馈模块中分别学习任务专用低秩增量,并按材质类别及节点结构动态分配秩。需要明确对照完整微调、固定秩与不同投影位置,测量节点图有效性、可执行性、纹理质量及推理成本。这是后续研究设想,LoRA 原论文没有验证材质生成任务。

进一步可检验三个问题:哪些层最需要任务更新;秩是否随输入类别、数据规模和分布变化;可否在保证批处理效率的同时为每个任务切换低秩模块。对应实验应同时报告质量、参数量、训练显存、训练吞吐、合并开销和真实在线延迟。

09 / References

一手资料

  1. [1] Hu et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685v2(2021 年 10 月修订);正式发表于 ICLR 2022。arXiv 全文与附录 · PDF · 会议记录。
  2. [2] Microsoft 官方 LoRA 仓库 README:支持的模块、公开示例及检查点。
  3. [3] Microsoft 官方 loralib/layers.py:初始化、缩放和训练/评估状态切换。
  4. [4] Microsoft 官方 GPT-2 NLG 复现说明:训练、beam decoding 与评测命令。
  5. [5] Microsoft Research 正式出版信息:ICLR 2022。

本页数字均按所标注的论文表格和官方资料整理。网页中的研究延伸以标签明确区分。最后核查日期:2026-09-30。