## 分布式接口适配 目前MindTorch中对标`torch.distributed`和`torch.cuda`相关分布式接口还在开发中,已支持部分核心接口功能,具体可以参考[接口支持列表](SupportedList.md)。 当前已支持分布式接口存在如下约束: - 仅支持动态图(PyNative)模式。 - 仅支持GPU/Ascend后端。 - 启动方式当前仅支持MindSpore原生的启动方式。 - 通信接口不支持异步通信(`async_op`等),不支持超时检测机制(`timeout`等)。 ### 分布式启动 采用MindSpore框架的分布式启动方式代替`torchrun`和`torch.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分布式训练样例](https://www.mindspore.cn/tutorials/experts/zh-CN/r2.3/parallel/startup_method.html)。 ### 分布式接口适配 当前仅支持部分`torch.distributed`和`torch.cuda`模块下基础接口功能,参数使用的差异详细可参阅[约束列表](ConstraintList.md)。更多功能支持正在开发中,欢迎参与贡献! 另外,也可以将`torch.distributed`相关接口替换成MindSpore的自动并行相关接口功能,详细可参考[进阶训练指南](User_Guide_Advanced.md)章节描述。