模型微调-基于LLaMA-Factory进行微调的一个简单案例

模型微调-基于LLaMA-Factory进行微调的一个简单案例

  • [1. 租用云计算资源](#1. 租用云计算资源)
  • [2. 拉取 LLaMa-Factory](#2. 拉取 LLaMa-Factory)
  • [3. 安装依赖环境](#3. 安装依赖环境)
  • [4. 启动 LLaMa-Factory 界面](#4. 启动 LLaMa-Factory 界面)
  • [5. 从 Huggingface 下载模型](#5. 从 Huggingface 下载模型)
  • [6. 模型验证](#6. 模型验证)
  • [7. 模型微调](#7. 模型微调)

1. 租用云计算资源

以下示例基于 AutoDL 云计算资源。

在云计算平台选择可用的云计算资源实例,如果有4090实例可用,推荐选择4090实例。同时注意镜像的选择,所以镜像会包含特定的环境,省去一些基础环境的安装步骤,不过这里镜像在实例启动之后也可以进行切换。

创建实例之后,通过SSH连接远程服务器

这里我使用 VS Code的 Remote-SSH 插件进行连接,连接进去之后可以看到实例中有两个盘,其中/root/autodl-tmp是数据盘,推荐运行环境、模型文件都放在数据盘,避免后续因为实例关机回收导致数据文件丢失。

2. 拉取 LLaMa-Factory

LLaMa-Factory 的 git 地址如下,通过 git 命令拉取

bash 复制代码
git clone https://github.com/hiyouga/LLaMA-Factory.git

3. 安装依赖环境

LLaMa-Factory 依赖 Python 特定版本,这里使用 Conda 来进行 Python 虚拟环境管理,大语言模型相关的框架对运行环境的依赖比较严重,推荐通过虚拟环境进行隔离。

而在创建虚拟环境之前,推荐设置一下 Conda 虚拟环境和 Python 包的保存路径,还是那个原因,避免因为云计算资源回收导致数据丢失。

bash 复制代码
mkdir -p /root/autodl-tmp/conda/pkgs
conda config --add pkgs_dirs /root/autodl-tmp/conda/pkgs
mkdir -p /root/autodl-tmp/conda/envs
conda config --add envs_dirs /root/autodl-tmp/conda/envs/

之后创建虚拟环境:

bash 复制代码
conda create -n llama-factory python=3.10

虚拟环境创建完成之后,通过以下命令初始化以下Conda,并刷新一下命令行环境变量,再激活环境:

bash 复制代码
conda init
source ~/.bashrc
conda activate llama-factory

之后进入 LLaMa-Factory 文件夹,通过以下命令进行 LLaMa-Factory 相关依赖包的安装

bash 复制代码
pip install -e ".[torch,metrics]"

安装完成之后,通过以下命令测试一下 LLaMa-Factory 是否正常安装:

bash 复制代码
llamafactory-cli version

4. 启动 LLaMa-Factory 界面

通过以下命令启动 LLaMa-Factory 可视化微调界面:

bash 复制代码
llamafactory-cli webui

通过 VS Code 中的 Remote-SSH 插件连接云服务器的情况,启动可视化界面之后,Remote-SSH 会自动进行端口转发,从而自动在本地浏览器打开相应的页面。如果是其他工具的话,可能需要在云平台配置一下相应的端口,之后通过云平台暴漏出来的域名打开。

5. 从 Huggingface 下载模型

首先创建一个文件夹用于存放模型文件:

bash 复制代码
mkdir hugging-face

增加环境变量,修改 HuggingFace 镜像源为国内镜像网站:

bash 复制代码
export HF_ENDPOINT=https://hf-mirror.com

修改模型默认存储路径:

bash 复制代码
export HF_HOME=/root/autodl-tmp/hugging-face

之后还是切换到 llama-factory 虚拟环境,安装 HuggingFace官方下载工具:

bash 复制代码
pip install -U huggingface_hub

安装完成之后,通过以下命令下载模型:

bash 复制代码
huggingface-cli download --resume-download Qwen/Qwen2.5-0.5B-Instruct

这里为了下载和后面的微调演示快点就下载0.5B的模型了,具体的模型大家可以根据实际情况去选择自己需要的模型,在huggingface上搜索模型名称,之后进入模型主页,复制名称即可:

模型文件都比较大,在线下载的话需要等待一段时间,下载完成之后,可以看到模型文件就在 hugging-face 文件夹下了。

在线下载比较占用时间,而云服务器开机每一分钟都需要花钱,你可以在本地下载模型文件之后传到云服务器上。这时候可以通过 AutoDL 提供的 Jupyter 工具进行文件上传,或者通过其他带有SFTP功能的工具连接云服务器上传。


6. 模型验证

下载完成模型之后,我们需要验证模型文件是否可以正常加载、运行,可以通过 LLaMa-Factory 的可视乎界面加载运行模型:

需要注意的是,加载本地模型的时候,需要修改填写模型本地路径,这里的路径是模型快照的唯一哈希值,而不是模型文件夹的路径。

之后就可通过和模型进行对话,测试下载下来的模型是否正常了,也可以看下对话中模型输出的风格,和我们微调之后的做下对比。

7. 模型微调

接下来就可以通过 LLaMa-Factory 进行微调了,这里先做一个简单的演示,为了不让这篇文章篇幅过长,先不具体讲解各种微调参数的含义和作用,数据集也只使用 LLaMa-Factory 自带的示例数据集,演示一下对模型认知设定的微调。

修改一下默认的 identity.json 数据集,将其中的{{name}}、{{author}}替换为我们自己的设定,并保存文件。

之后在 LLaMa-Factory Web界面中加载预览数据集,并且稍微调整一下超参,主要是学习率先保存不变,主要是训练轮次,以及验证集比例。


后续如果需要使用我们自定义的数据集的话,也只要将数据集文件放到 LLaMa-Factory 的 data 文件夹,再在 dataset_info.json 中进行配置,就可以在 Web 界面进行加载使用。这里就先不细说了。

之后点击开始,可以看到微调任务的执行进度,以及损失函数的变化情况。

0.5B 的模型,再加上数据集数据量不多,只有不到100条,所以微调过程还是很快的,可以看到最终的损失函数降到了 0.5 左右。不过这是因为训练数据太少,而且一些超参设置比较不合理,才有这样的较低损失函数,实际微调用于生产环境的模型时,要注意防止过拟合的情况。

之后,还是用 LLaMa-Factory 加载微调之后的模型文件进行测试,这里通过检查点路径添加刚刚训练完成的模型文件:

之后就可以和我们微调之后的模型进行对话了

可以看到,微调之后的模型已经学习了数据集中的信息,可以按照我们预设的人设回答问题。

参考文档:
LLama-Factory 官方文档

相关推荐
try2find1 天前
安装llama-cpp-python踩坑记
开发语言·python·llama
西西弗Sisyphus1 天前
LLaMA-Factory 单卡后训练微调Qwen3完整脚本
微调·llama·llama-factory·后训练
顾道长生'2 天前
(Arxiv-2024)自回归模型优于扩散:Llama用于可扩展的图像生成
计算机视觉·数据挖掘·llama·自回归模型·多模态生成与理解
Zhijun.li@Studio11 天前
【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程
人工智能·自然语言处理·llama·多模态大模型
1213412 天前
LLM:重构数字世界的“智能操作系统”
gpt·aigc·ai编程·llama·gpu算力
冷雨夜中漫步20 天前
Java中如何使用lambda表达式分类groupby
java·开发语言·windows·llama
扫地的小何尚21 天前
全新NVIDIA Llama Nemotron Nano视觉语言模型在OCR基准测试中准确率夺冠
c++·人工智能·语言模型·机器人·ocr·llama·gpu
CFAteam21 天前
DeepSeek AI功能演示:如何生成Verilog脚本
人工智能·ai·fpga开发·llama
Tadas-Gao24 天前
从碳基羊驼到硅基LLaMA:开源大模型家族的生物隐喻与技术进化全景
人工智能·机器学习·大模型·llm·llama
Run_Clover24 天前
llama-factory微调大模型环境配置避坑总结
llama