我正在尝试使用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。
答案 0 :(得分:0)
Gloo无法绑定这些IP。解决方案是让docker访问机器网络接口。
最简单的方法是将--network host
添加到docker run
命令中。
通过这种方式,docker可以访问主机的所有接口(和IP)。因此,您可以将{0}节点的主机IP用于MASTER_ADDR
。
默认情况下,泊坞窗创建一个“网桥网络”。这意味着该容器具有专用IP(例如172.17.X.X),并且不能直接访问主机接口。