LoRA 的 r 和 alpha 怎么设?QLoRA 又省在哪?

Q4-05参数高效微调常见LoRAQLoRA超参rankalphaNF4量化

谁在问:有训练经验的面试官(二面);算法工程岗;作为 Q4-04 的实操向追问

口语化问法

  • 你实际调过 LoRA 吗?r 和 alpha 怎么定的?
  • QLoRA 和 LoRA 差在哪?什么时候用 QLoRA?
  • 你训 LoRA 的时候学习率设多少?和全参微调一样吗?

考察意图

这道题只能靠动过手来答,是本章筛人效率最高的一道。面试官在看:

  1. 超参是抄的还是有判据的。答"r=8,alpha=16,教程上这么写的"和答"按数据信息量选,我们 1800 条所以 16 够用",是两个层级。
  2. 有没有跟上 2026 的口径all-linear、学习率提十倍、有效 batch < 32,这三条是近两年才成为共识的,答不出来说明知识停在 2023。
  3. 知不知道 QLoRA 是降级选项。把 QLoRA 当"更先进的 LoRA"是高频误解。

参考答案

图 2 · 60 分与 90 分差在哪:代价、演进、怎么验证

60

60 分答案(及格线)

r 是低秩矩阵的秩,决定适配器的容量。r 越大能学的东西越多,但参数量和显存也涨,还更容易过拟合。常用 8、16、32、64。

alpha 和 r 一起决定缩放系数 α/r,一般设成 α = r 或 α = 2r。

QLoRA 是把基座量化到 4 bit 再挂 LoRA。基座显存降到原来的四分之一,代价是训练变慢一些、精度略有下降。7B 全参要八十多 G,LoRA 大概二十 G,QLoRA 不到十 G。

数字都对,及格。但全是"常用值",没有判据,追问"为什么是 16 不是 64"就没了。

90

90 分答案(有生产经验的回答)

r 的判据不是玄学,是容量:

LoRA 的可训参数量必须大于"数据集要装进去的信息量"。容量够时 LoRA 能打平全参微调;容量不够时不是断崖,是效率逐步变差。

所以社区里那两套看着打架的建议其实不矛盾:

  • TRL / Thinking Machines 口径:SFT 用 r=256,RL/GRPO 用 r=1~32。
  • Unsloth 等实用口径:16 或 32 起步。

前者说的是 post-training 规模的数据(百万 token 级),后者说的是几百到几千条的业务数据。而 RL 场景 r=1 就够,是因为强化学习每个 episode 只带回大约 1 bit 信息——rank-1 的三百万参数早就超容量了。

我的实操顺序:r=16 或 32 起步 → 如果训练 loss 明显欠拟合(降不下去)才往上加 → 但在加 r 之前,先检查 target_modules 对不对,因为效果不好十次有八次是这个原因,不是 r。

alpha:α/r 是作用在适配器输出上的缩放系数。α=r 或 α=2r 都能用,关键是做 rank 消融时必须固定 α/r,否则你分不清变化来自容量还是来自缩放。

2026 年真正决定成败的其实是另外三个超参(截至 2026-08,锚点是《LoRA Without Regret》,已被 HuggingFace TRL 收进官方文档):

超参 2026 共识 常见的 2023 化石
target_modules "all-linear",必须覆盖 MLP ["q_proj","v_proj"]
学习率 约为全参的 10 倍(约 100 步的短训约 15 倍):SFT 场景 LoRA 2e-4 / 全参 1e-5~1e-6;RL 场景 LoRA 5e-5 / 全参 1e-6 沿用全参的 2e-5
有效 batch < 32。LoRA 对大 batch 的容忍度差于全参,且与 r 无关 能开多大开多大

epoch 控制在 1–3,超过 3 收益递减且过拟合与遗忘同时上升;dropout 从 0 起步(短训练里 dropout 作为正则并不可靠)。

QLoRA 省在哪——三个组件,很多人只记得第一个:

  1. NF4(4-bit NormalFloat):针对"网络权重近似正态分布"这个先验设计的 4 bit 数据类型,在该假设下优于普通 int4。基座以 NF4 存,前向时临时反量化到 BF16 计算。
  2. 双重量化:量化本身产生的量化常数也占显存,把它再量化一次,每参数再省约 0.4 bit。
  3. 分页优化器:借助统一内存,在梯度检查点造成显存尖峰时把优化器状态临时换出,避免尖峰直接 OOM。

关键是要说清它省的是哪一块:QLoRA 省的是基座权重那一项(14 G → 3.5 G),不是优化器状态——优化器状态在 LoRA 时本来就已经很小了。很多人把 QLoRA 说成"省优化器显存",这是理解错了位置。

