Skip to content

模型训练最佳实践

一、基于Notebook在线构建分布式训练镜像

1、登录超算互联网https://www.scnet.cn个人账号,点击右上角【控制台】。

1.png

2、点击快捷入口中的【Notebook】,进入创建Notebook页面。

2.png

3、选择区域、加速卡型号,选择异构加速卡AI-64GB。

3.png

4、选择开发镜像-【基础镜像】,点击【创建】。

4.png

5、创建成功后,点击【jupyterLab】进入Notebook页面。

5.png

6、进入终端,安装依赖。

6.png

7、拉取项目工程。

shell
git clone http://developer.sourcefind.cn/codes/modelzoo/yolov9\_pytorch.git

注意:/root/private_data 为用户个人目录,建议将项目工程文件,数据集及模型文件等放在该路径下。

8、进入项目文件夹,复制下面的代码,进行依赖安装。

shell
cd yolov9_pytorch
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

7.png

9、验证环境的可用性,运行单机单卡任务,具体命令如下:

shell
python  train_dual.py --sync-bn --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights yolov9-c.pt --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15

8.png

以上截图表示,训练任务正常进行,环境配置完成。

10、保存镜像,返回 notebook 页面,点击右侧按钮,点击【保存镜像】,并修改名称,点击【确认】,开始保存镜像。

9.png

10.png

11.png

11、可以在【我的镜像】模块,查看到已经保存好的镜像,接下来我们将使用这个保存好的镜像,创建多机多卡分布式训练任务。

12.png

二、创建多机多卡分布式训练任务

1、在超算互联网首页点击右上角【控制台】。

13.png

2、点击服务导航中的【人工智能】,进入服务。

14.png

3、选择【模型训练】,点击【创建任务】按钮。

15.png

在此示例中,是选择昆山区域的【异构加速卡AI-64GB】,【每实例加速卡数量】处选择2,【实例数】选择2,代表使用两个容器,每个容器中两张加速卡,点击【我的镜像】,在列表中选择示例镜像jupyterlab-yolov9-pytorch:2.4.1-ubuntu22.04-dtk25.04.1-py3.10-devel

示例启动脚本如下:

shell
cd /root/private_data/xxx/yolov9_pytorch
torchrun \
  --nnodes=$WORLD_SIZE \
  --nproc_per_node=4 \
  --node_rank=$RANK \
  --master_addr=$MASTER_ADDR \
  --master_port=$MASTER_PORT \
  train_dual.py   --sync-bn --batch 128 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights yolov9-c.pt --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 50 --close-mosaic 15

后台默认传入的参数解释:
--nnodes $WORLD_SIZE 分布式训练中参与的总节点数,例如,若提交一个包含2实例的作业,则$WORLD_SIZE设置为2,$WORLD_SIZE为平台自动填充,无需更改
--node_rank $RANK 分布式训练节点的排序,$RANK 为平台自动填充,无需更改
--master_addr $MASTER_ADDR 分布式训练的主节点IP地址,$MASTER_ADDR 为平台自动填充,无需更改
--master_port=$MASTER_PORT 分布式训练的主节点端口号,$MASTER_PORT 为平台自动填充,无需更改

4、随后点击创建(上述所有参数设置完全后,完整截图如下)。

16.png

17.png

至此,多机多卡分布式训练任务创建完毕,接下来就可以运行此任务了。

三、运行多机多卡分布式训练任务

1、创建成功后可以在【模型训练】列表看到我们创建的具体任务(如下图所示,此实例在 "运行中" 状态)。

18.png

2、查看实例详情:点击作业实例名称,在右下角的【实例列表】中,点击【操作】栏的【日志】,可以查看当前模型训练的日志内容。

19.png

由上图可知,此训练示例有2个实例,分别为 'worker0' 和 'worker1'。

3、点击作业实例名称,点击右下角的【监控详情】,可以查看当前模型训练的加速卡利用率、CPU利用率、网络速率等信息。

20.png

21.png

4、上述任务训练完成后,可以在创建的实例列表中看到具体实例处于 "完成" 状态,具体截图如下:

22.png

以上,我们就完成了在 超算平台-模型训练模块 提交多机多卡训练任务的完整流程。