训练与微调LoRA微调超参数速答 · 约 5 分钟更新 2026-09-19

LoRA 的 rank(秩)怎么选?是不是越大越好

一句话结论

不是。rank 是 LoRA 旁路矩阵的宽度,决定能学多少变化:小了容量不够,大了费显存还容易过拟合,常见做法从个位数到几十之间起步按任务调。

先这样答

先说 rank 是什么。LoRA 在原权重旁边加一对相乘的小矩阵,rank 就是这对矩阵中间那一维的宽度。可以把它理解成给这次微调留了几个「可调方向」:rank 越大,能表达的变化越多,可训练参数也越多。

为什么不是越大越好,两头都有代价。太小:任务复杂(学文风、多种输出格式)时容量不够,表现是训练损失压不下去、效果平平。太大:显存和时间上涨,可训练参数多了之后,数据不够时更容易过拟合,把训练集的毛病背下来;而且收益不是线性的,中等区间之后再加,效果往往不再往上走。

实操建议:从小的 rank 跑通全流程,看瓶颈在哪。训练损失下不来、任务学不像,说明容量不够,往上加 rank 或者把 LoRA 挂到更多层;效果够用就停手,省下的资源拿去改数据,通常比堆 rank 划算。常见做法是在个位数到几十之间起步调整,这是经验区间,不是定论。

面试官会怎么追问

  • 「rank 和 alpha 是什么关系?」 alpha 是缩放系数,LoRA 的输出会乘上 alpha 再加回原路径,等于整体放大或缩小这次微调的影响幅度。很多实现把 alpha 设成和 rank 相同或一到两倍,两者要当一对超参一起调,只动一个对比就不公平。
  • 「加了 rank 效果还是不行怎么办?」 多数时候瓶颈不在容量而在数据:先检查数据质量和覆盖,再看是不是该把 LoRA 挂到更多层。不看瓶颈直接堆 rank,是最常见的无效操作。
  • 「不同任务对 rank 的需求差多少?」 差很多。学会一种固定输出格式,很小的 rank 就够;要改文风、学一套领域术语体系,容量需求明显更高。没有万能值,按任务实测。

回答的坑

  • 认为 rank 越大效果必然越好。过大不仅浪费资源,还容易过拟合,尤其在数据量有限的时候,这一点主动说出来才显得真的调过参。
  • 完全忽略 alpha。alpha 决定旁路输出的缩放幅度,rank 和 alpha 一起构成 LoRA 的容量配置,只谈 rank 说明只了解了一半。
—— 本题完 ——