本地部署 LLaMA-Factory
- [1. 本地部署 LLaMA-Factory](#1. 本地部署 LLaMA-Factory)
- [2. 下载模型](#2. 下载模型)
- [3. 微调模型](#3. 微调模型)
-
- [3-1. 下载数据集](#3-1. 下载数据集)
- [3-2. 配置参数](#3-2. 配置参数)
- [3-3. 启动微调](#3-3. 启动微调)
- [3-4. 模型评估](#3-4. 模型评估)
- [3-5. 模型对话](#3-5. 模型对话)
-
- [3-6. 导出模型](#3-6. 导出模型)
- [3-7. 使用 vllm 推理](#3-7. 使用 vllm 推理)
1. 本地部署 LLaMA-Factory
下载代码,
git clone https://github.com/hiyouga/LLaMA-Factory.git
cd LLaMA-Factory
创建虚拟环境,
conda create -n llama_factory python=3.11 -y
conda activate llama_factory
安装 LLaMA-Factory,
pip install -e '.[torch,metrics]'
验证,
import torch
torch.cuda.current_device()
torch.cuda.get_device_name(0)
torch.__version__
print(torch.cuda.is_available())
我机器的输入如下,
2. 下载模型
安装 huggingface_hub,
pip install "huggingface_hub[hf_transfer]"
下载 Qwen/Qwen2.5-7B-Instruct
,
HF_HUB_ENABLE_HF_TRANSFER=1 huggingface-cli download Qwen/Qwen2.5-7B-Instruct
3. 微调模型
3-1. 下载数据集
LLaMA-Factory项目内置了丰富的数据集,放在了data目录下。您可以跳过本步骤,直接使用内置数据集。您也可以准备自定义数据集,将数据处理为框架特定的格式,放在data下,并且修改dataset_info.json文件。
本教程准备了一份多轮对话数据集,运行下述命令下载数据。
mkdir workspace; cd workspace
wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama_factory/data.zip
unzip data.zip
3-2. 配置参数
启动 webui,然后,打开浏览器,访问 http://localhost:7860,进入WebUI后,可以切换到中文(zh)。
llamafactory-cli webui
首先配置模型,本教程选择LLaMA3-8B-Chat模型,微调方法则保持默认值lora,使用LoRA轻量化微调方法能极大程度地节约显存。
设置学习率为1e-4,梯度累积为2,有利于模型拟合。
点击LoRA参数设置展开参数列表,设置LoRA+学习率比例为16,LoRA+被证明是比LoRA学习效果更好的算法。在LoRA作用模块中填写all,即将LoRA层挂载到模型的所有线性层上,提高拟合效果。
3-3. 启动微调
将输出目录修改为train_qwen2.5,训练后的LoRA权重将会保存在此目录中。点击「预览命令」可展示所有已配置的参数,您如果想通过代码运行微调,可以复制这段命令,在命令行运行。
点击「开始」启动模型微调。
3-4. 模型评估
微调完成后,点击检查点路径,即可弹出刚刚训练完成的LoRA权重,点击选择下拉列表中的train_qwen2.5选项,在模型启动时即可加载微调结果。
选择「Evaluate&Predict」栏,在数据集下拉列表中选择「eval」(验证集)评估模型。更改输出目录为eval_llama3,模型评估结果将会保存在该目录中。最后点击开始按钮启动模型评估。
模型评估大约需要5分钟左右,评估完成后会在界面上显示验证集的分数。其中ROUGE分数衡量了模型输出答案(predict)和验证集中标准答案(label)的相似度,ROUGE分数越高代表模型学习得更好。
3-5. 模型对话
选择「Chat」栏,确保适配器路径是train_qwen2.5,点击「加载模型」即可在Web UI中和微调模型进行对话。
点击「卸载模型」,点击"×"号取消检查点路径,再次点击「加载模型」,即可与微调前的原始模型聊天。
3-6. 导出模型
选择「Export」栏,确保适配器路径是train_qwen2.5,设置导出目录,单击 "开始导出" 就可以导出模型了。
3-7. 使用 vllm 推理
运行下面命令,就可以通过vllm将微调后的模型一 OpenAI 兼容 API 的方式对外公开服务了。
VLLM_WORKER_MULTIPROC_METHOD=spawn vllm serve /root/HuggingFaceCache/models--Qwen--Qwen2.5-7B-SFT-Instruct --trust-remote-code --served-model-name gpt-4 --gpu-memory-utilization 0.98 --tensor-parallel-size 4 --port 8000 --api-key sk-123456 --max-model-len 32768
本次教程介绍了如何使用PAI和LLaMA Factory框架,基于轻量化LoRA方法微调Qwen2.5模型,使其能够进行中文问答和角色扮演,同时通过验证集ROUGE分数和人工测试验证了微调的效果。在后续实践中,可以使用实际业务数据集,对模型进行微调,得到能够解决实际业务场景问题的本地领域大模型。
参考资料: