mindspore在gpu上进行多机分布式训练

mindspore在gpu上进行多机分布式训练

1、如何指定每个节点的 显卡编号?例如pytorch是通过这种方式,os.environ['CUDA_VISIBLE_DEVICES'] = '0,1',那mindspore 呢

2、mpirun进行多机分布式时,mindspore是如何进行多机并行的,能否详细描述一下原理?具体来说,能否说明一下多个节点之间如何进行通信,数据和可执行代码需要放在多个节点的共享文件系统中吗,还是只需要放在主节点,再通过网络传输给其他节点?

3、mindspore官方文档中关于gpu上的多机分布式训练的教程不够细致和完善,用户很难根据这个教程完成多机分布式训练

如下图所示,我在进行两个不同服务器(分别为118和52服务器)上的多机gpu分布式,用的是mindspore官方提供的yolov4模型,代码和数据集均放在118服务器上,两个服务器之间已经做好ssh免密通信,但是两个服务器之间没有开启共享文件系统,然后在118服务器上运行 run_train_gpu.sh后,出现下面的错误,提示在52服务器上找不到可执行文件(这个原因是啥),我比较好奇是否一定要建立共享文件系统,可执行文件和数据不能通过网络传输到其他节点吗?麻烦大佬看一下,非常感谢!

mindspore在gpu上进行多机分布式训练_第1张图片

mindspore在gpu上进行多机分布式训练_第2张图片

问题1,MindSpore跟Pytorch一样,也是通过os.environ['CUDA_VISIBLE_DEVICES'] = '0,1' 指定每个节点的显卡编号。

问题2,GPU多个节点之间一般是通过TCP或者RDMA进行通信,多机训练要保证节点间网络互通。

问题3,至于数据和可执行代码需要不需要放在多个节点上面,用户根据自己需要去写启动脚本。若不放在多个节点上面,则需要显示的通过ssh的方式(scp)将数据和可执行代码传到其他节点上,然后在进行mpirun。

你可能感兴趣的:(分布式)