无悔的 LoRA

当今最先进的语言模型包含多达数万亿个参数,使用数十万亿个标记进行预训练。基础模型的性能随着规模持续提升,因为这些万亿级参数对于学习和表征人类书面知识中的各种模式是必要的。

相比之下,后训练通常使用更小的数据集,并聚焦于更窄的知识领域与行为范围。用一太比特的权重去表示来自吉比特或兆比特级训练数据的更新看起来很浪费。这一直觉催生了参数高效微调(PEFT):通过只更新远少于全模型的一小部分参数来调整大网络。

最主流的 PEFT 方法是低秩适配(LoRA)。LoRA 将原模型中的每个权重矩阵 W 替换为经修改的版本 W=W+γBAW' = W + \gamma BA,其中 B 和 A 是两个矩阵,它们合起来的参数量远小于 W,γ\gamma 是一个常数缩放因子。实质上,LoRA 为微调带来的权重更新构建了一个低维表征。

LoRA 在后训练的成本与速度上可能占优,同时也有若干运维层面的理由让人更倾向于它而非全参数微调(下文简称 FullFT):

  • 多租户服务。 由于 LoRA 在保持原始权重不变的同时训练一个“适配器”(即 A、B 矩阵),单个推理服务器可以在内存中驻留多个适配器(不同的模型版本),并以批处理的方式同时从它们采样。Punica: Multi-Tenant LoRA Serving(Chen、Ye 等,2023)现代推理引擎如 vLLM 与 SGLang 已实现该特性。

  • 训练时的布局规模。 全参微调时,需要连同原始权重一起存储优化器状态,而且通常使用更高的数值精度。因此,FullFT 通常比从同一模型进行采样所需的加速卡多一个数量级,因而需要不同的布局。训练除了存权重外,通常还需要为所有权重存储梯度与优化器动量;并且这些变量往往使用比推理时存权重更高的精度(float32,而推理常为 bfloat16 或更低)。由于 LoRA 训练的权重远少、占用内存也更小,它只需要略大于采样时的布局即可进行训练。这让训练更容易、更高效。

  • 加载与分发更易。 由于需要存储的权重更少,LoRA 适配器的部署与跨机器传输都更快更简单。

上述原因足以解释自 2021 年 LoRA 论文发表以来其日益流行。LoRA: Low-Rank Adaptation of Large Language Models(Hu 等,2021)然而,关于 LoRA 相对 FullFT 的效果究竟如何,文献并不清晰。

一致的观点是,在类似预训练的设置中——即数据集非常庞大、超出 LoRA 参数的存储上限时——LoRA 的表现不如全参微调。LoRA Learns Less and Forgets Less(Biderman 等,2024)但在后训练典型的数据规模下,LoRA 有足够的容量存储关键信息。不过,这一点并不能保证其样本效率与算力效率。问题在于:LoRA 能否达到全参微调的性能?如果能,需要满足哪些条件?

我们的实验发现:的确,只要把若干关键细节处理到位,LoRA 可以与 FullFT 拥有相同的样本效率,并达到相同的最终性能。

LoRA 的关键要点

本文基于我们进行的一系列监督微调与强化学习实验,总结在何种条件下 LoRA 能与 FullFT 匹配的效率。为此,我们在设置上与以往 LoRA 实验有几点不同:

  • 我们考察了训练集规模与 LoRA 参数量之间的一般关系,而非仅针对特定数据集与任务。

  • 在监督学习中,我们测量的是_对数损失(log loss)_,而非基于采样的评测,仍以通用性为目标。对数损失的测量能在不同训练步数与训练参数范围内给出干净的结果与缩放规律。

我们的发现包括:

  • 在小到中等规模的指令微调与推理数据集上,LoRA 的监督微调表现与全参微调相当。

  • 当数据集规模超过 LoRA 的容量时,LoRA 不如 FullFT。并非表现为损失达到某个无法再降的“硬地板”,而是训练效率变差,其程度取决于模型容量与数据集规模之间的关系。

  • 在某些场景下,LoRA 对大批量(batch size)的容忍度低于全参微调——当 batch size 超过某个阈值时,它在损失上付出更高的代价。这个代价不会因提高 LoRA 秩而缓解;这是由乘法参数化(BA)所带来的不同训练动力学所致,相对于直接优化原权重矩阵(W)有差异。

  • 即便在小数据设置下,将 LoRA 应用于全部权重矩阵——尤其是 MLP 与 MoE 层——表现更好。即使把仅注意力层的 LoRA 秩调高,以匹配可训练参数量,它的表现仍不如只对 MLP 应用 LoRA。

  • 在强化学习中,即便使用很小的秩,LoRA 的表现也与 FullFT 等同。我们发现 RL 的需求容量非常低,这与基于信息论的推断一致。

