【发布时间】:2022-10-15 03:08:53
【问题描述】:
我研究了关于torch.distributed 的教程post(示例在gitHub repository)。我看到初始化是
def init_process(rank, size, fn, backend='gloo'):
""" Initialize the distributed environment. """
os.environ['MASTER_ADDR'] = '127.0.0.1'
os.environ['MASTER_PORT'] = '29500'
dist.init_process_group(backend, rank=rank, world_size=size)
fn(rank, size)
不知道内部设计掌握. torch.distributed init_process_group 中 master 的功能是什么?例如,如果有 4 个进程进行分布式训练。等级 0 设置为主。然后我将张量从 Rank 1 发送到 Rank 3。torch.distributed 中定义的通信规则是什么?是不是像
Rank 1 -> Rank 0 -> Rank 3,其中-> 是通信或握手以建立连接。
或者 Rank 0 (master) 用于将 Rank 0-3 的所有 ips 存储在一个表中,以便任何进程 (Rank 0-3) 可以立即检查目标 ip 地址,以便建立类似的连接
Rank 1 -> Rank 3,这里的设置和上面的例子一样。
【问题讨论】:
标签: pytorch distributed-computing