如何在Pytorch Distributed中使用自定义Rank到GPU映射



我在一个4-gpu节点上运行PyTorch,我不是唯一一个运行项目的人。因此,有时某些gpu太忙,而其他gpu空闲。

假设GPU 0和GPU 2繁忙,但GPU 1和GPU 3不是,所以我只想使用这些GPU。似乎默认情况下,在pytorch分布中,Rank 0总是GPU 0。

我如何指定PyTorch Rank 0应该对应于GPU 1, Rank 1应该对应于GPU 3?

您可以通过设置变量CUDA_VISIBLE_DEVICES来告诉任何命令哪个gpu应该对它们可见。例如

CUDA_VISIBLE_DEVICES=2,3 python run.py <args>

这将只使GPU 2和3对该进程可见,因此DDP将只在您指定的GPU上运行。(注意这是零索引,即0是第一个GPU。)

最新更新