我们还研究了 LoRA 超参数对其相对于 FullFT 的学习率的影响。我们分析了诸如初始化尺度与缩放因子等超参数的不变性,并解释了为何 1/r 的前置因子使得最优学习率(LR)与秩近似无关。我们也通过实验展示了 LoRA 的最优 LR 与 FullFT 的最优 LR 之间的关系。

我们的实验结果刻画了一个“低后悔(low-regret)”区间:在给定数据集规模与 LoRA 参数量的条件下,LoRA 的表现与 FullFT 类似。我们发现这个区间覆盖了大多数后训练场景,为在许多应用中采用高效微调打开了大门。

方法与结果

我们设计了实验,以在多种条件下详细衡量 LoRA 相对 FullFT 的表现。主要设置如下:

  • 我们将 LoRA 秩在 1 到 512 之间跨三个数量级地变化,并与全参微调进行对比。

  • 为消除次优学习率带来的混淆,我们在每个实验条件下进行了学习率扫描(sweep)。学习率日程使用常数学习率(无预热或退火)。

  • 我们使用了 Llama 3 系列模型The Llama 3 Herd of Models(Dubey 等,2024)与 Qwen3 模型Qwen3 Technical Report(Qwen 团队,2025),其中包含一个专家混合(MoE)模型。

  • 主要的监督学习实验使用了 Tulu3Tulu 3: Pushing Frontiers in Open Language Model Post-Training(Ivison 等,2024)与 OpenThoughts3OpenThoughts: Data Recipes for Reasoning Models(Guha 等,2025)数据集,分别侧重于指令跟随与推理。这两套数据在范围、结构与应用上差异显著,支持了我们结论的普适性。

  • 我们的 RL 实验使用数学推理任务,以答案是否正确作为奖励。

LoRA 的秩

我们在 Tulu3 数据集与 OpenThoughts3 的一个子集上各训练一个 epoch。对于每个数据集与模型规模,我们同时扫描 LoRA 秩与学习率。在下方的图中,我们为每个秩绘制一条彩色曲线,该曲线是在每个训练步上对所有学习率取点对点最小值得到的:

LoRA 在 Tulu3 与 OpenThoughts3 上、不同秩的训练曲线。FullFT 与高秩 LoRA 的学习曲线相似,损失随步数对数线性下降。较低秩的 LoRA 在适配器容量耗尽时偏离最小损失曲线。在底部的图(1B 模型)中,高秩 LoRA 在某个数据集上优于 FullFT,而在另一个上逊于 FullFT。由于训练动力学或泛化行为差异,LoRA 在不同数据集上的表现可能存在一定的随机波动。

可以看到,FullFT 与高秩 LoRA 的学习曲线相似,损失随训练步数的对数线性下降。中低秩 LoRA 在某个与秩相关的步数阈值处偏离最小损失曲线。直觉上,当适配器容量耗尽时,学习便会变慢,而容量由秩决定。

接下来,我们绘制损失随学习率变化的曲线,以检查我们的扫描是否覆盖了各个秩的最佳学习率。

不同 LoRA 秩在 Tulu3 上的学习率—最终损失曲线。高秩 LoRA 与 FullFT 的最小损失大致相同。LoRA 的最优学习率大约高出 10 倍。

我们发现,FullFT 的最优学习率比高秩 LoRA 低一个数量级(约 10 倍)。参见 Biderman 等(2024)图 S1,其基于采样评测的实验也得到类似 10× 的比例。我们将在后文的 LoRA 超参数讨论中回到这一点。

各个秩的 LoRA 运行,其最优学习率看起来相近;我们在下文给出理论解释。然而确实存在一定的秩相关性:秩为 1 时的最优学习率更低。介于秩 4 与 512 之间,最优学习率的变化不到 2 倍。

批量大小的影响

