A Rank Stabilization Scaling Factor for Fine-Tuning with LoRA
Damjan Kalajdzievski(Tenyx)· arXiv: 2312.03732 · 2023
随着大语言模型日益计算与内存密集,参数高效微调(PEFT)已成为微调 LLM 的常用策略。流行的 PEFT 方法是 低秩适配器(LoRA),它在选定的层添加可训练的低秩"适配器"。每个适配器由一个低秩矩阵乘积构成,并乘上一个依赖秩的缩放因子。
该缩放因子(将适配器除以一个秩的因子)会导致高秩适配器的学习变慢、性能受阻,因此实践中 LoRA 通常被限制在非常低的秩。本文研究缩放因子对学习过程的影响,并证明 LoRA 适配器应除以秩的平方根。我们称采用正确缩放因子的方法为秩稳定化 LoRA(rsLoRA),它轻松提供了微调的计算/性能权衡——用更大的秩在训练时换取更好的微调性能,且推理计算成本不变。
大语言模型在 NLP 领域日益强大,成功应用于机器翻译、疾病预测、机器人控制策略代码生成、聊天助手等。虽然其固有的泛化能力惊人,但下游任务性能往往需要微调,而这会带来巨大的计算资源需求。
为应对这些问题,业界近期提出了大量计算高效的微调方法,旨在优化一组缩减的参数并达到与全模型微调相当的性能。其中最相关的是 低秩适配器(LoRA)——在预训练模型的部分参数矩阵上添加由"低秩矩阵乘积 × 缩放因子"构成的适配器,在微调时优化。
本文分析 LoRA 适配器的缩放因子。我们的分析证明:LoRA 适配器应除以秩的平方根,而非传统 LoRA 实现中除以秩。我们通过实验验证 rsLoRA 相比标准 LoRA 在性能与学习稳定性上的优势。
LoRA 将预训练网络的一个线性子模块(参数 W∈Rd2×d1, b∈Rd2,映射 xout=Wxin+b)用适配器增强为:
其中 A∈Rr×d1,B∈Rd2×r,γr∈R+ 为缩放因子。微调后,单一矩阵 (W+γrBA) 被存储并替换 W 使用,因此推理时没有额外计算成本。适配器 γrBA 的秩被约束为至多 r(通常远小于 d1,d2)。B 初始化为零(B=0d2×r),A 的条目独立同分布、均值 0。传统 LoRA 设:
后续方法 AdaLoRA(Zhang et al. 2023)根据可用计算预算在训练中动态分配秩。因 AdaLoRA 使用与 LoRA 相同的 γr,本文提出的缩放因子优化也能改进 AdaLoRA。
我们将证明:LoRA 中 γr=α/r 的设定过于激进,导致梯度坍缩(gradient collapse)——大秩与小秩的性能无差别。这或许误导了原作者得出"极低秩(4,8,16)即可"的结论。
为推导最优缩放因子,我们沿用 Yang & Hu 2022 的扩散-初始化-更新(scaling-initialization-update)框架分析。需要确保 γr 的选择是"正确"的,使矩阵 γrBA 在训练全过程对所有秩都稳定,同时 γr 又不过于激进以致梯度坍缩或学习变慢。
利用极限 r→∞ 的分析,我们证明:唯一(模一个加法常数)产生秩稳定化适配器的 γr 设定是:
这解释了为什么 α/√r 正确:LoRA 训练中 ΔW 的谱范数与 √r 成正比,用 α/√r 可使缩放因子与秩解耦,让不同秩的适配器有一致的有效学习率(即"秩稳定化")。
| 秩 r | α/r(标准 LoRA) | α/√r(rsLoRA) |
|---|---|---|
| 4 | 0.250α | 0.500α |
| 16 | 0.063α | 0.250α |
| 64 | 0.016α | 0.125α |
| 256 | 0.004α | 0.063α |
本文证明 LoRA 适配器应除以秩的平方根(α/√r)而非秩(α/r)。我们的 rsLoRA 方法通过秩稳定化缩放因子,让更大秩真正提升性能,提供了清晰的微调计算/性能权衡。因为适配器形式与标准 LoRA 完全一致,rsLoRA 对任何推理成本都没有额外影响。这也解释了为何此前 LoRA 缩放规律(PLoRA(r) ∝ r0.2 趋于饱和)在 rsLoRA 下变为持续提升(∝ log r)。
📚 本文由 ar5iv 原文翻译为中文,数学公式采用 HTML 上下标 + Unicode 渲染