最近在魔改一个检测模型,想从单卡改成DDP多卡训练。代码参考了官方tutorial,但一跑就各种幺蛾子:先是dist.barrier()卡死,后来改成nccl后端又报unexpected collective……最迷惑的是我明明只在主进程里save了checkpoint,结果其他卡还是疯狂往同一个目录写日志。我猜是DistributedSamplerDataLoadernum_workers没对齐?但调了半天还是时好时坏。有没有老哥指点下DDP的正确打开姿势?顺便问下,modeloptimizer到底该不该用torch.nn.parallel.DistributedDataParallel包多次?总感觉这里有个坑等着我踩。