提交一个Pytorch DDP分布式任务 | 大装置帮助中心
跳到主要内容

提交一个Pytorch DDP分布式任务

对于Pytorch DDP分布式任务,平台会创建两种角色的副本:Master和Worker,其中Master为Worker提供了可以访问的Master IP地址、Master 服务端口,并自动将 PyTorch 分布式任务所需的关键信息(包括全局进程总数、每个Pod的进程 ID、每个节点上运行的进程数和节点数量)输出到环境变量中。

用户在运行Pytorch分布式训练任务时,可以在训练脚本中直接使用如下环境变量。

torchrun 命令参数商汤环境变量描述
master_addr$MASTER_ADDR主节点(Master)的IP地址或主机名
master_port$MASTER_PORT所有worker进行通信协商的端口号,默认23456
node_rank$RANK(旧版命名)节点的Index。例如,提交一个2副本任务,Master-0和Worker-0对应的SENSECORE_PYTORCH_NODE_RANK分别为0,1
$SENSECORE_PYTORCH_NODE_RANK(新规范命名)
world_size$WORLD_SIZE*$SENSECORE_ACCELERATE_DEVICE_COUNT全局进程总数,即 节点的数量*每个节点上运行的进程数
$SENSECORE_PYTORCH_NNODES*$SENSECORE_ACCELERATE_DEVICE_COUNT
nproc_per_node$SENSECORE_ACCELERATE_DEVICE_COUNT每个Worker节点的GPU卡数。例如,该Worker节点申请为8卡,则SENSECORE_ACCELERATE_DEVICE_COUNT为8
nnodes$WORLD_SIZE(旧版命名)训练的节点总数。例如,提交一个2副本训练任务,则SENSECORE_PYTORCH_NNODES为2
$SENSECORE_PYTORCH_NNODES(新规范命名)

多机任务启动示例:

torchrun --nproc_per_node $SENSECORE_ACCELERATE_DEVICE_COUNT --nnodes $SENSECORE_PYTORCH_NNODES --node_rank $SENSECORE_PYTORCH_NODE_RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT main.py

提交Pytorch DDP分布式任务

以提交一个多节点多 GPU 的分布式 minGPT 模型训练任务为例:

1、前置准备工作:将训练所需的数据和代码挂载到对应文件存储卷。
本示例需要提前将examples 代码仓库下载至 AFS共享存储(挂载路径 /mnt/ngc/examples),可参考以下命令:

mkdir /mnt/ngc
cd /mnt/ngc
git clone https://github.com/pytorch/examples.git

2、点击创建任务,输入以下配置

1)【基本信息】

  • 输入任务显示名称
  • 选择集群

2)【资源配置】

  • 设置任务优先级
  • 框架选择Pytorch DDP
  • 选择副本数:多机多卡训练,副本数>1
  • 选择节点类型

本例配置为2个副本,每个副本4张 GPU,共计8张 GPU,对应8个训练进程。

3)【镜像配置】

  • 选择所需镜像,本例选择带【Base】标识的nvidia24.02版本NGC官方镜像。

4)【数据代码加载】

  • 挂载文件存储卷,输入存储目录及挂载路径。

5)【启动命令】
本例使用如下启动命令:

cd /mnt/ngc/examples/distributed/minGPT-ddp/mingpt
pip install -r ../requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
torchrun --nproc_per_node $SENSECORE_ACCELERATE_DEVICE_COUNT --nnodes $SENSECORE_PYTORCH_NNODES --node_rank $SENSECORE_PYTORCH_NODE_RANK --master_addr $MASTER_ADDR --master_port $MASTER_PORT main.py

3、查看训练结果
1)任务列表处可查看任务运行状态,如状态转为【成功】,说明训练任务已完成。

2)进入任务详情,在【任务日志】中查看在线日志。

3)当任务处于稳定状态(停止、失败和成功)时,点击【离线日志】查看完整训练过程。