我一直在阅读some documentation和 example code最终目标是为分布式计算(运行 PyTorch)编写脚本,但这些概念让我感到困惑。
假设我们有一个带有 4 个 GPU 的节点,并且我们希望在这 4 个 GPU 上运行我们的脚本(即每个 GPU 一个进程)。在这种情况下,等级世界的大小和等级是多少?我经常找到对世界大小的解释:作业中涉及的进程总数,所以我假设在我们的示例中是四个,但是等级呢?
为了进一步解释,另一个具有多个节点和多个 GPU 的示例也可能很有用。
最佳答案
这些概念与并行计算相关。了解一些有关并行计算的知识会很有帮助,例如 MPI .
您可以将world
视为包含分布式训练的所有进程的组。通常,每个GPU对应一个进程。 世界
中的进程可以相互通信,这就是为什么您可以分布式训练模型并仍然获得正确的梯度更新。因此,世界大小是训练的进程数量,通常是用于分布式训练的 GPU 数量。
Rank
是赋予进程的唯一ID,以便其他进程知道如何识别特定进程。 本地rank是单个节点中运行的进程的唯一本地ID,这是我与@zihaozhihao的观点不同的地方。
让我们举一个具体的例子。假设我们在 2 个服务器(有些文章也称它们为节点)上运行训练,每个服务器/节点有 4 个 GPU。世界大小为4*2=8。进程的排名将为[0, 1, 2, 3, 4, 5, 6, 7]
。在每个节点中,本地排名将为[0, 1, 2, 3]
。
我还写了一篇关于 MPI 集合和基本概念的文章。链接为here .
关于python - 在分布式计算中,世界规模和等级是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58271635/