LoRA+
一句话:给
矩阵设置比 大得多的学习率(比例 ),修正 LoRA 在宽网络下 、 更新尺度天然不对称导致的次优学习动态。(LoRA+: Efficient Low Rank Adaptation of Large Models, 2024) 提出年份:2024(arXiv 2024-02) · 机构/团队:UC Berkeley / Simons Institute · 会议/来源:ICML 2024 / arXiv:2402.12354
前置阅读:LoRA
直觉与动机
LoRA 把增量写成
直觉来自两点不对称:
- 初始化不对称:
用随机高斯初始化(量级 经标准缩放), 零初始化。训练初期 已经携带信息而 还是零,二者所处的状态完全不同。 - 梯度尺度不对称:前向是
。 的梯度依赖于 (已被激活), 的梯度依赖于 (初始为零、量级很小)。在宽度 的极限里,用同一学习率会使得其中一个矩阵的特征更新被"卡住",无法达到使每一层输出都发生 量级有效变化的理想学习状态。
LoRA+ 用类似 μP(最大更新参数化)的无穷宽尺度分析证明:要让
方法与公式
LoRA+ 把
只调一个基准学习率
与
整个方法不增加任何参数、不改前向、不改初始化,唯一改动是优化器的参数分组学习率,因此推理时与 LoRA 完全一致,可正常合并回基座。

图源:Hayou et al., LoRA+: Efficient Low Rank Adaptation of Large Models, arXiv:2402.12354(用于学习注解,版权归原作者)
与 baseline 对比
| 维度 | LoRA | LoRA+ |
|---|---|---|
| 改动范围 | — | 仅优化器分组学习率( |
| 新增参数 | — | 无 |
| 前向/初始化 | — | 不变 |
| 收敛速度 | 基线 | 论文报告约 1.5–2× |
| 最终效果 | 基线 | 论文报告小幅但稳定提升 |
| 关键超参 | ||
| 推理开销 | 合并后无 | 合并后无 |
实现要点
# 把 A、B 拆成两个 param group,B 的 lr = lambda * base_lr
lambda_ratio = 16
base_lr = 1e-4
param_groups = []
for name, p in model.named_parameters():
if not p.requires_grad:
continue
if "lora_B" in name:
param_groups.append({"params": p, "lr": base_lr * lambda_ratio})
else: # lora_A 及其它可训练参数
param_groups.append({"params": p, "lr": base_lr})
optimizer = torch.optim.AdamW(param_groups)注意点:分组时要确保 bias、归一化等可训练项归到基准组而不是 peft / 部分训练框架已内置 LoRA+ 选项,可直接传 loraplus_lr_ratio。
调参与实践经验
的敏感性。 偏小(接近 1)就退化回普通 LoRA;偏大(如几百)则 学习率过激、训练不稳。实践中 是常用区间, 是不错的默认;对极宽的大模型可以往更大试,因为理论最优随 增长。 - 先定基准 lr 再定比例。 建议先按普通 LoRA 找到一个可用的基准学习率,再固定它去扫
,比同时调两个参数高效。 - 收益场景。 LoRA+ 的主要卖点是更快收敛,在训练步数受限、或需要快速跑通多个配置时收益最明显;最终效果提升通常是小幅的。
- 与其他变体叠加。 LoRA+(学习率比)与 rsLoRA(缩放因子)、AdaLoRA(秩分配)关注点正交,理论可叠加。但 LoRA+ 与 rsLoRA 都改变有效尺度,叠加时务必把两个旋钮分开标定——先固定 rsLoRA 的
缩放,再单独调 LoRA+ 的 ,否则容易互相掩盖效果。 - 与 PiSSA 的区别。 两者都想解决 LoRA "初期学得慢"的问题,但路径不同:LoRA+ 从优化器学习率入手,PiSSA 从初始化(主成分)入手,可视情况二选一或组合。
参考文献
- Hayou et al., 2024. LoRA+: Efficient Low Rank Adaptation of Large Models. arXiv:2402.12354
- Hu et al., 2021. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685