Windows10系统运行PyTorch分布式代码报No rendezvous handler for env://如何解决
报错原因
- 当前指定的分布式后端为
nccl,该后端为Linux平台专属,不支持Windows系统,无法在Windows环境下正常调用。 - 部分低版本PyTorch的Windows编译包默认没有启用
env://初始化方式的节点握手处理器,也会触发该报错。
解决方案
1. 替换分布式后端
找到代码中init_process_group调用位置,将backend参数从nccl修改为跨平台兼容的gloo后端:
# 修改前 torch.distributed.init_process_group(backend='nccl', init_method='env://', world_size=world_size, rank=rank) # 修改后 torch.distributed.init_process_group(backend='gloo', init_method='env://', world_size=world_size, rank=rank)
2. 替换初始化方式(可选,改完后端仍报错时使用)
如果修改后端后仍然触发相同的rendezvous报错,可以将init_method从env://替换为显式TCP初始化:
# 单机器训练直接填127.0.0.1,端口选未被占用的空闲端口即可 torch.distributed.init_process_group(backend='gloo', init_method='tcp://127.0.0.1:23456', world_size=world_size, rank=rank)
3. 升级PyTorch版本(可选,需保留env初始化时使用)
如果需要继续使用env://初始化方式,可以将PyTorch升级到1.10及以上正式版本,新版本Windows编译包已经完整适配了env初始化的处理器。
额外注意
Windows系统下旧版torch.distributed.launch启动脚本存在兼容问题,单机器多卡训练建议使用torchrun命令启动,示例如下:
torchrun --nproc_per_node=你的显卡数量 main.py --cfg=configs/swin_tiny_patch4_window7_224.yaml --data-path=imagenet --batch-size=64
内容的提问来源于stack exchange,提问作者Chiancc
相关产品推荐
相关产品推荐

