node: 代表物理节点,即电脑台数,一台电脑可以有多个GPU

nnodes:物理节点数,就是电脑数量

node_rank:物理节点的序号,每个电脑的序号

nproc_per_node:每个物理节点上面进程的数量,等价于每个电脑上GPU的数量,就是可以开几个进程。

group:进程组。默认只有一个组

rank & local_rank:
在整个分布式中的序号,每个进程都有一个rank和一个local_rank,rank是相对整个分布式而言(就是序号从0开始一直到整个分布式中最后一个GPU的数,类似于range(0,整个分布式GPU数量),这里不是相对于一个node而言,是所有node的GPU总和),local_rank是每个进程或者GPU相对属于哪个node而言的编号。另外,rank=0代表master进程

如图所示:
有三个node,每个node有4个GPU(则每个node会有四个进程,一个进程对应一个GPU)

local_rank,rank,node等理解

在单机多卡的情况下:WORLD_SIZE代表着使用进程数量(一个进程对应一块GPU),这里RANK和LOCAL_RANK这里的数值是一样的,代表着WORLD_SIZE中的第几个进程(GPU)。
在多机多卡的情况下:WORLD_SIZE代表着所有机器中总进程数(一个进程对应一块GPU),RANK代表着是在WORLD_SIZE中的哪一个进程,LOCAL_RANK代表着当前机器上的第几个进程(GPU)。
 

图片来自:PyTorch多卡/多GPU/分布式DPP的基本概念(node&rank&local_rank&nnodes&node_rank&nproc_per_node&world_size)_hxxjxw的博客-CSDN博客_nproc_per_node

参考:

1.PyTorch多卡/多GPU/分布式DPP的基本概念(node&rank&local_rank&nnodes&node_rank&nproc_per_node&world_size)_hxxjxw的博客-CSDN博客_nproc_per_node

2.https://blog.csdn.net/qq_37541097/article/details/109736159

发表回复