🚀Debug专栏
其他debug记录请参考上方【debug专栏】
目录
🍀🍀背景
单机多卡训练的时候还可以正常运行,多机多卡分布式训练就报错:RuntimeError: NCCL error in: ../torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1191, unhandled system error, NCCL version 2.10.3,说是NCCL版本的问题。
❓❓报错信息
多机多卡训练,详细报错信息如下:
RuntimeError: NCCL error in: ../torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1191, unhandled system error, NCCL version 2.10.3
ncclSystemError: System call (e.g. socket, malloc) or external library call failed or device error. It can be also caused by unexpected exit of a remote peer, you can check NCCL warnings for failure reason and see if there is connection closure by a peer.
WARNING:torch.distributed.elastic.multiprocessing.api:Sending process 18994 closing signal SIGTERM
ERROR:torch.distributed.elastic.multiprocessing.api:failed (exitcode: 1) local_rank: 1 (pid: 18995) of binary:/data/xxx/anaconda3/envs/openmmlab/bin/python
奇怪?前几天还好好的,今天mmseg工程单机多卡可以顺利运行训练,切换到多机多卡训练就报错RuntimeError: NCCL error in: ../torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1191, unhandled system error, NCCL version 2.10.3。
🌻🌻解决方案
1.训练代码加操作
在网上找到一种方法,在训练代码命令前加以下几句代码:
export NCCL_DEBUG=info export NCCL_SOCKET_IFNAME=eth0 export NCCL_IB_DISABLE=1 ......
但对我的问题dont work,还是报相同的错。
2.防火墙
看到这句报错【ncclSystemError: System call (e.g. socket, malloc) or external library call failed or device error. 】我突然顿悟了,这不是socket连接不上嘛,握手不成功那就可能谁双手插兜了。把【多机多卡】里的【多机】全部关闭防火墙。
你猜怎么着,果然好了😎😎。
🌷🌷总结
找了半天,这个ncclSystemError: System call (e.g. socket, malloc) or external library call failed or device error. 报错居然是防火墙的问题,一定记得把服务器的防火墙关闭!!!
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