torch.distributed.DistBackendError: NCCL error in: ../torch/csrc/distributed/c10d/ProcessGroupNCCL.cpp:1275, internal error, NCCL version 2.14.3
ncclInternalError: Internal check failed.
Last error:
Duplicate GPU detected : rank 0 and rank 4 both on CUDA device 4f000
这个错误是与 NCCL (NVIDIA Collective Communications Library) 相关的分布式训练错误。具体的错误信息是:
Duplicate GPU detected : rank 0 and rank 4 both on CUDA device 4f000
这意味着在你的分布式训练中,存在两个进程(rank 0 和 rank 4)都在使用同一张 GPU 卡(CUDA 设备 4f000)。NCCL 是用于高效的多 GPU 分布式训练的库,它需要确保每个进程使用不同的 GPU 设备。这个错误表示你在配置分布式训练时,两个不同的进程尝试使用同一张 GPU。
解决方法:
确保你的进程数和 GPU 数量匹配,并且每个进程对应一个独立的 GPU。你可以通过 torch.distributed.launch 或 accelerate launch 的参数来确保这一点。
例如,使用 accelerate 时,检查进程是否正确设置了 rank 和 local_rank:
export NCCL_DEBUG=INFO
export NCCL_P2P_DISABLE=1
CUDA_VISIBLE_DEVICES=0,1,2,3 accelerate launch --multi_gpu --num_processes 4 --main_process_port 29501 src/train_cyclegan_turbo.py