代码之家  ›  专栏  ›  技术社区  ›  Bram Vanroy

在分布式计算中,世界的大小和等级是多少?

  •  0
  • Bram Vanroy  · 技术社区  · 5 年前

    我一直在通读 some documentation example code 最终目标是为分布式计算编写脚本(运行PyTorch),但是这些概念让我很困惑。

    作业中涉及的进程总数 ,所以我假设在我们的例子中是四个,但是等级呢?

    为了进一步解释,另一个具有多个节点和多个gpu的示例也可能有用。

    0 回复  |  直到 5 年前
        1
  •  3
  •   zihaozhihao    5 年前

    当我学习的时候 torch.distributed

    我想 group world_size 是此中的进程数 ,这也是参与作业的进程数。 rank 中每个进程的唯一id .

    所以在你的例子中, 世界尺寸 因为过程是 [0,1,2,3]

    有时候,我们也可以 local_rank 参数,它表示一个进程内的GPU id。例如, rank=1 local_rank=1 ,表示第二个进程中的第二个GPU。

        2
  •  5
  •   jdhao    5 年前

    这些概念与并行计算有关。学习一下并行计算会很有帮助,例如。, MPI .

    你能想到 world 作为一个包含分布式培训所有流程的组。通常,每个GPU对应一个进程。中的流程 世界 可以互相交流,这就是为什么你可以分散训练你的模型,仍然得到正确的梯度更新。因此,world size是用于培训的进程数,通常是用于分布式培训的gpu数。

    Rank 指定给进程的唯一ID,以便其他进程知道如何标识特定进程。 Local rank是在单个节点中运行的进程的唯一本地ID ,这就是我与@zihaozhihao的不同之处。

    让我们举一个具体的例子。假设我们在2个服务器或节点上运行我们的培训,每个服务器或节点有4个gpu。世界尺寸是4*2=8。进程的等级将是 [0, 1, 2, 3, 4, 5, 6, 7] . 在每个节点中,本地秩将为 [0, 1, 2, 3]

    我还写了一篇关于MPI集体和基本概念的文章。链接是 here