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


参考资料:

相关推荐
天远Date Lab2 小时前
零信任架构实战:基于天远租凭分期报告构建自动化汽车以租代购免押风控网关
网络·人工智能·架构·自动化
翊众建站2 小时前
用 JSON-LD 给企业官网做结构化数据:LocalBusiness 与 FAQPage 实践笔记
人工智能·搜索引擎·json
梦想不只是梦与想3 小时前
PyTorch、CPU、GPU、CUDA
人工智能·pytorch·python·深度学习·机器学习·cuda
数字融合3 小时前
透明化视频孪生危化安全管控解决方案
人工智能·python·安全
冬奇Lab3 小时前
一天一个开源项目(第253篇):dsh-superagent —— DeepSeek 开源的“主动式”编程智能体原型,核心原则是少占人的注意力
人工智能·开源·资讯
罗西的思考3 小时前
【轻量化复刻大模型 / KIMI K3】KDA 模块交互式演示
人工智能·算法·机器学习
拓恒技术3 小时前
从“可见光漏检”到“热异常锁定”:无人机河道排污口识别与溯源的技术链路
人工智能·视觉检测·无人机
2601_968900773 小时前
按量计费接口实战:从接入、预算到对账的完整链路
人工智能
七牛云行业应用3 小时前
MIT “权重空间编程”:GPT-6 Astra 修改 0.016% 的 Qwen 权重,MATH-500 从 7.9% 升至 48.1%
人工智能·gpt·ai
故七月4 小时前
AI 答案里的竞品共现:怎么看出赛道格局
大数据·人工智能