PyTorch DistributedDataParallel(DDP)是一种数据并行的分布式训练方法。通过 DDP 创建多个进程进行模型训练,通过 ring-all-reduce 的方法做进程通讯,完成梯度的交换及参数更新。
PyTorch DDP
,按需配置各种训练角色并提交任务表单进入任务创建环节。PyTorch DDP 仅包含 worker 这一种角色用于训练模型,其中编号为 0
的 worker(worker0)额外承担保存 checkpoint 或日志的任务。0
)则训练任务失败。0
)则训练任务成功。平台为用户注入了有可能在训练代码或者入口命令需要用到的环境变量,通过 PyTorch 官方提供的 torch.distributed.launch
启动命令结合环境变量启动训练任务。
环境变量
如需使用【自定义训练】模块的通用环境变量详见通用环境变量列表。
关键参数
使用如下命令启动 DDP 分布式训练任务:
python -m torch.distributed.launch --nproc_per_node <单个实例上的进程数> --master_addr $MLP_WORKER_0_HOST --node_rank $MLP_ROLE_INDEX --master_port $MLP_WORKER_0_PORT --nnodes $MLP_WORKER_NUM <代码文件的绝对路径> # 选择 CPU 实例规格时,nproc_per_node = 1,则代表每个实例上仅执行 1 个训练进程。 python -m torch.distributed.launch --nproc_per_node 1 --master_addr $MLP_WORKER_0_HOST --node_rank $MLP_ROLE_INDEX --master_port $MLP_WORKER_0_PORT --nnodes $MLP_WORKER_NUM <代码文件的绝对路径> # 选择 GPU 实例规格时,通过环境变量配置每个实例上的训练进程数量与 GPU 数量一致。 python -m torch.distributed.launch --nproc_per_node $MLP_WORKER_GPU --master_addr $MLP_WORKER_0_HOST --node_rank $MLP_ROLE_INDEX --master_port $MLP_WORKER_0_PORT --nnodes $MLP_WORKER_NUM <代码文件的绝对路径>