我们发现,在某些设置下,LoRA 对大批量的容忍度低于 FullFT。性能差距会随 batch size 增大而扩大,且与秩无关。接下来这个实验,我们使用了 OpenThoughts3 的一个 1 万样本的小子集。

LoRA 与 FullFT 的批量大小效应。左:不同 batch size 的学习曲线显示,在大 batch 条件下,LoRA(虚线)与 FullFT(实线)之间存在持续差距。右:最终损失随 batch size 的变化表明,随着 batch size 增加,LoRA 付出更大的损失代价。

图 3 左图显示,在大 batch 下,LoRA(虚线)与 FullFT(实线)的学习曲线持续存在差距。对于 batch size=32,差距更小且随时间缩小。

右图绘制了最终损失相对于 batch size 的曲线。可以看到,随着 batch size 增大,LoRA 与 FullFT 的损失差距持续扩大。

大 batch 下的学习差距似乎与秩无关,而是 LoRA 的内在属性。可能原因是乘法参数化(BA)在该数据集上的优化动力学不如直接优化完整矩阵(W)。不过,LoRA 与 FullFT 都在较小 batch 下达到最佳损失,因此在实践中这一差距可能影响不大。

应用 LoRA 的层

我们研究了将 LoRA 应用于网络中不同层的效果。Hu 等人的原始论文建议仅将 LoRA 用于注意力矩阵,后续许多工作亦然;不过近期的趋势是将其应用到所有层。与我们的结果相似,QLoRA 论文也发现,仅注意力 LoRA 的表现逊于 MLP 或 MLP+注意力;他们的结论是 MLP+注意力 > MLP > 注意力,而我们发现前两者大致相当。事实上,当将 LoRA 应用于所有层——尤其是 MLP(包含 MoE)层——时,我们取得了显著更好的结果。仅将 LoRA 用于注意力矩阵,并不会带来超出仅 MLP LoRA 之外的额外收益。Biderman 等(2024)也得到类似结论:仅注意力 LoRA 在 MLP-only 的基础上不再带来额外收益。

仅注意力 LoRA 明显逊于仅 MLP LoRA,并且在“MLP 上已用 LoRA”的情况下再加注意力并不会进一步提升。该结论在致密模型(Llama-3.1-8B)与稀疏 MoE(Qwen3-30B-A3B-Base)上均成立。

仅注意力 LoRA 的劣势并非因参数更少所致。在本例中,秩 256 的仅注意力 LoRA 的表现不如秩 128 的仅 MLP LoRA,尽管它们参数量近似相同。(见下表粗体数字对比。)

LoRA configuration Params
mlp, rank=256 0.49B
attn, rank=256 0.25B
all, rank=256 0.70B
mlp, rank=128 0.24B

Llama-3.1-8B 上各 LoRA 配置的参数量

在 MoE 实验中,我们对每个专家分别训练一个 LoRA,且每个专家的秩等于总秩除以活跃专家数(Qwen3 MoE 为 8)。这种缩放使 MoE 层中 LoRA 参数与 FullFT 参数的比例与其他层保持一致。

我们在另外两种设置下进行了类似的“不同 LoRA 作用层”的比较:(1)在 OpenThoughts3 的一个小子集上做秩 256 的监督学习;(2)在 MATH 数据集上做强化学习。我们的实验设置详见下一节。在这些设置下,仅注意力 LoRA 同样不如仅 MLP LoRA(后者与 MLP+注意力相近)。

当改变 LoRA 应用到的层时,学习率—最终损失(或奖励)曲线的对比。

强化学习

我们实验的一个关键发现是:在策略梯度类的强化学习算法中,即便秩低至 1,LoRA 的学习表现也可完全匹配 FullFT。

在这些实验中,我们使用了带重要性采样修正的基础策略梯度算法;objective=tplearnerpsamplerAdvt\text{objective} =\sum_t \frac{p_{\text{learner}}}{p_{\text{sampler}}} \mathrm{Adv}_t。参见 Your Efficient RL Framework Secretly Brings You Off-Policy RL Training。我们还采用了类似 GRPO 的居中方案DeepSeekMath: Pushing the Limits of Mathematical Reasoning in Open Language Models(Shao 等,2024):对每道题抽取多个完成,并对每组样本的奖励减去其均值。

