使用Pytorch进行多卡训练( 三 )


9、各进程优化器使用梯度更新其模型副本权重 。由于初始化时各进程模型、优化器权重一致,每次反向传播梯度也保持一致,则所有进程的模型在整个训练过程中都能保持一致 。
10、由于所有进程权重保持一致 , 我们只需通过一个进程保存即可 。
11、定义rank 0的IP和端口,使用mp.spawn,只需在主进程中定义即可 , 无需分别在子进程中定义 。
12、创建子进程,传入:子进程调用的函数(该函数第一个参数必须是rank)、子进程函数的参数(除了rank参数外)、子进程数、是否等待所有子进程创建完毕再开始执行 。
参考: https://pytorch.org/tutorials/intermediate/ddp_tutorial.html
【使用Pytorch进行多卡训练】

推荐阅读