【模型训练】在AutoDL上使用LLamaFactory进行模型训练
前言
在众多的GPU云平台中,AutoDL是我们常用的一个。它因为显卡可快速扩展、实例运行稳定、网络连接速度快,深受大家的喜爱。不过其端口映射略微复杂,所以本篇文章,我们将介绍在AutoDL平台上进行模型训练的过程。
环境准备
1.1 创建实例
通过查看LLamaFactory的官方文档,我们可以得知,LLamaFactory的运行需要依赖以下环境:
必需依赖 | 最低版本 | 推荐版本 |
---|---|---|
python | 3.8 | 3.11 |
torch | 1.13.1 | 2.4.0 |
transformers | 4.41.2 | 4.43.4 |
datasets | 2.16.0 | 2.20.0 |
accelerate | 0.30.1 | 0.32.0 |
peft | 0.11.1 | 0.12.0 |
trl | 0.8.6 | 0.9.6 |
可选依赖 | 最低版本 | 推荐版本 |
---|---|---|
CUDA | 11.6 | 12.2 |
deepspeed | 0.10.0 | 0.14.0 |
bitsandbytes | 0.39.0 | 0.43.1 |
vllm | 0.4.3 | 0.5.0 |
flash-attn | 2.3.0 | 2.6.3 |
根据以上的依赖环境版本,我们在AutoDL上选择较为稳定的Pytorch2.3.0+Python3.12+CUDA12.1
。
1.2 (可选)无卡模式运行
- AutoDL实例创建成功之后,默认是带着显卡启动运行的,此时的费用是2元/小时。
- 因为我们前期进行环境部署以及拉取数据,暂时不涉及训练部分,也就用不到GPU。
- 这种情况下,我们可以将实例关闭之后以无卡模式运行。
注意:
当后续开启训练时,不要忘了切换回有显卡模式运行。
1.2 下载LLamaFactory
# 拉取LLamaFactory
git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
# 进入LLamaFactory目录
cd LLaMA-Factory
# 安装依赖
pip install -e ".[torch,metrics]"
1.3 启动LLamaFactory
llamafactory-cli webui
运行结果:
1.4 端口映射
因为LLamaFactory的默认访问端口为7860
,所以我们需要进行端口映射才可以访问。
注意:
- 在ModelScope中,我们是通过
export GRADIO_SERVER_PORT=7860 GRADIO_ROOT_PATH=/${JUPYTER_NAME}/proxy/7860/
命令设置环境变量来实现的。- 以上方法不可行在AutoDL中不可行。
AutoDL官方提供方法是使用SSH隧道来实现。
具体方法:
-
点击自定义服务
-
在弹出的页面中提示中,选择对应操作系统的方法。
1.4.1 Mac用户
Mac用户下使用此方法:
-
复制ssh命令
-
在MAC的terminal命令行下执行如下命令
ssh -CNg -L 7860:127.0.0.1:7860 root@connect.nmb1.seetacloud.com -p 16035
执行结果:
注意:
- 因为LLamaFactory的默认访问端口为
7860
,所以我们根据需要修改上面的命令行中的端口为7860
。- 运行ssh命令行后,系统会提示是否继续,输入
yes
继续。
-
复制密码
-
输入密码
在命令行粘贴上一步的代码后回车,回车之后如果没有提示连接中断,始终闪烁光标,那么代表端口监听正常。
如果提示
Permission denied, please try again.
,代表密码输入错误,请重试。
- 浏览器访问llamafactory
在上一步,我们通过SSH与服务器成功建立了隧道连接,接下来,我们就可以在浏览器中输入如下地址访问。
http://localhost:7860/
注意:
请保持命令行全程后台运行,不要关闭,否则链接会中断。
1.4.2 Windows用户
Windows用户与服务器建立隧道连接的方法不同,需要按照官网提示下载程序。
-
下载AutoDL-SSH-Tools
-
解压.zip文件后,双击运行
AutoDL.exe
-
复制SSH和密码,填入工具相应位置
-
启动代理
-
浏览器中输入
http://localhost:7860/
后,访问llamafactory
模型训练
1. 数据准备
此处复用【课程总结】day24(上):大模型三阶段训练方法(LLaMa Factory)中的数据。
1.1 下载数据
git clone https://www.modelscope.cn/datasets/xiaofengalg/Chinese-medical-dialogue.git
1.2 注册自定义数据
在LLamaFactory的dataset_info.json
中添加如下数据集:
"custom_sft_train_data": {
"file_name": "/root/Chinese-medical-dialogue/data/data/train_0001_of_0001.json",
"columns": {
"prompt": "instruction",
"query": "input",
"response": "output"
}
},
注意:
以上file_name是数据集的绝对路径,需要根据实际情况修改。
2. 模型准备
git clone https://www.modelscope.cn/qwen/Qwen2-0.5B.git
3. 模型训练
后续内容与【课程总结】day24(上):大模型三阶段训练方法(LLaMa Factory)一致,此处不再赘述。
总结
- 在AutoDL上使用LLamaFactory进行模型训练,需要进行端口映射,具体方法为使用SSH隧道。
- 建立SSH隧道在Mac和Windows下不同,Mac直接使用命令行运行ssh命令,Window下需要下载客户端程序运行。
- 运行SSH命令时,需要根据需要设置相应映射的端口。