rsLoRA(Rank-Stabilized LoRA)
一句话:把 LoRA 的缩放因子从
改成 ,使得增量在高秩下的尺度保持稳定,从而真正享受到大 rank 带来的容量,而不是因尺度衰减提前饱和。(A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA, 2023) 提出年份:2023(arXiv 2023-12) · 机构/团队:Damien Kalajdzievski(Telus / Mila) · 会议/来源:arXiv:2312.03732
前置阅读:LoRA
直觉与动机
LoRA 的前向是
问题在于:当你把
rsLoRA 的洞察是:要让"加 rank 真的有用",缩放因子必须选得让
方法与公式
从初始化角度做一次方差分析。设
于是 rsLoRA 把缩放因子改为:
论文给出了更一般的结论:在
实现上只改一行:把

图源:Kalajdzievski, A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA, arXiv:2312.03732(用于学习注解,版权归原作者)
与 baseline 对比
| 维度 | LoRA( | rsLoRA( |
|---|---|---|
| 缩放因子阶数 | ||
| 小 rank(8–16) | 与 rsLoRA 基本无差异 | 基本无差异 |
| 大 rank(≥64) | 收益快速饱和 | 持续受益,效果随 rank 继续提升 |
| 实现成本 | — | 一行改动 |
| 推理开销 | 合并后无 | 合并后无 |
| 需重标定的超参 | — |
注意:在小 rank 时两者差距小,因为
实现要点
# LoRA 前向,唯一区别是 scaling 的分母
import math
scaling = alpha / math.sqrt(r) # rsLoRA;标准 LoRA 为 alpha / r
h = x @ W0.T + scaling * (x @ A.T) @ B.T在 HuggingFace peft 中开启极其简单——LoraConfig(use_rslora=True) 即可,库会自动把缩放分母改成
调参与实践经验
- 换缩放后必须重标定
和学习率。 因为有效尺度变了,直接沿用 LoRA 的 /lr 组合可能偏大或偏小。一个实用做法是固定 (不再用 这类与 绑定的经验),把学习率当作主要调节旋钮重新扫一遍。 - 什么时候值得开。 只有当你确实想用大 rank(如
,做较重的领域适配或需要更大增量容量)时,rsLoRA 才有明显价值。如果你本来就只用 的轻量适配,开不开几乎无差别,没必要额外引入调参负担。 - 与 QLoRA 叠加。 rsLoRA 只动缩放因子,与 QLoRA 的量化基座完全正交,常被一起使用:QLoRA 省显存让你能上更大 rank,rsLoRA 让这些 rank 真正发挥作用。
- 与其他变体的关系。 rsLoRA(缩放)、LoRA+(
学习率比)、AdaLoRA(秩分配)各管一件事,可组合;其中 rsLoRA 与 LoRA+ 都涉及"尺度",叠加时建议先固定 rsLoRA 的缩放,再单独标定 LoRA+ 的学习率比,避免两个尺度旋钮互相干扰。
参考文献
- Kalajdzievski, 2023. A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA (rsLoRA). arXiv:2312.03732
- Hu et al., 2021. LoRA: Low-Rank Adaptation of Large Language Models. arXiv:2106.09685