图 6(下)给出了在 MATHMeasuring Mathematical Problem Solving With the MATH Dataset(Hendrycks 等,2021)与 GSMGSM8K: Training Verifiers to Solve Math Word Problems(Cobbe 等,2021)数据集上的学习率扫描,以及各自典型的超参数设置。我们使用 Llama-3.1-8B 基座模型,因为 Qwen2.5 与 Qwen3 已知在预训练中包含提升数学能力的数据(见 Qwen 技术报告Qwen2.5 Technical Report(Qwen 团队,2024)),这会使仅通过 RL 学到的内容更难被测量。

LoRA 的有效学习率区间更宽,并且在峰值性能上与 FullFT(黑线)一致,至少在 RL 噪声带来的精度限制范围内如此。

在小学数学(GSM,左)与 MATH(右)数据集上进行 RL 时的学习率—最终奖励(准确率)曲线。

这一结果可以由一个信息论的论证所预期。监督学习每个 episode 可提供 O(标记数) 比特的信息。相比之下,在策略梯度方法中,学习由优势函数驱动,每个 episode 仅提供 O(1) 比特的信息。当每个 episode 包含上千个标记时,RL 在训练中每个标记吸收的信息量约比监督学习少 ~1000 倍。

我们可以使用更精确的数字来量化。在 MATH 实验中,我们在约 1 万道题上训练,每题 32 个样本。若假定每个完成仅提供 1 比特信息,则整个训练过程只需吸收 32 万比特。Llama-3.1-8B 的秩 1 LoRA 已有 300 万个参数(这是对模型中所有权重矩阵的 rank·dind_{in} 与 rank·doutd_{out} 求和得到),几乎是该数的 10 倍。也就是说,即便在秩 1 下,LoRA 的容量也足以吸收训练中提供的全部信息。

作为另一对照,DeepSeek-R1-Zero 在 530 万个 episode 上训练(训练 10,400 步,每步含 32 个不同问题,每个问题采样 16 次),对应约 530 万比特的信息。这低于一个低秩 LoRA 的参数量,因此我们预测该结果可以用 LoRA 复现。

为进一步验证 LoRA 在推理型 RL 中的有效性,我们在更大规模上,使用 Qwen3-8b-base 在 DeepMath 数据集DeepMath-103K: A Large-Scale, Challenging, Decontaminated, and Verifiable Mathematical Dataset for Advancing Reasoning(He 等,2025)上开展了实验。该数据集远大于 MATH,且总体更难。为加快实验,我们将训练与评估的样本长度限制为 8192 token。这一长度支持回溯与推理,但相较于更长的链式思维(CoT)会限制最高性能。

基于 Qwen3-8b-base 的 DeepMath 实验。左图展示了不同秩与全参微调的学习曲线。每种设置均展示其最佳学习率对应的曲线,即最终性能最高者。右图展示了学习率—最终性能曲线。与此前数学实验一致,LoRA 的近最优学习率峰更宽。附加图:在 DeepMath 上的更多实验。左图为 AIME 测试集上的基准分数,其难度高于训练集。右图展示了随训练步数变化的 CoT 长度,可视为“学会推理”的信号。

我们观察到:当为每个设置选取其最优学习率时,不同规模的 LoRA 与全参微调的训练进展几乎完全一致。此外,在 AIME 2024 与 AIME 2025 的留出集上评测时也得到相似结论。进一步地,LoRA 与全参微调呈现出类似的质性行为:两者都发展出了回溯、自我验证与上下文探索等高级推理行为,这也反映在模型 CoT 的增长上。

LoRA 超参数设置

LoRA 采用的一个门槛在于需要选择一套不同于 FullFT 的最优超参数。本节表明,这并不像初看上去那样棘手,并给出我们关于超参数选择的发现。

最优学习率与秩

遵循 Hu 等人的做法,我们采用如下 LoRA 参数化:

W=W+αrBAW' = W + \frac{\alpha}{r}BA

其中,rr 为 LoRA 秩,α\alpha 为 LoRA 缩放因子,AABB 为秩为 rr 的 LoRA 权重矩阵。本文实验按照其他实现的标准做法,使用 α=32\alpha = 32

