
🧠 记忆锚点:r 决定容量,alpha/r 决定强度,target_modules 决定改哪里;用验证集选,不背固定参数。
💡 答案要点
超参数选择指南:
1. 秩(r):
| 任务复杂度 | 推荐 r 值 | 说明 |
|---|---|---|
| 简单(情感分类) | 4-8 | 任务简单,低秩足够 |
| 中等(摘要生成) | 8-16 | 平衡效果和效率 |
| 复杂(代码生成) | 16-64 | 需要更强表达能力 |
2. 缩放因子(α):
- 实际学习率 = α / r
- 常见设置:α = 2r(如 r=8, α=16)
- α 越大,LoRA 影响越强
3. 目标模块(target_modules):
| 策略 | 模块 | 参数量 | 效果 |
|---|---|---|---|
| 最小 | q_proj, v_proj | 最少 | 基础 |
| 推荐 | q_proj, k_proj, v_proj, o_proj | 中等 | 良好 |
| 最大 | 所有线性层(含 MLP) | 最多 | 最好 |
实验结果(7B 模型,GSM8K 数据集):
| r | α | 准确率 | 训练时间 | 显存 |
|---|---|---|---|---|
| 4 | 8 | 82.3% | 2h | 18GB |
| 8 | 16 | 85.7% | 2.5h | 20GB |
| 16 | 32 | 87.1% | 3h | 24GB |
| 64 | 128 | 88.5% | 5h | 35GB |
选择策略:
python
# 简单任务
r = 8
alpha = 16
target_modules = ["q_proj", "v_proj"]
# 复杂任务
r = 16
alpha = 32
target_modules = ["q_proj", "k_proj", "v_proj", "o_proj"]面试话术:
"我通常从 r=8, α=16 开始,如果效果不够好再增加到 r=16。target_modules 优先选择注意力层(q/k/v),因为它们对语义理解影响最大。"