1 RuntimeError: No rendezvous handler for env://

今天在Windows上使用torch.nn.parallel.DistributedDataParallel进行单机多卡分布式训练出现RuntimeError: No rendezvous handler for env://错误。

出问题代码如下:

import torch.distributed as dist
dist.init_process_group(backend="gloo",
                                world_size=args.world_size,
                                rank=args.local_rank)

在上述代码中,我们没有对init_process_group函数的参数init_method进行设置,所以参数init_method使用了默认值env://,但是在windows上并不支持env://,所以我们需要将代码调整如下:

import torch.distributed as dist
dist.init_process_group(backend="gloo",
                                world_size=args.world_size,
                                rank=args.local_rank,
                                init_method="file:///sharefile")

使用file:///sharefile作为参数init_method值即可消除RuntimeError: No rendezvous handler for env://错误。