pytorch:使用带有gloo的分布式运行时错误

时间:2018-04-18 02:12:10

标签: distributed pytorch

我正在尝试使用PyTorch分布式软件包和gloo后端。

但是,我收到以下错误。

站长:

Traceback (most recent call last):
  File "Distributed.py", line 169, in <module>
    init_processes(args.rank, size, run)
  File "Distributed.py", line 80, in init_processes
    dist.init_process_group(backend=backend, rank=rank, world_size=size)
  File "/usr/local/lib/python3.5/dist-packages/torch/distributed/__init__.py", line 49, in init_process_group
    group_name, rank)
RuntimeError: [enforce fail at /pytorch/torch/lib/gloo/gloo/transport/tcp/device.cc:127] rp != nullptr. Unable to find address for: <My specified Ip> at /pytorch/torch/lib/THD/process_group/General.cpp:17

otrher工人得到:

RuntimeError: [enforce fail at /pytorch/torch/lib/gloo/gloo/transport/tcp/device.cc:127] rp != nullptr. Unable to find address for: 10.37.0.1 at /pytorch/torch/lib/THD/process_group/General.cpp:17

以下是我初始化的方式:

def init_processes(rank, size, fn, backend='gloo'):
    """ Initialize the distributed environment. """

    os.environ['MASTER_ADDR'] = <My specified Ip>
    os.environ['MASTER_PORT'] = '8888' if rank == 0 else '31566'

    print("Init Processes ->", 'backend:', backend, 'rank:', rank, 'MASTER_ADDR:', os.environ['MASTER_ADDR'],
          'MASTER_PORT:', os.environ['MASTER_PORT'])
    dist.init_process_group(backend=backend, rank=rank, world_size=size)
    fn(rank, size)

有关可能导致此问题或如何解决问题的任何想法? THX

PS。我使用的是带有python 3.5的docker env和带有cuda9.0的PyTorch 0.3.1。

1 个答案:

答案 0 :(得分:0)

Gloo无法绑定这些IP。解决方案是让docker访问机器网络接口。

最简单的方法是将--network host添加到docker run命令中。

通过这种方式,docker可以访问主机的所有接口(和IP)。因此,您可以将{0}节点的主机IP用于MASTER_ADDR

默认情况下,泊坞窗创建一个“网桥网络”。这意味着该容器具有专用IP(例如172.17.X.X),并且不能直接访问主机接口。