How to fix 'RuntimeError: Address already in use' in PyTorch?

How to fix 'RuntimeError: Address already in use' in PyTorch?

我正在尝试 运行 使用 PyTorch 分布式训练器的分布式应用程序。我想我会先试试他们有的例子,发现 here。我设置了两个 AWS EC2 实例并根据 link 中的描述配置它们,但是当我尝试 运行 代码时,我得到两个不同的错误:在第一个终端 window 中node0 我收到错误消息:RuntimeError: Address already in use

在其他三个windows下我得到同样的错误信息:

RuntimeError: NCCL error in: /pytorch/torch/lib/c10d/ProcessGroupNCCL.cpp:272, unhandled system error

我遵循了 link 中的代码,并终止了重做的实例,但没有帮助/

这是使用 python 3.6 和夜间构建的 Cuda 9.0。我尝试将 MASTER_ADDR 更改为两个节点上 node0 的 ip,并使用相同的 MASTER_PORT(这是一个可用的未使用端口)。但是我仍然收到相同的错误消息。

运行完成此操作后,我的目标是调整 this StyleGan 实现,以便我可以在两个不同节点的多个 GPU 上训练它。

所以在多次尝试失败后,我发现了问题所在。请注意,此解决方案适用于使用 ASW 深度学习实例。

创建两个实例后,我不得不调整安全组。添加两条规则:第一条规则应为 ALL_TCP,并将源设置为领导者的私有 IP。第二条规则应该是相同的 (ALL_TCP),但源是从属节点的私有 IP。

之前,我将设置安全规则设置为:键入 SSH,它只有一个可用端口 (22)。出于某种原因,我无法使用此端口来允许节点进行通信。更改这些设置后,代码运行良好。我还能够 运行 this 使用上述设置。