1/r1/r 的缩放使得最优学习率近似与秩无关。实际上更强的结论成立——无论秩为何,训练初期的学习曲线几乎完全相同。这个现象非常醒目;在我们的实验中,不同秩的学习曲线如此接近,以至于我们一度担心是否有 bug 让秩参数被忽略。因此,在短程训练下,最优 LR 也与秩无关。不过,正如上文学习率—损失图(图 2)所示,在较长训练下,最优 LR 仍会呈现一定的秩相关性。

下图比较了在相同学习率下,不同秩在训练早期的学习曲线差异。左图为学习曲线;右图是秩 16 与 256 的差值,并随时间增长。奇怪的是,最初几步该差值为负(但数值极小),因此曲线的那部分未在图中显示。

我们可以通过考察第一次更新后 LoRA 矩阵的期望更新,来部分解释这一结果。可将 LoRA 的乘积 BABA 看作 rr 个秩 1 外积之和:BA=i=1rbiaiT=i=1rΔiBA = \sum_{i=1}^r b_i a_i^T = \sum_{i=1}^r \Delta_i,其中定义 Δi=biaiT\Delta_i = b_i a_i^T。这里,Loss/Δi\partial \text{Loss}/\partial \Delta_i 对所有 ii 相同;但 Loss/bi\partial \text{Loss}/\partial b_iLoss/ai\partial \text{Loss}/\partial a_i 会依赖初始化(例如,Loss/bi\partial \text{Loss}/\partial b_i 依赖于 aia_i)。由于 aia_ibib_i 的初始化与秩无关,故 E[Δi]\mathbb{E}[\Delta_i] 对所有 ii 相同且与秩无关。在训练第 1 步中,每一项的期望更新相等且不依赖秩。因此 (1/r)i=1rΔi(1/r)\sum_{i=1}^r \Delta_i 只是 rr 个相同期望项的样本均值,其期望(即对适配器 (1/r)BA(1/r)BA 的变化)不依赖于秩。

参数化不变性

LoRA 涉及 4 个可能的超参数:

  1. 出现在 α/r\alpha / r 中的缩放因子 α\alpha

  2. 下投影矩阵 AA 的学习率,LRALR_A

  3. 上投影矩阵 BB 的学习率,LRBLR_B

  4. 矩阵 AA 的初始化尺度 initA\text{init}_A。对随机初始化而言,这是 AA 初值元素的标准差。矩阵 BB 以零初始化,因此无需定义 initB\text{init}_B

调这 4 个参数似乎很多。但由于训练动力学中的不变性,其中两个参数是冗余的,学习行为事实上由两个自由度决定。我们通过指出在使用 Adam 且 ε=0\varepsilon = 0 时,优化过程对如下二参数变换保持不变来说明这一点。(该结果可推广到 ε>0\varepsilon > 0;此时需要乘以 1/q1/q,因为梯度会按该因子缩放。)

对任意 p,q>0p, q > 0

  • α1pqα\alpha → \frac{1}{pq} \cdot \alpha

  • initApinitA\text{init}_A → p \cdot \text{init}_A

  • LRApLRALR_A → p \cdot LR_A

  • LRBqLRBLR_B → q \cdot LR_B

由于 4 个自由度中有 2 个对学习过程不起作用,我们剩下一个二维的参数空间。可以为该 2D 空间选取不同的基,例如下述便于直观解释的一组:

  • αinitALRB\alpha \cdot \text{init}_A \cdot LR_B:决定初始更新的尺度,或等价地,学习曲线初始斜率。由于 BB 以零初始化,LRALR_AAA 的初始更新在初期无关紧要。

  • initA/LRA\text{init}_A / LR_A:由于 Adam 以近似 LRALR_A 的步长更新 AA 的元素,该时间尺度参数决定了 AA 脱离初始状态所需的步数。

我们可以用上述基来重新理解以往 LoRA 的一些建议。

LoRA+LoRA+: Efficient Low Rank Adaptation of Large Models(Hayou 等,2024)建议对 AABB 使用不同学习率,且 BB 的学习率更高。用上述基来表达就是:提高 LRBLR_B 等价于提高 initA/LRA\text{init}_A/LR_A,从而让 AA 在更长的时间尺度上变化。

Unsloth’s LoRA Hyperparameter Guide 推荐在高秩 LoRA 中使用更高的 α\alpha(例如不使用 1/r1/r 缩放)。这同样等价于提高 initA/LRA\text{init}_A/LR_A。当我们增大 α\alpha 时,为保持相同的更新尺度,需要相应降低 LRALR_ALRBLR_B,这反过来使得 LRALR_A 相对 initA\text{init}_A 更小。

