当前位置: 首页 > article >正文

【模型训练】在AutoDL上使用LLamaFactory进行模型训练

前言

在众多的GPU云平台中,AutoDL是我们常用的一个。它因为显卡可快速扩展、实例运行稳定、网络连接速度快,深受大家的喜爱。不过其端口映射略微复杂,所以本篇文章,我们将介绍在AutoDL平台上进行模型训练的过程。

环境准备

1.1 创建实例

通过查看LLamaFactory的官方文档,我们可以得知,LLamaFactory的运行需要依赖以下环境:

必需依赖最低版本推荐版本
python3.83.11
torch1.13.12.4.0
transformers4.41.24.43.4
datasets2.16.02.20.0
accelerate0.30.10.32.0
peft0.11.10.12.0
trl0.8.60.9.6
可选依赖最低版本推荐版本
CUDA11.612.2
deepspeed0.10.00.14.0
bitsandbytes0.39.00.43.1
vllm0.4.30.5.0
flash-attn2.3.02.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. 点击自定义服务

  2. 在弹出的页面中提示中,选择对应操作系统的方法。

1.4.1 Mac用户

Mac用户下使用此方法:

  1. 复制ssh命令

  2. 在MAC的terminal命令行下执行如下命令

ssh -CNg -L 7860:127.0.0.1:7860 root@connect.nmb1.seetacloud.com -p 16035

执行结果:

注意:

  1. 因为LLamaFactory的默认访问端口为7860,所以我们根据需要修改上面的命令行中的端口为7860
  2. 运行ssh命令行后,系统会提示是否继续,输入yes继续。
  1. 复制密码

  2. 输入密码
    在命令行粘贴上一步的代码后回车,回车之后如果没有提示连接中断,始终闪烁光标,那么代表端口监听正常。

如果提示Permission denied, please try again.,代表密码输入错误,请重试。

  1. 浏览器访问llamafactory
    在上一步,我们通过SSH与服务器成功建立了隧道连接,接下来,我们就可以在浏览器中输入如下地址访问。
http://localhost:7860/

注意:
请保持命令行全程后台运行,不要关闭,否则链接会中断。

1.4.2 Windows用户

Windows用户与服务器建立隧道连接的方法不同,需要按照官网提示下载程序。

  1. 下载AutoDL-SSH-Tools

  2. 解压.zip文件后,双击运行AutoDL.exe

  3. 复制SSH和密码,填入工具相应位置

  4. 启动代理

  5. 浏览器中输入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命令时,需要根据需要设置相应映射的端口。

http://www.kler.cn/a/488601.html

相关文章:

  • 易于上手难于精通---关于游戏性的一点思考
  • 【Docker项目实战】使用Docker部署Typemill轻量级平面文件CMS
  • 设计模式 行为型 责任链模式(Chain of Responsibility Pattern)与 常见技术框架应用 解析
  • 详细分析 Git 分支重命名与同步操作
  • 掌握 Node EventEmitter:原理剖析、手写实现与项目代码深度讲解
  • 一块钱的RISC-V 32位芯片
  • 思维转换:突破思维桎梏,创造更高效的工作与生活
  • MPI 在深度学习中的应用与分布式训练优化
  • VS2015 + OpenCV + OnnxRuntime-Cpp + YOLOv8 部署
  • 【Java项目】基于SpringBoot的【校园新闻系统】
  • Java面试题~~
  • c#版本、.net版本、visual studio版本之间的对应关系
  • 【机器视觉】OpenCV 图像基本变换
  • git提交
  • PHP的扩展Imagick的安装
  • 企业级PHP异步RabbitMQ协程版客户端 2.0 正式发布
  • 【JVM-2.1】如何使用JMC监控工具:详细步骤与实战指南
  • 基于Python编程语言的自动化渗透测试工具
  • CoreDNS 概述:云原生 DNS 服务的强大解决方案
  • springboot 加载本地jar到maven
  • Docker Compose etcd 服务
  • iOS 中spring动画的使用
  • 只谈C++11新特性 - std::chrono
  • 【YOLOv8杂草作物目标检测】
  • 添加到 PATH 环境变量中
  • 云商城--基础数据处理和分布式文件存储