大模型微调系列教程(四)——LLaMA Factory微调Qwen3-8B

565 阅读5分钟

LLaMA Factory 是一个简单易用且高效的大型语言模型训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调。并且更新及时,是微调的好工具。

配置数据集

使用构建完成的数据集,命名为CCER.json。

  1. 1. 将CCER.json数据集添加到LLaMA Factory的data目录Image

  2. 2. 修改dataset_info.json注册数据集

    将我们的ccer数据集添加进去,可以看到LLaMA Factory自带了很多数据集

     {
            ...
      "ccer": {
        "file_name":"CCER.json"
      },
      ...
     }
    

配置微调参数

  • 选择模型、模型路径
  • 选择微调方法,有lora,full,freeze三种(参考系列文章第二篇),选择lora
  • 选择训练数据集,在下拉框中,可以看到我们上一步注册ccer数据集

Image

通用训练参数

  • 学习率
    • 描述:控制模型参数更新的步长。
    • 建议:
      • 常见范围是 1×10−4 到 5×10−4 (例如,1e-4, 3e-4)。
      • 具体最佳值取决于模型、数据集和批次大小,需要实验调整。
      • 可以配合学习率调节器 (learning rate scheduler) 使用,如 cosine 或 linear 衰减。
  • 训练轮数
    • 描述:整个训练数据集被模型学习的次数。
    • 建议:
      • 通常 1 到 5 个 epochs 可能就足够了,具体取决于数据集大小和任务复杂度。
      • 密切监控验证集上的性能,以避免过拟合,并根据需要进行早停。
  • 批处理大小
    • 描述:每次参数更新所用的样本数量。
    • 建议:
      • 在显存允许的范围内,较大的批次大小通常能提供更稳定的梯度。
      • 常见的批次大小有 4, 8, 16, 32 等。

LoRA参数

  • LoRA秩(r)

    • 描述:LoRA 适配器中低秩分解矩阵的秩。它直接决定了添加到模型中的可训练参数数量。r 越大,可训练参数越多,理论上模型能学习到更复杂的模式,但也可能增加过拟合的风险和计算成本。
    • 建议:
      • 通常从较小的值开始尝试,如 4, 8, 16, 或 32,如果任务非常复杂或数据集非常大,可以尝试更大的 r 值,如 64 甚至 128。
      • 权衡性能提升和增加的参数量/训练时间。较小的 r 值可以实现更快的训练和更小的模型文件。
  • LoRA缩放系数

    • 描述:用于调整 LoRA 适配器输出的权重。通常,它被设置为与 r 相同的值或 r 的两倍。这个参数可以看作是对 LoRA 适配器激活的“强度”进行调整。
    • 建议:
      • 一个常见的做法是将 lora_alpha设置为 r 的两倍。例如,如果 r=8,则 lora_alpha=16。
      • 需要实验确定
  • LoRA随即丢弃

    • 描述:在 LoRA 层的 A 矩阵之后应用 dropout,以防止过拟合。
    • 建议:
      • 如果担心过拟合,可以设置一个较小的值,如 0.05 或 0.1。某些数据集或任务,不需要 dropout (可以设置为 0)。
      • 如果训练数据较少,或者模型表现出过拟合的迹象,可以尝试增加 dropout 值。
  • LoRA+ 学习率比例(λ)

    • 描述:LoRA+ 是一种对标准 LoRA微调方法的改进。对于嵌入维度较大的模型,这种做法可能略优于LoRA微调。
    • 建议:
      • λ 应该大于等于 1。
      • 标准的 LoRA 微调效果未达到预期,或者希望在相似的计算成本下获得更好的性能和更快的收敛速度,可以尝试 LoRA+。
  • rslora

    • 描述:rsLoRA 旨在解决标准 LoRA 在使用较高秩 (r) 时可能出现的训练不稳定和性能下降问题。
    • 建议:
      • 如果在使用标准 LoRA 并尝试增加秩时观察到训练困难、收敛缓慢或性能反而下降的情况,此时可以尝试 rsLoRA。
      • LoRA 在高秩下表现不佳或训练不稳定,那么 rsLoRA 是一个很好的选择。
  • DoRA

    • 描述:DoRA 的目标是进一步缩小 LoRA 与全参数微调之间的性能差距,逼近全参数微调。
    • 建议:
      • 对微调后的模型性能有非常高的要求,如果发现标准 LoRA 的效果与全参数微调仍有一定差距,DoRA 提供了一个有潜力缩小这一差距的选项。
  • PiSSA

    • 描述:PiSSA 的核心思想是改进 LoRA 中低秩适配器矩阵 A 和 B 的初始化方式以及优化目标,逼近全参数微调。
    • 建议:
      • 期望更快收敛和更好性能时。
      • 需要对模型量化时,可以尝试,减少量化误差(与 QLoRA 结合时)。

开始微调

点击开始后,可以方便的查看进度以及loss趋势。

Image

模型导出与测试

LLaMA Factory可以方便的导出模型到指定目录。

Image

可以明显看出微调前后,对同一问题,微调后模型回答正确。

Image

最后

至此,我们的大模型微调系列四篇文章已经全部完成。整个过程比较简单,但在实际工作中,需要不停的实验,尝试不同的数据集,参数组合,才能真正提升性能。

💡

优秀的模型,需要的数据质量 远大于 数量。

原文作者:AI开发者日记

原文地址:https://mp.weixin.qq.com/s/c0lrlAKEzI6uwoKLhKsnBA