在我们的实验中,我们采用了 Huggingface peftPEFT: State-of-the-art Parameter-Efficient Fine-Tuning methods(Mangrulkar 等,2022)及 Hu 等人提出的标准参数化:AA 以尺度 1/din1/\sqrt{d_{in}} 的均匀分布初始化,BB 以零初始化,二者使用相同学习率,且 α=32\alpha = 32。在我们的试验中未能在此基础上进一步改进。

LoRA 与 FullFT 的最优学习率

我们的实验显示,在监督学习与强化学习中,LoRA 的最优 LR 一致地约为 FullFT 的 10 倍。这在将性能(损失或奖励)对学习率作 U 形曲线时均可观察到。该观察有助于把 FullFT 的最优超参数迁移到 LoRA。

对此我们尚无充分的理论解释。可尝试从两个事实推出该结论:LoRA 的最优 LR 对秩不变,以及满秩 LoRA 可与 FullFT 直接对比。该分析提示一个比值应为模型的 hidden size 除以 2α2 \cdot \alpha,但这与经验上“最优比值固定为 10、且与基座模型无关”的结果并不一致。

在经验分析中,我们在 Tulu3 上对 14 个不同的 Llama 与 Qwen 模型分别进行了 LoRA 与 FullFT 的学习率扫描。基于这些扫描,我们拟合了一个函数,用模型的 hidden size 以及模型来源(Llama 或 Qwen)来预测最优 LR。函数形式为:

LR=MLoRA(2000hidden size)model pow+LoRA pow\text{LR} = M_{\text{LoRA}} \cdot \left(\frac{2000}{\text{hidden size}}\right)^{\text{model pow} + \text{LoRA pow}}

其中:

  • MLoRAM_{\text{LoRA}} 是在使用 LoRA 时的乘子(FullFT 时为 1)

  • model pow\text{model pow} 是对不同模型来源(Llama 与 Qwen)分别拟合的指数调整项

  • LoRA pow\text{LoRA pow} 是 LoRA 的额外指数调整

  • hidden size\text{hidden size} 是模型残差流的维度。

我们用线性插值来预测损失,从而给定一组参数评分,并对 14 个问题的预测损失求和作为指标。优化结果显示:相较 FullFT,LoRA 的乘子约为 9.8;对 Qwen3 与 Llama 模型,隐藏维度的依赖不同;但 LoRA 的最优 LR 对 hidden size 的依赖与 FullFT 相同,即优化得出 LoRA pow=0\text{LoRA pow} = 0

短程与长程训练中的学习率

LoRA 的典型初始化会在有效学习率上产生一个隐式的随时间变化的“日程”。这导致短程与长程训练之间的差异,以及与 FullFT 相比学习曲线形状上的一些不同。

在训练开始时,BB 被初始化为零。当 BB 很小时,AA 的变化对加到原网络权重上的适配器 BABA 的影响可以忽略。随着 BB 变大,AA 的更新对网络输出的影响开始增大;并且在训练过程中,随着 BB 的尺度接近 AA,有效学习率会逐步升高。我们发现,在 Tulu3 与 OpenThoughts 的完整训练结束时,BB 的谱范数最终大于 AA

这意味着在较短的训练中应设定更高的最优 LR。初步证据显示,短程训练(经验上 ~100 步以内)相对于 FullFT 的最优乘子约为 15×,而在更长的训练中会收敛到前述的 10×。

讨论

我们希望在经验结果之外,讨论一些更广泛的 LoRA 适用性与性能问题,以供研究者与构建者参考。

首先,深入审视我们的主要结论,即 LoRA 与全参微调表现相近所需的两个条件:

  1. LoRA 应用于网络的所有层,尤其是包含最多参数的 MLP/MoE 层。

  2. LoRA 不受容量约束,即可训练参数量要超过待学习的信息量,这个信息量可用数据集规模进行估计。

当满足(1)时,训练刚开始阶段的学习动力学与 FullFT 相似。而依据(2),在未触及容量上限之前,LoRA 的表现会一直像 FullFT。

为什么 LoRA 需要覆盖所有层

如上所示,即使在小数据场景中,仅把 LoRA 放在注意力层也会导致学习更慢。

