本地部署 LLaMA-Factory

本地部署 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分数和人工测试验证了微调的效果。在后续实践中,可以使用实际业务数据集,对模型进行微调,得到能够解决实际业务场景问题的本地领域大模型。


参考资料:

相关推荐
CM莫问44 分钟前
tokenizer、tokenizer.encode、tokenizer.encode_plus比较
人工智能·python·深度学习·语言模型·大模型·tokenizer·文本表示
nn_303 小时前
利用 deepin-IDE 的 AI 能力,我实现了文件加密扩展
ide·人工智能
沐雨风栉3 小时前
Windows电脑部署SD 3.5结合内网穿透随时随地生成高质量AI图像
人工智能·电脑
mazhafener1233 小时前
5G/4G工业边缘网关 边缘计算 硬核配置强算力
人工智能·5g·边缘计算
百家方案4 小时前
「下载」京东数科-数字孪生智慧园区解决方案:打通园区数据、融合园区业务、集成园区服务、共建园区生态,实现真实与数字孪生园区
人工智能·云计算·智慧园区·数智化园区
MUTA️4 小时前
专业版pycharm与服务器连接
人工智能·python·深度学习·计算机视觉·pycharm
m0_748240445 小时前
《通义千问AI落地—中》:前端实现
前端·人工智能·状态模式
cooldream20095 小时前
RDFS—RDF模型属性扩展解析
人工智能·知识图谱·知识表示
MinIO官方账号6 小时前
使用亚马逊针对 PyTorch 和 MinIO 的 S3 连接器实现可迭代式数据集
人工智能·pytorch·python
四口鲸鱼爱吃盐6 小时前
Pytorch | 利用IE-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击
人工智能·pytorch·python·深度学习·计算机视觉