Skip to content

LoRA微调的参数对训练模型的作用和影响

LoRA微调核心参数清单

参数名典型值范围作用对模型的影响
秩 (rank, r)2~64控制低秩矩阵的维度决定模型微调的灵活性和参数规模
缩放因子 (α)1~256控制低秩矩阵对原权重的缩放比例平衡新知识与原始知识的影响权重
学习率 (lr)1e-5 ~ 1e-3控制参数更新的步长影响训练速度和稳定性
目标模块 (target_modules)"q_proj", "v_proj"指定哪些神经网络层添加LoRA适配器决定模型哪些部分参与微调
训练层数 (layers)"all"[0,1,2]选择Transformer的哪些层添加LoRA控制微调的深度和范围
dropout0~0.5随机丢弃部分神经元防止过拟合提高泛化能力,但可能降低训练效率

LoRA微调核心参数作用和影响

在LoRA(Low-Rank Adaptation)微调中,每个参数都对模型的训练效果和效率有重要影响。以下是关键参数的作用及其对模型训练的详细分析:


1. 秩(Rank, r

  • 作用:控制低秩矩阵的维度(分解后矩阵的行列数),决定新增可训练参数的数量。
  • 影响
    • 模型容量r 越大,低秩矩阵能捕捉的信息越复杂,但参数量和计算量增加(复杂度为 O(r×d),其中 d 是原层维度)。
    • 欠拟合与过拟合r 过小可能导致模型无法学习足够任务知识(欠拟合);过大可能引入冗余参数(过拟合风险)。
    • 经验值:通常从 r=8 开始实验,复杂任务可尝试 r=16r=32

2. 缩放因子(Alpha, α

  • 作用:控制低秩矩阵对原始权重的缩放比例,公式为 ΔW=αrBA
  • 影响
    • 更新幅度α 越大,低秩矩阵的更新对原模型影响越大,但需与学习率协调。
    • r 的关系:保持 α/r 比例固定可避免因 r 变化导致学习率重新调参(例如 α=16 配合 r=8)。
    • 经验值:通常设置 α=2r(如 r=8, α=16)。

3. Dropout 率

  • 作用:在低秩矩阵的输出中加入随机失活,防止过拟合。
  • 影响
    • 正则化强度:高 dropout 率(如 0.2-0.5)增强泛化能力,但可能抑制模型学习能力。
    • 数据依赖性:小数据集需更高 dropout,大数据集可降低或关闭(dropout=0)。
    • 注意:仅在训练时生效,推理时自动关闭。

4. 目标模块(Target Modules)

  • 作用:指定哪些原模型层的参数将被 LoRA 适配。
  • 常见选择
    • Transformer 模型:通常适配注意力层的 queryvalue 矩阵(target_modules=["q_proj", "v_proj"])。
    • 全连接层:适配分类器的 dense 层。
  • 影响
    • 适配位置:不同模块影响模型不同能力(如 query 影响信息检索,value 影响信息聚合)。
    • 参数量:选择更多模块会增加可训练参数,需权衡效果与效率。

5. 学习率(Learning Rate)

  • 作用:控制低秩矩阵参数更新的步长。
  • 影响
    • 收敛速度:LoRA 学习率通常比全参数微调大(例如 1e-4 vs. 1e-5),因为仅训练新增参数。
    • 稳定性:过大会导致震荡,过小收敛缓慢。
    • α 的协调:高 α 可能需要更低学习率以稳定训练。

6. 初始化方式

  • 作用:低秩矩阵 AB 的初始化方法(通常 A 用高斯初始化,B 用零初始化)。
  • 影响
    • 训练起点:零初始化 B 确保初始状态 ΔW=0,避免破坏预训练权重。
    • 收敛速度:合理的初始化可加速训练(如 He/Xavier 初始化)。

7. 偏置项训练(Bias)

  • 作用:决定是否微调原模型中的偏置参数。
  • 选项
    • bias="none":不训练偏置。
    • bias="all":训练所有偏置。
    • bias="lora_only":仅训练 LoRA 层的偏置。
  • 影响:微调偏置可能提升效果,但增加参数量和过拟合风险。

8. 其他参数

  • 批量大小(Batch Size):影响训练速度和梯度稳定性,需根据显存调整。
  • 优化器(Optimizer):常用 AdamW,配合权重衰减(Weight Decay)防止过拟合。
  • 训练步数(Epochs):LoRA 通常收敛较快,需早停(Early Stopping)避免过拟合。

参数调优建议

  1. 简单任务:从小 r(如 r=4)开始,逐步增加。
  2. 数据量少:提高 dropout(0.3-0.5),降低 r
  3. 模块选择:优先适配注意力层,再扩展至其他模块。
  4. 学习率:从 1e-4 开始,配合 α=2r 调整。
  5. 实验验证:通过网格搜索或贝叶斯优化寻找最佳组合。

通过合理调整这些参数,LoRA 能在保持高效训练的同时,显著提升模型在下游任务的表现。