一种可能的解释来自经验神经切线核(eNTK),可将其看作少量微调时的近似形式(Malladi 等,2022)。eNTK 基于梯度的点积,具体为梯度 gi=/θlogp(tokeniprefixi)g_i = \partial/\partial\theta \log p(\text{token}_i | \text{prefix}_i),以及 K(i,j)=gigjK(i, j) = g_i \cdot g_j。因此,参数最多的层通常对该核的影响也最大。该论文还指出,当你对所有层训练时,LoRA 的 eNTK 近似等于全参微调的 eNTK。于是 LoRA 训练 \approx eNTK(LoRA) \approx eNTK(FullFT) \approx FullFT。需要注意 eNTK(LoRA) \approx eNTK(FullFT) 的近似仅在我们将 LoRA 应用于那些贡献了大部分点积参数的层时成立。

监督学习与强化学习各自需要多少容量?

既有工作Physics of Language Models: Part 3.3, Knowledge Capacity Scaling Laws(Allen-Zhu 与 Li,2024)表明,神经网络每个参数最多可存约 2 比特的信息。这些结果描述的是长程训练极限下吸收的最大信息量,而非计算效率或学习速率。

“每参数 2 比特”的结论依赖于精心构造的合成数据集,使其包含精确数量的信息。而对实际问题而言,估算所需的信息量并不容易。一个经典观察是:在最小化对数损失时,训练第一个 epoch 的总对数损失刻画了数据集的“描述长度”,即记忆该数据集所需比特数的上界。LLM 数据集通常每个 token 的损失约为 1 比特(0.69 nat),具体取决于数据集与模型大小。

该估计衡量的是“完美记忆”数据集所需的容量,因此会高估“可泛化”的学习(在测试集上降低对数损失)所需的实际容量。如何度量监督学习的容量需求、以及它与可训练参数数量的相互作用,是未来工作的开放问题。

对于 RL,我们认为在每个 episode 末尾只有单个奖励值的前提下,策略梯度算法每个 episode 学到的信息大约为 1 比特。这并不是 RL 的基本属性,其他算法有可能从每个 episode 学到更多信息。例如,基于模型的 RL 算法会训练智能体去预测观测并构建世界模型,从而可能在每个 episode 中提取更多信息。“每 episode 1 比特”的结论可能仅适用于策略梯度类算法。

我们可以用信息论更严谨地表述“比特计数”的论证。将由轨迹 τ\tau 与最终奖励构成的一个 episode 看作一条消息(即一个有噪信道),其对未知的奖励函数 RR 提供了某些信息。条件化在当前策略与训练历史上,我们考察策略梯度估计量与 RR 的互信息。REINFORCE 的更新为 G=SAdvG = S \cdot \text{Adv},其中 S=logpθ(τ)S = \nabla \log p_\theta(\tau)。在给定历史的条件下,SSRR 独立,因此唯一依赖 RR 的分量是标量优势(Adv)。

由数据处理不等式有:

I(G;Rhistory)I((S,Adv);Rhistory)=I(Adv;RS,history)H(Adv).I(G ; R | \text{history}) \leq I((S, \text{Adv}) ; R | \text{history}) = I(\text{Adv} ; R | S, \text{history}) \leq H(\text{Adv}).

若将优势量化为 BB 个桶,则 H(Adv)log(B)H(\text{Adv}) \lesssim \log(B)。也就是说,每个 episode 可获得的有用信息量为 O(1)O(1),与模型大小无关。这些比特告诉我们奖励函数(或等价地,最优策略类别)所属的离散集合元素。对互信息的这一分析类似于某些优化算法理论分析中采用的方法。Information Complexity of Black-Box Convex Optimization: A New Look via Feedback Information Theory(Raginsky 与 Rakhlin,2009)需要注意的是,这个估计是训练所吸收信息量的_上界_;实际学到的量取决于策略初始化与其他细节。例如,如果初始化的策略无法获得任何奖励,则优势的熵为零(而非 log(B)),也就学不到任何东西。

LoRA 的计算效率优势

以上实验是按训练步数衡量学习进展的,但我们也会关心不同方法的_计算效率_。我们的计算显示,在每次前反传中,LoRA 的 FLOPs 略高于 FullFT 的 2/3。因此,在总体计算效率上它常常优于 FullFT。

