最近使用Pytorch_lightning运行多机多卡,发现了一个很奇怪的问题。 我在配置Trainer的时候,使用的是2nodes,2devices,但是在实际运行的时候,却只有2nodes,1device在跑代码。 随后我扒了扒pytorch_lightning的源码,发现在运行过程中实际上是Strategy的set_world_ranks这个方法设置了程序认为的总卡数大小,而这里面最核心的...
https://github.com/Lightning-AI/pytorch-lightning/issues/11902 最主要的参数是devices和num_nodes。 其中devices如果输入一个正整数的话,表示使用多少张卡来训练。如果输入的是一个列表,则和从零开始的device_id对应上了。 num_nodes尤指你的集群中主机的数目,如果你使用的是单机多卡,num_nodes保持1就行了。
多机单卡:多个机器同时每个机器只有一个GPU,成本来自多个机器之间通信。 多机多卡:多个机器并且每个机器多个GPU,通信成本既有多个机器之间,也有单个机器内多个GPU之间。 这里多说一句,在集群测试不同分布式训练之间的(DDP)速度差异时,发现一个待验证的现象:相同总卡(GPU)数下,多机单卡方式比单机多卡、多机多卡都要...
需要注意的是这有一个strategy参数,可以参考https://pytorch-lightning.readthedocs.io/en/latest/accelerators/gpu_intermediate.html,pytorch lightning支持多种训练框架,包括了dp,dpp,horovod,bagua等。所以这里别忘记设定好所使用的多GPU框架。 多机多卡 这部分和单机多卡的区别不大,只是增加了一个参数num_nodes,来设...