三段式: 解决显存不足;代价是训练吞吐通常掉三成上下、精度略降;显存够的时候就不该用它。截至 2026-08,QLoRA 的正确定位是降级选项,不是默认——把它当"更先进的 LoRA"是个流传很广的误解。

追问链

图 1 · 五层追问树:面试官会往哪儿挖
这道题只能靠动过手来答:每问都在查你的默认值是哪一年的

  1. r 从 16 加到 64 会发生什么?怎么判断该加还是该减?

    期望参数量翻两番、显存与训练时间略增;原来欠拟合(loss 降不下去)会有改善,原来已拟合得不错则只换来过拟合与遗忘风险。判据分两个维度:训练集上都不像 → 容量不够,加 r;训练集像了但验证集差 → 过拟合,加数据或减 r、减 epoch,不是继续加 r
    信号用「训练集 vs 验证集」两个维度判断 → 真调过;答「一般加大点效果更好」→ 没调过
  2. target_modules 你会怎么设?只加注意力行不行?

    期望all-linear,必须覆盖 MLP(gate/up/down)。只加注意力明显更差 —— r=256 的 attention-only 打不过 r=128 的 MLP LoRA,参数量还差不多。这是当前最常见的翻车原因:很多老教程和默认配置停在 q_proj/v_proj
    信号q_proj/v_proj 且没有补充说明 → 基本可以判定知识停在 2023 年
  3. 学习率你怎么设?和全参一样吗?

    期望约为全参的 10 倍:SFT 场景 LoRA 2e-4 / 全参 1e-5~1e-6,RL/GRPO 场景 LoRA 5e-5;原因与 LoRA 的 1/r 缩放和参数化形式有关。用全参的学习率跑 LoRA,表现是 loss 降得极慢、效果平淡,极易被误判成「LoRA 不行」
    信号说出「提一个数量级」→ 跟上了 2026 口径;答「差不多,2e-5」→ 化石答案,常与 q_proj/v_proj 成对出现
  4. QLoRA 的三个组件各解决什么?它省的到底是哪块显存?

    期望NF4 压基座权重、双重量化压量化常数(每参数再省约 0.4 bit)、分页优化器扛显存尖峰。省的是基座权重那一块(7B:14 G → 3.5 G),不是优化器状态 —— 那一项在 LoRA 时本来就很小。代价是反量化开销让吞吐掉约三成、精度略降
    信号明确指出「省的是基座不是优化器」→ 真算过显存账;只答「省显存」→ 泛泛
  5. 只有一张 24 G 卡,业务方要你两周内微调一个 14B 模型,QLoRA 也塞不下你砍什么?

    期望先算账:14B 基座 BF16 就 28 G,24 G 卡跑不了 LoRA;QLoRA 基座 7 G、适配器加优化器 2 G,余 15 G 给激活 → 配套:梯度检查点、max_seq_len 按真实分位数裁而非默认 4096 → 塞不下按序砍:① 缩序列 ② 降 r 16→8 ③ 换更小基座才是真解 → 两周:先建评测集跑 few-shot 基线,达标就停
    信号立刻指出「14B 的 BF16 基座 28 G,24 G 卡连 LoRA 都跑不了」→ 最强信号;只会答「上梯度检查点」→ 有招式没优先级
「r=8、alpha=16」有数字没判据,追问一句「为什么不是 64」即见底。分水岭在第 2 层 target_modules:答 q_proj/v_proj 就报出了年份。

评分要点

  1. 知道 α/r 是缩放系数,且知道消融时要固定该比值
  2. r 的选择有判据(数据信息量 / 欠拟合才加),不是背常用值
  3. 知道 target_modules 应为 all-linear 且覆盖 MLP
  4. 知道 LoRA 学习率约为全参的 10 倍
  5. 知道 epoch 控制在 1–3
  6. 能说出 QLoRA 的至少两个组件
  7. 知道 QLoRA 省的是基座权重那一块
  8. 知道 QLoRA 是降级选项而非默认
  9. (加分)知道有效 batch < 32 这一条
  10. (加分)能把"效果不好先查配置再调 r"作为排查顺序说出来

常见错误

"r 一般设 8,alpha 设 16"有数字没判据。追问"为什么不是 64"即见底。含糊回答的典型形态:报常用值代替讲判断。
"target_modules 用 q_proj 和 v_proj"2023 化石答案,本题最主要的减分点。
"LoRA 学习率和全参差不多"同上,通常与前一条成对出现。
"QLoRA 是升级版的 LoRA,更好"定位错误。它是显存不足时的降级选项。
"QLoRA 省的是优化器显存"位置错误。省的是基座权重。
"alpha 越大学得越快"把缩放当学习率。
"r 越大效果越好"忽略过拟合与遗忘风险,也说明没跑过消融。
全程不提怎么判断欠拟合/过拟合说明只跑过一次,没有调参循环。

关联学习