Skip to content

LoRA 的超参数应该怎么设置?有什么经验法则? ​

  • 标签:

🏛 业务架构师 ​

LoRA 超参数设置,我按"重要性"给经验值和取舍逻辑:

  • 秩 r(最关键):决定旁路容量。默认 r=8 或 16 起步;任务复杂、数据充足(5 万条+)可到 32~64;r 越大越容易过拟合且边际收益骤减。业务上"简单风格适配 r=8、复杂任务范式 r=16~32"覆盖 90% 场景。
  • alpha(缩放系数):旁路输出的缩放因子,有效强度 ≈ alpha/r。经验法则 alpha = r 或 2r(如 r=16 配 alpha=32),保持稳定的学习信号;有些人用它间接调学习率,不建议乱动。
  • 目标模块(target_modules):默认只挂注意力层的 q_proj/v_proj 就够;效果不足时扩展到全部线性层(含 FFN 的 gate/up/down)——通常再涨一点,但可训练参数翻数倍。
  • 学习率:LoRA 常用 1e-4~2e-4(比全量微调的 1e-5 高一个量级,因为只训小矩阵);不收敛就降,学不动就升,以验证集曲线为准。
  • dropout:0.05~0.1,小数据集防过拟合。
  • epoch:1~3 轮,配合早停——多训基本是在背题。

我的调参纪律:一次只改一个参数、每轮实验记录配置与评测分数、用固定评测集对比——把调参变成可控实验而不是玄学抽卡。预算给足的话,网格扫 r∈{8,16,32}×lr∈{1e-4,2e-4} 六组实验,基本就能定稿。

🏗 系统架构师 ​

LoRA 超参我按重要性排序给经验值,并说明每个的敏感度:

  • 秩 r(最重要):容量旋钮。经验法则:轻量格式适配 r=8;领域任务/复杂格式 r=16~32;与底座分布差异大(继续预训练后)r=64 起步。r 翻倍的收益递减,先从 16 开始,评测集对比再决定加码;
  • alpha(缩放):增量缩放系数 Δh = (α/r)·BAx,常用 α = 2r 或 α = r;配合学习率一起调才有意义,单独调收益小;
  • 学习率:LoRA 要比全量高一个量级——1e-4 ~ 3e-4(全量是 1e-5 级);QLoRA 偏上限。敏感度最高,建议 1e-4 / 2e-4 / 3e-4 三点扫描;
  • 目标模块:默认 q_proj、v_proj;效果不够升级到全层(q/k/v/o + MLP 的 up/gate/down)——通常比加秩更有效,代价是参数多一点;
  • epoch 与 batch:小数据 2~3 epoch(多了过拟合);有效 batch 32~128(梯度累积凑);
  • dropout:LoRA dropout 0.05~0.1,数据少防过拟合;
  • 数据量配比:领域数据几千~几万条 + 5~20% 通用数据。

我的调参纪律:先固定 r=16 + α=32 + 全层 + lr=2e-4 的"基线配方"跑通,再按评测结果动单一变量——LoRA 效果差异的 80% 来自数据质量和学习率,不是超参精调。

💻 全栈开发专家 ​

LoRA 超参的经验法则,我按重要度排:

  1. r(秩):任务适配强度的主旋钮。
    • 分类/格式化/风格微调:r=8~16 足够;
    • 复杂推理或多领域混合:r=16~64;
    • 经验:r 翻倍训练参数才翻倍(本来就小),宁可略大也别太小,但过大(>128)边际收益趋零还易过拟合。
  2. lora_alpha(缩放):有效缩放是 α/r。黄金法则:alpha = 2×r(r=16 配 α=32),学习率就不用大调;保守做法固定 α=16 只调 r。
  3. target_modules:不要只挂 q/v!覆盖 q_proj,k_proj,v_proj,o_proj 是底线,加 FFN(gate_proj,up_proj,down_proj)效果更好(QLoRA 论文结论:全线性层都挂最优)。
  4. 学习率:LoRA 1e-4~3e-4(比全量的 1e-5 大一个量级,因为只训小矩阵);配 warmup 3%~10% + cosine 衰减。
  5. lora_dropout:0.05~0.1,数据少(<5k)取上限。
  6. epoch:1~3,小数据集盯 eval loss 早停,SFT 过拟合的头号原因就是 epoch 太多。
  7. batch(等效):gradient_accumulation 凑到等效 batch 32~128。

调参顺序(省时间的关键):lr → epoch → r → target_modules。先用默认值(r=16, α=32, lr=2e-4, 2 epoch)跑通基线,80% 的任务这套默认就达标,别一上来网格搜索。