LoRA:只训练权重变化所需的低秩方向
冻结预训练权重,以两块小矩阵表示任务适配的权重更新。论文同时回答参数如何减少、推理为何可以保持原有线性层结构,以及极低秩更新在多个语言任务上究竟表现如何。
任务越多,完整微调越昂贵
一个 175B 参数的预训练模型可以服务多个任务。每个任务独立完整微调,会生成另一份同量级模型权重,训练时还要存放梯度和优化器状态。论文关注任务适配的存储、显存和切换开销,同时希望保留模型质量与在线推理速度。[1, §1–3]
此前方案留下的约束
Adapter 在 Transformer 内增加串行计算层;论文的 GPT-2 Medium 单步实验显示短序列、单样本推理可增加约 20.7% 或 30.3% 延迟。Prefix 系方法占用可用 token 长度,在论文实验中部分配置的性能随参数数量增加反而下降。[1, Table 1; §3; Table 15]
核心假设
下游任务并不一定需要自由修改整个高维权重矩阵。若“有用的更新”集中在少数方向,直接学习低秩权重增量就可能达到完整微调的质量,同时显著减少可训练参数。[1, §1; §4]
优化对象从整套权重转为低秩参数
设预训练模型参数为 \(\Phi_0\),样本集合为 \(\mathcal{Z}=\{(x_i,y_i)\}_{i=1}^{N}\)。\(x_i\) 是输入 token 序列,\(y_i\) 是目标 token 序列;例如 WikiSQL 输入自然语言问题和表结构,目标是 SQL。完整微调允许所有参数改变,训练目标为:[1, §2]
LoRA 以小规模参数集合 \(\Theta\) 表示增量 \(\Delta\Phi(\Theta)\),因此训练只优化 \(\Theta\);\(\Phi_0\) 持续冻结。分类实验也使用相应分类损失,低秩参数化本身不依赖特定目标函数。[1, §2; §5]
对一个权重矩阵,\(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]
这里 \(x\) 是线性层输入,\(h\) 是输出,\(\alpha/r\) 控制低秩路径的幅度。一个 \(d\times k\) 矩阵完整更新需要 \(dk\) 个可训练参数,LoRA 只需 \(r(d+k)\) 个;若是方阵且 \(r\) 远小于 \(d\),比值约为 \(2r/d\)。训练开始时论文令 \(A\) 随机初始化、\(B=0\),因此模型起始输出与预训练模型一致。[1, §4.1]
并行更新、冻结主干、按任务保存
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]
复现所需的设置与未公开部分
论文以四组模型覆盖理解与生成: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 · GLUE | AdamW、warmup 比例 0.06、线性学习率下降;按任务设置批量大小、epoch 与学习率 | Q/V 各 \(r=8\);base \(\alpha=8\),large \(\alpha=16\) | 5 个随机种子的中位数,选最佳 epoch;附录 Table 9 给出逐任务超参数 |
| DeBERTa XXL · GLUE | AdamW、warmup 比例 0.1、线性下降;逐任务 5–30 epoch | Q/V 各 \(r=8\)、\(\alpha=8\);部分小数据任务从 MNLI LoRA 检查点开始 | 5 个随机种子的中位数,选最佳 epoch;Table 10 |
| GPT-2 M/L · E2E、WebNLG、DART | AdamW、批量 8、5 epoch、500 warmup steps、学习率 0.0002 | Q/V 各 \(r=4\)、\(\alpha=32\);权重衰减 E2E/WebNLG 为 0.01,DART 为 0 | Beam=10、4-gram 去重、长度惩罚 E2E 0.9,其余 0.8;3 随机种子均值,最佳 epoch;Table 11 |
| GPT-3 175B · WikiSQL、MNLI、SAMSum | AdamW、批量 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”主要表示语言模型接收的任务输入或 Prefix 方法的可训练前缀,没有公开通用 LLM system prompt、chain-of-thought 模板或工具调用协议。GPT-2 生成使用 beam search。对 RoBERTa/DeBERTa 分类及 GPT-3 各任务,应分别依据附录与官方示例配置;未公开的解码参数不能补写成论文设置。[1, Appendix C–D; 2]
较少参数达到接近或更好的任务指标
论文比较完整微调、只训练 bias、不同 Adapter、Prefix 和 LoRA。部分完整微调与其他方法数值取自先前工作,因而实验环境、初始化及训练设置未完全统一;作者另在 RoBERTa large 上加入更接近 Adapter 设置的对照。[1, §5.1–5.2]
Table 1 · 在线推理延迟
| GPT-2 Medium 单步前向 | 批量 32 / 长度 512 | 批量 16 / 长度 256 | 批量 1 / 长度 128 |
|---|---|---|---|
| 完整微调 / 已合并 LoRA | 1449.4 ms | 338.0 ms | 19.8 ms |
| Adapter-L | 1482.0 ms(+2.2%) | 354.8 ms(+5.0%) | 23.9 ms(+20.7%) |
| Adapter-H | 1492.2 ms(+3.0%) | 366.3 ms(+8.4%) | 25.8 ms(+30.3%) |
原论文 Table 1。RTX8000 上 100 次单步前向平均;这些数字只反映表内硬件、模型和输入配置。[1]
Table 2 · GLUE 摘要
| 模型与方法 | 可训练参数 | MNLI | RTE | STS-B | 八任务平均 |
|---|---|---|---|---|---|
| RoBERTa base · FT* | 125.0M | 87.6 | 78.7 | 91.2 | 86.4 |
| RoBERTa base · LoRA | 0.3M | 87.5 | 86.6 | 91.5 | 87.2 |
| RoBERTa large · FT* | 355.0M | 90.2 | 86.6 | 92.4 | 88.9 |
| RoBERTa large · LoRA | 0.8M | 90.6 | 87.4 | 92.6 | 89.0 |
| DeBERTa XXL · FT* | 1500.0M | 91.8 | 93.9 | 92.9 | 91.1 |
| DeBERTa XXL · LoRA | 4.7M | 91.9 | 94.9 | 93.0 | 91.3 |
原论文 Table 2 摘要。* 数值引用先前工作;MNLI 为准确率,STS-B 为 Pearson,其他展示项为准确率。完整表还包括 BitFit 和 Adapter 各变体。[1]
Table 3 · GPT-2 E2E 文本生成
| 模型与方法 | 可训练参数 | BLEU | NIST | METEOR | ROUGE-L | CIDEr |
|---|---|---|---|---|---|---|
| GPT-2 Medium · FT* | 354.92M | 68.2 | 8.62 | 46.2 | 71.0 | 2.47 |
| GPT-2 Medium · Prefix* | 0.35M | 69.7 | 8.81 | 46.1 | 71.4 | 2.49 |
| GPT-2 Medium · LoRA | 0.35M | 70.4 | 8.85 | 46.8 | 71.8 | 2.53 |
| GPT-2 Large · FT* | 774.03M | 68.5 | 8.78 | 46.0 | 69.9 | 2.45 |
| GPT-2 Large · Prefix* | 0.77M | 70.3 | 8.85 | 46.2 | 71.7 | 2.47 |
| GPT-2 Large · LoRA | 0.77M | 70.4 | 8.89 | 46.8 | 72.0 | 2.47 |
原论文 Table 3 代表性行;“最好”仅相对于此处展示的方法,GPT-2 Large 的 CIDEr 与 Prefix 持平。[1]
Table 4 · GPT-3 175B
| 方法 | 可训练参数 | WikiSQL 验证准确率 | MNLI-m 验证准确率 | SAMSum ROUGE-1/2/L |
|---|---|---|---|---|
| 完整微调 | 175,255.8M | 73.8 | 89.5 | 52.0 / 28.0 / 44.5 |
| BitFit | 14.2M | 71.3 | 91.0 | 51.3 / 27.4 / 43.5 |
| Prefix-embedding | 3.2M | 63.1 | 88.6 | 48.3 / 24.2 / 40.5 |
| Adapter-H | 7.1M | 71.9 | 89.8 | 53.0 / 28.9 / 44.8 |
| LoRA | 4.7M | 73.4 | 91.7 | 53.8 / 29.8 / 45.9 |
| LoRA | 37.7M | 74.0 | 91.6 | 53.4 / 29.2 / 45.1 |
原论文 Table 4 摘要。WikiSQL 的典型波动约 ±0.5 个百分点,MNLI 约 ±0.1;4.7M LoRA 的 WikiSQL 73.4 与完整微调 73.8 的差值处于报告波动范围,不能称显著超越。[1]
低秩有效,但最佳位置与秩取决于任务
Table 5 · 固定 18M 参数预算时选择投影
| 投影位置 | 秩 | WikiSQL | MNLI-m |
|---|---|---|---|
| 仅 Q | 8 | 70.4 | 91.0 |
| 仅 K | 8 | 70.0 | 90.8 |
| 仅 V | 8 | 73.0 | 91.0 |
| 仅 O | 8 | 73.2 | 91.3 |
| Q + K | 4 | 71.4 | 91.3 |
| Q + V | 4 | 73.7 | 91.3 |
| Q + K + V + O | 2 | 73.7 | 91.7 |
原论文 Table 5;作者偏好 Q/V,因为它在两个任务上表现均衡。全四投影在 MNLI 更高,故不能断言 Q/V 普遍最优。[1, §7.1]
Table 6 · 秩增加并不保证指标持续提升
| GPT-3 WikiSQL | r=1 | r=2 | r=4 | r=8 | r=64 |
|---|---|---|---|---|---|
| 仅 Q | 68.8 | 69.6 | 70.5 | 70.4 | 70.0 |
| Q + V | 73.4 | 73.3 | 73.7 | 73.8 | 73.5 |
| Q + K + V + O | 74.1 | 73.7 | 74.0 | 74.0 | 73.9 |
原论文 Table 6 的 WikiSQL 部分;MNLI 同表也呈现小秩即可竞争的趋势。不同任务、模型和学习率可能改变最佳秩,不能由此推出“秩 1 对所有任务足够”。[1, §7.2]
作者进一步对不同秩和随机种子所学的 \(A\) 做奇异值分解,使用子空间相似度衡量主要方向的重叠。若 \(U_A^i\)、\(U_B^j\) 是两个矩阵的前 \(i\)、前 \(j\) 个奇异向量,则:[1, Equation 4; Figure 3–4]
值接近 1 表示方向集合高度重合。Figure 3 显示 \(r=8\) 与 \(r=64\) 的前沿方向存在重叠;Figure 4 的不同随机种子对照指出部分方向比较稳定。原论文 Figure 3、Figure 4 的图像位置可在 官方 HTML Figure 3 和 Figure 4 查阅;此处解释实验用途与结论。[1, §7.2]
小秩模型取得高分,说明被测试任务存在可由低维更新表达的解;它并没有证明完整微调的最优更新本身必然低秩。子空间可视化主要分析 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]
官方实现需要一起阅读
初始化方式
论文写 \(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]
贡献、证据边界与后续问题
Strengths · 已验证的价值
低秩增量与冻结主干组合简单,参数数量可准确计算,推理时可合并。实验覆盖多种模型规模、NLU/NLG、少样本与矩阵位置选择,提供公开 PyTorch 包及复现示例。大规模 GPT-3 表明很低的可训练参数预算依然能达到竞争性验证指标。[1, §4–7; 2]
Weaknesses · 证据限制
部分强基线引用既有论文,训练协议不完全统一。GPT-3 完整代码与检查点未公开;论文对 GPT-3 多数实验给典型波动而非逐项置信区间。秩缺陷的理论解释以经验结果和子空间可视化为主,尚无对任意任务的充分条件。任务混合批次与权重合并需要额外工程处理。[1, §4–7]
作者提出任务适配的权重更新具有很低的“内在秩”,并认为增量可放大预训练权重中原本不突出的任务相关方向。Table 5–7 与 Figure 3–4 为该解释提供经验支持;普遍性的严格证明及跨领域条件尚未给出。[1, §7]
对于程序化材质生成,可研究在图生成器、VLM 编码器或渲染反馈模块中分别学习任务专用低秩增量,并按材质类别及节点结构动态分配秩。需要明确对照完整微调、固定秩与不同投影位置,测量节点图有效性、可执行性、纹理质量及推理成本。这是后续研究设想,LoRA 原论文没有验证材质生成任务。
进一步可检验三个问题:哪些层最需要任务更新;秩是否随输入类别、数据规模和分布变化;可否在保证批处理效率的同时为每个任务切换低秩模块。对应实验应同时报告质量、参数量、训练显存、训练吞吐、合并开销和真实在线延迟。
一手资料
- [1] Hu et al. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685v2(2021 年 10 月修订);正式发表于 ICLR 2022。arXiv 全文与附录 · PDF · 会议记录。
- [2] Microsoft 官方 LoRA 仓库 README:支持的模块、公开示例及检查点。
- [3] Microsoft 官方 loralib/layers.py:初始化、缩放和训练/评估状态切换。
- [4] Microsoft 官方 GPT-2 NLG 复现说明:训练、beam decoding 与评测命令。
- [5] Microsoft Research 正式出版信息:ICLR 2022。
本页数字均按所标注的论文表格和官方资料整理。网页中的研究延伸以标签明确区分。最后核查日期:2026-09-30。