模型微调-基于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 官方文档

相关推荐
timer_0176 小时前
Meta 计划在 Llama 4 中引入改进的语音功能,接近双向自然对话
llama
后端小肥肠19 小时前
企业抢着要的AI方案:DeepSeek-R1微调实战,3天构建行业内容生成器
人工智能·llama·deepseek
anda010921 小时前
01-简单几步!在Windows上用llama.cpp运行DeepSeek-R1模型
llama
扫地僧9851 天前
MuMu-LLaMA:通过大型语言模型进行多模态音乐理解和生成(Python代码实现+论文)
人工智能·语言模型·llama
watersink3 天前
Llama-Factory框架下的Meta-Llama-3-8B-Instruct模型微调
llama
凉拌三丝3 天前
Llama Index实战(二):Agent与简单工具的调用
人工智能·llama
神秘的土鸡3 天前
如何在WPS中接入DeepSeek并使用OfficeAI助手(超细!成功版本)
人工智能·机器学习·自然语言处理·数据分析·llama·wps
背太阳的牧羊人4 天前
通过 Groq 后端加载Llama 模型,并调用Function call,也就是通过Groq 后端进行工具的绑定和调用
语言模型·llama·function_call
失眠的树亚4 天前
llama-factory || AutoDL平台 ||启动web界面
llama