LoRA微调关键参数
目录
一、什么叫“参数”,什么叫“超参数”
1. 模型参数(Parameters)
这是训练过程中被学习出来的:
- 权重矩阵
W - 偏置
b - LoRA 中的
A、B矩阵本身的数值
这些是通过 loss → 反向传播 → 梯度下降自动更新的。
2. 超参数(Hyperparameters)
这是训练前人工设定的,用于控制“学习规则”的:
- 学习率
lr - batch size
- 训练步数 / epoch
- 正则化系数
- LoRA 的 r、α、dropout、target_modules
2️⃣ 关键参数
| 参数 | 说明 | 常见取值 / 范例 |
|---|---|---|
| r | LoRA 的秩,低秩矩阵的大小 | 4~64(小模型 r 小,大模型 r 可大一些) |
| alpha | 缩放因子,影响 (\Delta W) 的幅度 | 16、32 |
| dropout | 对 LoRA 注入的增量矩阵做 dropout | 0~0.1 |
| target modules | 选择哪些模块做 LoRA | Transformer 的 q_proj、v_proj 等 |
| fan_in_fan_out | 是否交换矩阵维度 | True/False,取决于原模型实现 |
详解
明白了,你希望我把 LoRA 微调主要针对的 Transformer 层、LoRA 参数和调参建议做一个系统梳理,并说明 各参数如何设置及对模型影响。下面我帮你整理成工程可落地的表格和说明。
一、主要作用层与对应 LoRA 参数
| 层类型 | 说明 | LoRA 调整的参数 | 调参要点 / 建议 |
|---|---|---|---|
| 注意力层 Q/K/V 投影矩阵 | Transformer 的多头自注意力核心矩阵 | A, B (低秩矩阵) | rank r 控制微调能力,alpha 控制增量幅度,dropout 可防过拟合 |
| 输出线性层(Output Projection) | 注意力输出的线性映射 | A, B | rank 一般可同 Q/K/V,alpha 可适当减小 |
| 嵌入层(Embedding) | 词嵌入向量映射 | A, B | 对高频词可保守,r 不宜太大,防止破坏原始空间 |
| Feed-Forward 层 / MLP | 两层线性 + 激活 | A, B | rank r 较小即可,主要调控非线性表达 |
| 分类头 / 输出层 | 下游任务特定输出 | A, B | alpha 可适当增大以快速适配任务 |
二、主要 LoRA 参数及设置建议
| 参数 | 作用 | 调参思路 / 常见值 | 对模型的影响 |
|---|---|---|---|
| r(rank) | 低秩矩阵的维度 | 4~64 小模型 4~16,中型 16~32,大模型 32~64 |
r 越大,微调能力越强,但参数量增加,可能影响稳定性 |
| alpha | 缩放增量矩阵 ΔW 幅度 | 16~32 | alpha 越大,LoRA 对原模型影响越明显;过大可能破坏原模型特性 |
| dropout | 对增量矩阵做 Dropout | 0~0.1 | 避免 LoRA 过拟合小样本数据,r 小时可适当增加 |
| target modules | 选择微调哪些模块 | q_proj、v_proj、k_proj、output_proj、embedding、MLP | 只微调核心层可减少参数,提高训练速度 |
| fan_in_fan_out | 是否交换矩阵维度 | True / False | 根据原模型实现决定,常用 True 对齐权重布局 |
三、调参策略(针对主要应用场景)
-
小型 NLP 模型 / 少量训练样本
- r = 4~16
- alpha = 16
- dropout = 0.05
- target modules = q_proj + v_proj
-
中型 / 大型语言模型(如 LLaMA-7B)
- r = 32~64
- alpha = 32
- dropout = 0~0.05
- target modules = q_proj, k_proj, v_proj, output_proj
-
嵌入层微调
- r = 16
- alpha = 16
- dropout = 0~0.1
- 用于特定任务词汇增量适应,防止破坏原空间
-
多任务 / 风格注入(Diffusion、生成模型)
- r = 32~64
- alpha = 32
- target modules = UNet 中注意力层 + 条件投影层
四、注意事项
-
先冻结原始权重
- LoRA 只更新 A 和 B,原始矩阵 W 保持不动
-
控制参数量
- rank r 越大,微调参数越多;一般建议 微调参数 < 10% 原始参数
-
调节 alpha
- alpha 控制 LoRA 对原模型输出的影响
- 小样本场景 alpha 可适当小,以防过拟合
-
Dropout 防过拟合
- 对小数据集尤其重要
- 对大数据集,可设置为 0
target model选择
在 LoRA 微调中,target modules(要微调的层)不一定全部选,通常根据任务和资源选择局部或全局。选择策略可以按下面思路:
一、选择策略
1️⃣ 核心层优先(推荐做法)
-
多头自注意力层的 q_proj、k_proj、v_proj、output_proj
-
原因:
- 注意力层是 Transformer 的核心,微调它可以快速调整模型的表达能力
- 参数量大,用 LoRA 增量微调效果明显
2️⃣ 嵌入层(Embedding Layer)
- 当任务需要处理 特定词汇或领域术语 时微调
- r 不宜太大,避免破坏原始嵌入空间
3️⃣ Feed-Forward / MLP 层
- 对于任务需要改变非线性映射能力时才微调
- rank 可较小,一般 4~16
4️⃣ 输出层 / 分类头
- 对下游任务特定输出才微调
- 对通用 LLM 不建议全部微调输出层
二、全局 vs 局部选择
| 策略 | 适用场景 | 优缺点 |
|---|---|---|
| 局部微调(只微调注意力层 + 部分嵌入) | 小数据集、小模型、快速微调 | 参数少,训练快,不破坏原模型能力 |
| 全局微调(所有 Transformer 层 + 嵌入 + FFN) | 大数据集、复杂任务 | 微调能力最强,但参数量大、训练成本高 |
实际工程中,大多数场景采用 局部微调,比如只选择 q_proj、v_proj、output_proj 和嵌入层,这样 参数量少、训练快、对原模型破坏小。
三、调参示例
-
小型客服智能助手
- target modules:
q_proj+v_proj+ embedding - r = 8~16
- alpha = 16
- dropout = 0.05
- target modules:
-
中型 LLM 文本生成任务
- target modules:
q_proj+k_proj+v_proj+output_proj - r = 32
- alpha = 32
- target modules:
-
领域特定嵌入增强
- target modules: embedding
- r = 16
- alpha = 16
总结:
不必全部选。优先微调 注意力层 + 嵌入层,根据任务复杂度和数据量决定是否扩展到 MLP / 输出层。
局部微调通常足够,大幅减少训练参数,避免过拟合。

浙公网安备 33010602011771号