我们通过分析某个权重矩阵的前向—反向传递所用 FLOPs 推导出该 2/3 的比例。这些操作占到了神经网络模型中绝大多数的 FLOPs。记号如下:

  • WRN×NW \in \mathbb{R}^{N \times N} 为权重矩阵
  • xRNx \in \mathbb{R}^N 为输入向量
  • y=WxRNy = Wx \in \mathbb{R}^N 为输出向量
  • xˉ,yˉRN\bar{x}, \bar{y} \in \mathbb{R}^N 为反向传播中相对于 xxyy 的损失梯度
  • WˉRN×N\bar{W} \in \mathbb{R}^{N \times N} 为相对于 WW 的损失梯度

全参微调执行如下操作:

正向

  1. y=Wxy = WxN2N^2 次乘加)

反向

  1. xˉ=WTyˉ\bar{x} = W^T \bar{y}N2N^2 次乘加)
  2. Wˉ+=xyˉT\bar{W} \mathrel{+}= x \bar{y}^TN2N^2 次乘加)

正向需要 N2N^2 次乘加,反向还需 2N22\cdot N^2,合计 3N23N^2。训练需要正反向两者,因此其 FLOPs 是仅正向推理的 3 倍。

在 LoRA 中,我们用 W+BAW + BA 替代 WW,其中 BRN×RB \in \mathbb{R}^{N \times R}ARR×NA \in \mathbb{R}^{R \times N},且 RNR \ll N。由于只更新 Aˉ\bar{A}Bˉ\bar{B},我们将更新 Wˉ\bar{W} 的第三步替换为代价低得多的操作。AABB 的尺寸为 NRN \cdot R,因此每个的完整前反传需要 3NR3NR 次乘加,而不是 WW3N23N^2。两者合计为 6NR6NR。我们仍要在 WxWxxˉ\bar{x} 上进行前反传,相当于 FullFT 的前两步。总的乘加次数为 2N2+6NR2N^2 + 6NR。当 RNR \ll N 时,这略大于 3N23N^223\frac{2}{3}

若按 FLOPs 而非训练步数绘图,LoRA 将明显优于 FullFT。(该分析忽略了注意力的 FLOPs,在长上下文设置中这部分可能相当可观。)

开放问题

围绕我们的结果,仍有若干问题值得未来研究:

  • 明确预测 LoRA 的性能及其与全参微调表现相当所需的精确条件。我们已粗略刻画了等性能的区域,并可按 token 或 episode 估算所需容量,但尚无法做出准确的前瞻性预估。

  • 我们对 LoRA 的学习率与训练动力学的理论理解仍然有限。能解释 LoRA 与 FullFT 学习率比值的更完整理论将十分有价值。

  • 按本文方法评估时,诸如 PiSSAPiSSA: Principal Singular Values and Singular Vectors Adaptation of Large Language Models(Meng、Wang、Zhang,2024)等 LoRA 变体的表现如何?

  • 将 LoRA 应用于 MoE 层有多种选项。研究这些方案的性能,以及它们与对大规模 MoE 模型至关重要的张量并行、专家并行等方法的兼容性,将对 LoRA 使用者大有裨益。

结语

在 Thinking Machines,我们相信微调能够推动 AI 在众多专业领域的实用性。我们对 LoRA 的兴趣,源于希望让这种能力更普及、更易于按具体需求定制。

除了实际用途之外,关于 LoRA 的研究也促使我们更深入地探究模型容量、数据集复杂度与样本效率。考察学习速度与性能如何依赖容量,为研究机器学习中的若干基础问题提供了新的视角。我们期待在未来继续推进这条研究路径。

致谢

感谢 Dan Alexander Biderman、Weizhu Chen、Daniel Han 与 Sadhika Malladi 对本文早期稿件提出的富有洞见的反馈。

引用

请按如下格式引用:

Schulman, John and Thinking Machines Lab, "LoRA Without Regret",
Thinking Machines Lab: Connectionism, Sep 2025.

或使用 BibTeX:

@article{schulman2025lora,
  author = {John Schulman and Thinking Machines Lab},
  title = {LoRA Without Regret},
  journal = {Thinking Machines Lab: Connectionism},
  year = {2025},
  note = {https://thinkingmachines.ai/blog/lora/},
  doi = {10.64434/tml.20250929},
}