如何使用 LLaMA Factory 进行模型微调
LLaMA Factory 是一个高效的模型微调框架,帮助用户快速微调大型语言模型(LLMs)。对于新手用户,本文将介绍如何准备数据集并使用 LLaMA Factory Web UI界面零代码微调模型的重要训练参数,帮助您启动第一个模型的微调。
数据集准备
首先,我们可以从传神社区找到一个 LlaMA Factory 支持的模型,本教程将基于 OpenCSG 算法团队自研的预训练模型 “csg-wukong-1B”,使用LLaMA Factory 训练框架来进行微调。
进入模型页面,点击 微调实例
跳转至创建页面,完成实例创建并等待实例启动后,即可以开始进行模型微调。
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 中,您可以通过用户界面轻松调整各项参数。以下是一些重要的参数及其调整建议,在本教程中未提及到的参数保持默认值。您可以根据实际业务需要对相应参数进行调整。
语言(Lang):
- 默认情况下,使用英文(en)界面,您可以切换为中文(zh)。
模型名称(Model name):
- 默认情况下,Web UI 会加载您提供的模型,本教程中使用的是
csg-wukong-1B
。 - 如果您需要使用不同的模型,可以在界面中进行相应选择。
- 默认情况下,Web UI 会加载您提供的模型,本教程中使用的是
微调方法(Finetuning method):
- 微调方法有以下三种,默认情况下,保持默认值lora。使用LoRA轻量化微调方法能极大程度地节约显存。
- full:全参微调,将整个模型都进行微调,对显存要求巨大。
- freeze:冻结微调,将模型的大部分参数冻结,只对部分参数进行微调,可以降低对显存的要求。
- lora:将模型的部分参数冻结,只对部分参数进行微调,但只在特定的层上进行微调,极大节约显存。
- 如果您需要使用其他两种微调方法,可以在界面中进行相应选择。
- 微调方法有以下三种,默认情况下,保持默认值lora。使用LoRA轻量化微调方法能极大程度地节约显存。
数据集(Dataset):
- 本教程我们使用内置数据集
alpaca_zh_demo
,您也可以使用自己的私有数据集。选择数据集后,可以点击预览数据集查看数据集详情。点击关闭返回模型微调界面。
- 本教程我们使用内置数据集
学习率(Learning rate):
- 学习率决定了模型在训练过程中的更新步伐。学习率过高,模型学习速度过快,可能会导致模型在训练时不稳定;学习率过低,模型学习缓慢,训练时间长,效率低。可以根据数据集大小和任务复杂度调整学习率。
- 本教程中设置为1e-4,有利于模型拟合。
梯度累积(Gradient accumulation):
- 梯度累积有助于使用较小的批次下模拟大批次训练。对于显存有限的环境,通过增大累积步数来保证训练效果,实现较大的等效批量。
- 本教程中梯度累积设置为2,有利于模型拟合。
计算类型(Compute Type):
- 计算类型有以下四种:
- fp16:可以显著减少显存占用并加速训练。
- bf16:提供了更大的动态范围和更好的数值精度,使其在处理大范围数值时更加稳定。
- fp32:提供足够的精确度,但需要更多的内存和计算资源。
- pure bf16:在整个模型训练过程中,从输入到输出,所有的计算和存储都使用该格式。
- 如果显卡为V100,建议计算类型选择fp16;如果为A10,建议选择bf16。
- 本教程设置为bf16。
- 计算类型有以下四种:
LoRA+ 学习率比例(LoRA+ LR ratio):
- 点击
LoRA 参数设置
,设置LoRA+学习率比例为16,LoRA+被证明是比LoRA学习效果更好的算法。
- 点击
LoRA 作用模块(LoRA modules):
- 在LoRA作用模块中填写 all,即将LoRA层挂载到模型的所有线性层上,提高拟合效果。
启动微调
配置好参数后,将输出目录修改为 train_wukong
,训练后的LoRA权重将会保存在此目录中。
点击预览命令可展示所有已配置的参数,您如果想通过代码运行微调,可以复制这段命令,在命令行运行。
点击开始按钮,LLama Factory 会根据您设置的参数启动模型的微调过程。
整个过程会显示在界面中,您可以实时查看训练的进度、日志和损失曲线。模型微调大约需要一段时间,待显示训练完毕代表微调成功。
模型微调前后对比
微调前
在 Chat
页签中,单击加载模型,即可在 Web UI 中和微调前的模型进行对话。在页面底部的对话框输入想要和模型对话的内容,单击提交,即可发送消息。发送后从模型生成的回答中可以发现模型无法生成正确的中文回答。
微调后
单击卸载模型,检查点路径确保选择 train_wukong
,单击加载模型,即可在 Web UI中 和微调后的模型进行对话。重新向模型发送相同的内容,发现模型学习到了数据集中的内容,能够恰当地用中文回答问题。
通过上述步骤,新手用户可以利用 LLama Factory 轻松启动模型微调,并根据具体任务调整重要参数,让模型定制化变得更加简单!
在后续实践中,您可以使用实际业务数据集,对模型进行微调,得到能够解决实际业务场景问题的本地领域大模型。
关于 LLaMA Factory 的更多详细信息,请参见 LLaMA Factory。