分布式接口适配

目前MindTorch中对标torch.distributedtorch.cuda相关分布式接口还在开发中,已支持部分核心接口功能,具体可以参考接口支持列表。 当前已支持分布式接口存在如下约束:

  • 仅支持动态图(PyNative)模式。

  • 仅支持GPU/Ascend后端。

  • 启动方式当前仅支持MindSpore原生的启动方式。

  • 通信接口不支持异步通信(async_op等),不支持超时检测机制(timeout等)。

分布式启动

采用MindSpore框架的分布式启动方式代替torchruntorch.distributed.launch启动方式:

  • 在MindSpore 2.3版本及以后版本,可使用msrun以单个命令行指令的方式在各节点拉起多进程分布式任务。

msrun --worker_num=8 --local_worker_num=8 --master_port=8118 --log_dir=msrun_log --join=True --cluster_time_out=300 net.py
  • 在MindSpore 2.3之前版本中,则可以通过OpenMPI的mpirun运行分布式脚本。下面以使用单机8卡的分布式训练为例,当执行该命令时, 脚本会在后台运行,日志文件会保存到当前目录下,不同卡上的日志会按rank_id分别保存在log_output/1/路径下对应的文件中。

mpirun -n 8 --output-filename log_output --merge-stderr-to-stdout python train.py > train.log 2>&1 &

多机多卡启动等更复杂的用法请参考MindSpore分布式训练样例

分布式接口适配

当前仅支持部分torch.distributedtorch.cuda模块下基础接口功能,参数使用的差异详细可参阅约束列表。更多功能支持正在开发中,欢迎参与贡献!

另外,也可以将torch.distributed相关接口替换成MindSpore的自动并行相关接口功能,详细可参考进阶训练指南章节描述。