告别CUDA_VISIBLE_DEVICES无效!手把手教你用torchrun搞定MMDetection 3.x多GPU训练
在深度学习模型训练中,多GPU并行是提升效率的必备技能。但当你从MMDetection 2.x升级到3.x后,可能会发现一个令人困惑的现象:明明通过CUDA_VISIBLE_DEVICES=0,1,2,3指定了四块GPU,训练时却只有第一块卡在忙碌,其他GPU仿佛在"围观"。这不是你的错觉,而是MMDetection 3.x分布式训练机制的重大改变。
1. 为什么CUDA_VISIBLE_DEVICES突然失效了?
在MMDetection 2.x时代,我们可以通过两种方式指定GPU:
- 使用
--gpus参数直接指定GPU数量 - 通过
CUDA_VISIBLE_DEVICES环境变量选择特定GPU
但在3.x版本中,--gpus参数被彻底移除,而单纯依赖CUDA_VISIBLE_DEVICES也无法实现真正的多卡并行。这是因为MMDetection 3.x基于PyTorch的分布式训练框架进行了重构,需要更底层的启动方式。
关键区别:
- 2.x版本:使用OpenMMLab自封装的分布式训练接口
- 3.x版本:完全采用PyTorch原生分布式训练方案
# MMDetection 2.x的多卡训练方式(已失效)
CUDA_VISIBLE_DEVICES=0,1,2,3 python tools/train.py config.py --gpus 4
2. torch.distributed.launch的正确打开方式
PyTorch官方提供了torch.distributed.launch工具来启动分布式训练。这个Pyth


83

被折叠的 条评论
为什么被折叠?



