我正在尝试使用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和其他工人得到:
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。我在Python3.5上使用docker env,在cuda9.0上使用PyTorch 0.3.1。
发布于 2018-09-25 02:08:35
Gloo无法绑定这些IP。解决方案是让docker访问机器网络接口。
最简单的方法是在docker run命令中添加--network host。
通过这种方式,docker可以访问主机的所有接口(和IP)。因此,您可以将rank0节点的主机的IP用于MASTER_ADDR。
默认情况下,docker会创建一个“桥接网络”。这意味着容器拥有内网IP (例如172.17.X.X),不能直接访问主机接口。
https://stackoverflow.com/questions/49890101
复制相似问题