一、模型训练的构成
1. 本地搭建一个模型训练环境,都需要些什么?
2. 环境准备的痛点
成本问题
- 购买高性能显卡,成本高且利用率不高
维护问题
- 硬件机器、软件环境构建和维护都会花费不少时间成本
容量问题
- 对于大模型,受限于显卡容量
二、本地化问题及解决方案
痛点解决方案:
- 使用GPU云环境
优点:
-
成本低
- 通过租用GPU云环境,可以做到按使用量付费,不使用就关闭环境,避免购买机器费用和折旧费
-
维护简单
- GPU云环境一般都预制了适用于训练的环境
- 例如:Ubuntu、Python、 Pytorch、CUDA等,用户只需关注自己任务的训练
-
灵活度高
- 对显存要求高的场景,可以灵活扩展GPU显存,以满足需求
三、GPU云环境的使用方法
GPU云方案对比
通用流程:
1. 登录服务
2. 检查环境
3. 准备训练框架
4. 准备训练数据
5. 准备训练脚本
6. 训练
阿里云使用方法
注册账号
- 访问 ModelScope , 按照提示,完成魔搭社区账号的注册。
- 访问 阿里云, 按照提示,完成阿里云账号的注册。
- 在魔搭社区绑定阿里云,可以获得一些免费GPU算力。
使用方法
1. 登录服务
登录魔搭社区,切换至我的Notebook→选择PAI-DSW服务→GPU环境→启动。
2. 检查环境
- 因为GPU云服务器已经预装了ubuntu、Python、PyTorch等,所以我们只需要简单检查一下环境即可。
- 由于咱们要使用YOLO,所以打开YOLO官网,查看它建议的python版本,3.8-3.12都是可以的。
- 打开Terminal,输入以下命令来检查python版本、cuda版本,确保满足模型训练所需的环境。
# 检查python版本
python --version
# 检查cuda版本
nvcc --version
3. 准备训练框架
以YOLO为例,进行训练框架的准备工作。
按照官网推荐的pip install方式进行安装
# Install the ultralytics package from PyPI
pip install ultralytics
安装完毕
新建一个notebook,文件命名为:【VerifyInstallation.ipynb】,验证YOLO是否安装成功
from ultralytics import YOLO
import ultralytics
print(ultralytics.__version__)
运行
4. 准备训练数据
上传数据
文件上传完毕后,使用unzip命令解压训练数据
unzip dataset.zip
5. 准备训练脚本
新建notebook后,准备训练脚本并配置训练数据data的目录;
data对应训练数据的保存路径,可以通过 pwd
命令查看。
from ultralytics import YOLO
# Create a new YOLO model from scratch
model = YOLO("yolo11n.yaml")
# Load a pretrained YOLO model (recommended for training)
model = YOLO("yolo11n.pt")
# Train the model using the 'coco8.yaml' dataset for 3 epochs
results = model.train(data="coco8.yaml", epochs=3)
# Evaluate the model's performance on the validation set
results = model.val()
# Perform object detection on an image using the model
results = model("https://ultralytics.com/images/bus.jpg")
# Export the model to ONNX format
success = model.export(format="onnx")
6. 开始训练
配置相应的训练参数后,运行训练代码,即可开始训练。
- epochs: 训练轮数
- imgsz: 图像尺寸
- batch: 批次大小
注意:batch的大小设置与显存占用有关,如果设置太大的话,意味着一个批次数据量过多,显存容纳不下可能会异常;如果设置太小,意味着显存的利用率不够。
7. 完成训练
训练完毕后,会在训练脚本同一目录下生成runs目录,里面包含训练的日志,以及训练的模型。
驱动云使用方法
注册账号
- 访问 https://www.virtaicloud.com/, 完成账号注册。
使用方法
1. 登录服务
- 登录账号后,点击右上角的创建项目
- 创建项目后,选择相应的机器配置以及镜像环境
- 确认之后,点击立即启动。待右上角出现【
进入开发环境
】按钮,点击即可进入
2. 检查环境
- 驱动云提供了2种开发环境,【JupyterLab】和【网页终端】。咱们这里使用JupyterLab。
- 然后打开Terminal,这里检查环境可以省略,因为前面新建项目的时候已经选择了环境配置。
3. 准备训练框架
在趋动云平台上,由于数据存储大小限制,我们需要根据实际的场景选择不同的处理方式。
小体积情况
- 对于体积小的框架(如:YOLO只有56M),可使用pip命令安装,具体方法同阿里云操作说明。
- 优点是不涉及繁琐的上传流程,但环境持久化保存(即环境下次打开可直接使用)有次数限制。
- 环境持久化保存的方式:在关闭环境时,选择保存环境→临时环境。
大体积情况
- 对于大模型(如:Qwen模型)动辄10G以上存储空间的情况,需使用趋动云提供的sftp上传方式来进行。
4. 准备训练数据
同上,对于体积小的数据,可以直接使用图示中的上传文件功能。对于体积大的情况,需要使用趋动云提供的sftp上传上传方式。
上传数据集:点击【修改】-【创建数据】,编辑完信息,点【创建】,然后上传文件。
上传成功后,在线解压,方便操作。
接着,我们演示SFTP上传的方式。
- 第一步:安装上传软件Xftp
- https://www.xshell.com/zh/free-for-home-school/
- 第二步:停止并销毁趋动云环境
- 第三步:创建数据
- 第四步:开启SFTP传输
- 第五步:填写连接信息后开始连接
- 第六步:上传数据
- 第七步:上传完毕后,在趋动云页面中关闭传输通道并进行确定操作
- 第八步:修改项目中的数据选项,重新启动开发环境即可
- 第九步:按照官方提示,切换到
/gemini/data-1
目录,即可查看到上传的数据。
5. 准备训练脚本
新建notebook后,配置对应目录的数据路径
from ultralytics import YOLO
# 1,构建模型
model = YOLO("yolov8n-cls.yaml")
if __name__ == "__main__":
# 2,训练模型
results = model.train(data="/gemini/data-1/data/data.yaml",
epochs=100,
imgsz=128,
batch=8
)
6. 开始训练
配置相应的训练参数后,运行训练代码,即可开始训练。
7. 完成训练
训练完毕后,在notebooke同目录下会生成runs目录。
如果希望把训练结果下载到本地,可以切换到Terminal,使用zip命令打包后下载。
# 基本语法:zip [选项] [打包后的文件名] [要打包的文件或目录列表]
zip -r train.zip train
注意事项
- /gemini/code目录是可以读写的,但是/gemini/data等其他目录只能读,不能写。
- /gemini/code目录的数据,在销毁环境后是可以保留的,但是不建议在云端保存。
- 如果
关闭环境
时没有选择保存临时环境
,那么安装过的依赖会重置,在下次启动时需要重新安装。
四、常见问答
Q1:云环境重新启动后,运行YOLO的代码,提示
No module named 'ultralytics'
,请问是什么原因?A:云环境重启之后,一般会重置环境,导致之前安装的依赖不存在了。
解决办法:
1. 可以通过`pip list`命令进一步排查是否有ultralytics。
2. 如果没有ultralytics,则重新使用pip命令安装即可。
Q2:在趋动云环境里,我上传的数据会不会在关闭云服务器后丢失?
A:趋动云环境中,/gemini/code目录是可以保留数据的,即服务关闭再打开,该目录下的数据是保留上次的。 不过,建议重要的数据、代码在本地维护保存,云环境只作为临时环境训练模型使用。
Q3:在阿里云环境里,我上传的数据会不会在关闭云服务器后丢失?
A:阿里云环境的/mnt/workspace/目录,经测试数据会进行保留。不过,还是建议重要数据、代码在本地维护保存。