跳到主要内容

如何使用 LLaMA Factory 进行模型微调

LLaMA Factory 是一个高效的模型微调框架,帮助用户快速微调大型语言模型(LLMs)。对于新手用户,本文将介绍如何准备数据集并使用 LLaMA Factory Web UI界面零代码微调模型的重要训练参数,帮助您启动第一个模型的微调。

数据集准备

首先,我们可以从传神社区找到一个 LlaMA Factory 支持的模型,本教程将基于 OpenCSG 算法团队自研的预训练模型 “csg-wukong-1B”,使用LLaMA Factory 训练框架来进行微调。

进入模型页面,点击 微调实例 跳转至创建页面,完成实例创建并等待实例启动后,即可以开始进行模型微调。

Finetune Instance

Create Finetune Instance

Finetune Page

LLaMA Factory 内置了一些默认数据集,放在 data 目录下。您可以直接使用内置数据集,也可以根据自己的需求上传私有数据集,将数据处理为框架特定的格式,放在 data 目录下,并在 dataset_info.json 文件中添加对数据集及其内容的描述和定义。

目前支持 Alpaca 格式和 ShareGPT 格式的数据集。您可以在 LLaMA Facotry 官方文档中查看对不同数据集的格式要求。

注:如果您需要使用自定义数据集,请确保在 data/data_info.json 文件中添加自定义数据集描述,并保证数据集格式的准确,否则可能会导致训练失败。

模型微调

Web UI 介绍

LLama Factory 提供了一个直观的 Web UI,用户可以通过该界面方便地进行模型微调、参数调整及监控训练任务的进度。

Web UI 主要分为四个界面:训练、评估与预测、对话、导出。

参数配置

在 Web UI 中,您可以通过用户界面轻松调整各项参数。以下是一些重要的参数及其调整建议,在本教程中未提及到的参数保持默认值。您可以根据实际业务需要对相应参数进行调整。

  1. 语言(Lang)

    • 默认情况下,使用英文(en)界面,您可以切换为中文(zh)。 UI Lang
  2. 模型名称(Model name)

    • 默认情况下,Web UI 会加载您提供的模型,本教程中使用的是 csg-wukong-1B
    • 如果您需要使用不同的模型,可以在界面中进行相应选择。 Model Name
  3. 微调方法(Finetuning method)

    • 微调方法有以下三种,默认情况下,保持默认值lora。使用LoRA轻量化微调方法能极大程度地节约显存。
      • full:全参微调,将整个模型都进行微调,对显存要求巨大。
      • freeze:冻结微调,将模型的大部分参数冻结,只对部分参数进行微调,可以降低对显存的要求。
      • lora:将模型的部分参数冻结,只对部分参数进行微调,但只在特定的层上进行微调,极大节约显存。
    • 如果您需要使用其他两种微调方法,可以在界面中进行相应选择。 Finetuning Method
  4. 数据集(Dataset)

    • 本教程我们使用内置数据集 alpaca_zh_demo,您也可以使用自己的私有数据集。选择数据集后,可以点击预览数据集查看数据集详情。点击关闭返回模型微调界面。 DatasetDataset Preview
  5. 学习率(Learning rate)

    • 学习率决定了模型在训练过程中的更新步伐。学习率过高,模型学习速度过快,可能会导致模型在训练时不稳定;学习率过低,模型学习缓慢,训练时间长,效率低。可以根据数据集大小和任务复杂度调整学习率。
    • 本教程中设置为1e-4,有利于模型拟合。 Learning Rate
  6. 梯度累积(Gradient accumulation)

    • 梯度累积有助于使用较小的批次下模拟大批次训练。对于显存有限的环境,通过增大累积步数来保证训练效果,实现较大的等效批量。
    • 本教程中梯度累积设置为2,有利于模型拟合。 Gradient Accum
  7. 计算类型(Compute Type)

    • 计算类型有以下四种:
      • fp16:可以显著减少显存占用并加速训练。
      • bf16:提供了更大的动态范围和更好的数值精度,使其在处理大范围数值时更加稳定。
      • fp32:提供足够的精确度,但需要更多的内存和计算资源。
      • pure bf16:在整个模型训练过程中,从输入到输出,所有的计算和存储都使用该格式。
    • 如果显卡为V100,建议计算类型选择fp16;如果为A10,建议选择bf16。
    • 本教程设置为bf16Compute Type
  8. LoRA+ 学习率比例(LoRA+ LR ratio)

    • 点击 LoRA 参数设置,设置LoRA+学习率比例为16,LoRA+被证明是比LoRA学习效果更好的算法。 LoRA Ratio
  9. LoRA 作用模块(LoRA modules)

    • 在LoRA作用模块中填写 all,即将LoRA层挂载到模型的所有线性层上,提高拟合效果。 LoRA Modules

启动微调

配置好参数后,将输出目录修改为 train_wukong,训练后的LoRA权重将会保存在此目录中。 点击预览命令可展示所有已配置的参数,您如果想通过代码运行微调,可以复制这段命令,在命令行运行。 点击开始按钮,LLama Factory 会根据您设置的参数启动模型的微调过程。 Start Fintune

整个过程会显示在界面中,您可以实时查看训练的进度、日志和损失曲线。模型微调大约需要一段时间,待显示训练完毕代表微调成功。 Complete Fintune

模型微调前后对比

微调前

Chat 页签中,单击加载模型,即可在 Web UI 中和微调前的模型进行对话。在页面底部的对话框输入想要和模型对话的内容,单击提交,即可发送消息。发送后从模型生成的回答中可以发现模型无法生成正确的中文回答。 Before Fintune

微调后

单击卸载模型,检查点路径确保选择 train_wukong,单击加载模型,即可在 Web UI中 和微调后的模型进行对话。重新向模型发送相同的内容,发现模型学习到了数据集中的内容,能够恰当地用中文回答问题。 After Fintune Fintune Result

通过上述步骤,新手用户可以利用 LLama Factory 轻松启动模型微调,并根据具体任务调整重要参数,让模型定制化变得更加简单!

在后续实践中,您可以使用实际业务数据集,对模型进行微调,得到能够解决实际业务场景问题的本地领域大模型。

关于 LLaMA Factory 的更多详细信息,请参见 LLaMA Factory