说明模型训练涉及到较多的专业知识, 这里以Llama 2的LoRA微调为例给出一版示例。
1. 模型微调简介
由于基础大模型参数量极多, 训练需要的资源量极大, 因此基于基础大模型进行微调的小模型应运而生。 LoRA技术便是其中最主流的一种。
LoRA小模型无法独立使用, 需要在加载完基础大模型后再进行加载, 对基础大模型的能力进行扩展。
已有LoRA模型如何加载可参考文本生成模型使用最佳实践。
(1) 准备训练数据
支持多种格式, 主要分为格式化数据与原始文本数据。
格式化数据以alpaca-chat-format为例, 数据以json方式进行组织, 每条数据分为instruction,input, output三个部分。
原始文本数据直接将文章或对话的原文作为输入, 框架自动进行切分和训练。
下面以普通txt文本文件为例, 介绍后续训练过程。
(2) 上传数据到云主机
windows系统使用命令提示符, macos/linux系统使用终端, 执行scp命令将数据文件上传到云主机的/root/text-generation-webui/training/datasets目录下。
scp [本机文件路径] root@[ip]:/root/text-generation-webui/training/datasets
(3) 训练参数配置
必填: Name,
Text file选择刚才上传的文件。
其他参数的设定需要有足够的背景知识, 这里不做详细介绍, 您可自行学习模型训练时的基本参数。
(4) 启动训练
在启动前保证Model页已经Load过基础模型。
注意Llama 2-7b模型的训练默认fp16精度大约消耗18G显存, 入门款T4显卡机型无法支持, 需要在加载基础模型时选择load-in-8bit以降低内存占用。
点击页面右下方 Start LoRA Training按钮, 下方将会出现提示文字, 等待模型完成训练与保存。
注意1.在此阶段您可能会遇到各类问题导致训练失败, 建议参考大模型学习机服务启停文档中关于打印服务日志的内容。 常见例如: 中文不是utf8编码, 显存不足等。
2.由于huggingface.io网站访问受限, 学习机在启动服务时需要检查是否在启动脚本run.sh里写入了export HF_HUB_OFFLINE=1, 否则在训练启动和结束时都会自动访问huggingface网站导致超时失败。
3.完成训练后的基础模型已经被训练影响, 需要重新reload一次基础模型以恢复初始状态。
(5) 加载微调过的模型
完成训练后, LoRA小模型会被保存到/root/text-generation-webui/loras目录下。
回到Model页, 右侧LoRA标签下选择刚才训练出的模型并点击Apply LoRAs按钮, 在基础大模型之上加载LoRA小模型。
本次示例我们采用了西游记原文的前100行作为训练数据, 在不加载LoRA小模型前, 生成效果以英文为主。
加载我们训练的LoRA小模型后, 生成内容风格贴合西游记原文。