【问题标题】:What is the functionality of master in torch.distributed init_process_group?torch.distributed init_process_group 中 master 的功能是什么?
【发布时间】: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


    【解决方案1】:

    它更接近 IP,但并不完全如此。要在进程之间进行通信,您需要额外的元数据,例如示例中的 IP,但通常称为通信器 (NCCL)。所以,是的,master 负责共享每个 rank 应该加入的通信器地址。

    Master 还为操作/监控目的做一些额外的簿记。

    【讨论】:

      猜你喜欢
      • 2014-08-30
      • 2016-06-07
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 1970-01-01
      相关资源
      最近更新 更多