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


参考资料:

相关推荐
得一录3 小时前
大模型需要量化的原因
人工智能
weixin_417197053 小时前
四大科技巨头狂砸7250亿美元:AI算力军备竞赛白热化
人工智能·科技
sali-tec4 小时前
C# 基于OpenCv的视觉工作流-章61-点线距离
图像处理·人工智能·opencv·计算机视觉
人工智能AI技术4 小时前
闭环执行基础:思考→行动→观察→反思完整链路
人工智能
罗西的思考4 小时前
【GUI-Agent】阿里通义MAI-UI 代码阅读(1)— 总体
人工智能·机器学习·ui·transformer
蝎子莱莱爱打怪4 小时前
用好CC,事半功倍!Claude Code 命令大全,黄金命令推荐、多模型配置、实践指南、Hooks 和踩坑记录大全
前端·人工智能·后端
Raink老师4 小时前
【AI面试临阵磨枪-37】如何评估 Agent 效果:成功率、工具准确率、推理步数、延迟、成本?
人工智能·ai 面试
配奇4 小时前
RNN及其变体
人工智能·rnn·深度学习
xixixi777774 小时前
深度解读:网信办“清朗·整治AI应用乱象”专项行动,AI产业告别野蛮生长,全面迈入合规治理深水区
人工智能·安全·ai·大模型·合规·深度伪造·网信办