python - 在分布式计算中,世界规模和等级是多少?

标签 python python-3.x pytorch distributed-computing

我一直在阅读some documentationexample 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/

相关文章:

python - ipython 笔记本的 matplotlib 和 libpng 问题

python - 在短剧中为管道实现变压器时,对象不可迭代

python - 如何编写一个程序来获取一个数字并通过不将数字除以 5(在 python 中)来检查它是否可以被 5 整除

python - Pytorch 相当于 `tf.reverse_sequence` ?

python - 将张量分配给多个切片

python - 从 Groupby 创建新的 Pandas 列并划分其他列

python - 如何对数据帧的行进行求和,以便它仅根据月、日或年对值进行求和。然后将所有结果形成报告

python - 在MacOS上安装Python3

python - Python 3 中的导入后 Hook

python - 输出 :\ntorch-1. 1.0-cp27-cp27mu-linux_x86_64.whl 不是此平台上支持的轮子 - Pytorch/云函数