Colab训练YOLOv5指定device为cpu仍报CUDA不可用警告如何解决?
问题产生原因
- YOLOv5的底层初始化逻辑优先级问题:多数版本的YOLOv5在加载入口参数前,会先执行PyTorch的CUDA环境自动检测逻辑,你传入的
--device cpu参数是在检测逻辑执行后才会生效,因此会先触发CUDA不可用的警告,该警告不影响后续实际使用CPU训练。 - Colab运行时环境残留:如果你的Colab会话此前切换过GPU运行时再改为CPU运行时,环境中会残留CUDA相关的环境变量配置,PyTorch检测到配置后会尝试调用CUDA,最终触发不可用的警告。
- YOLOv5版本bug:部分老旧版本的YOLOv5
train.py存在参数传递漏洞,你传入的device参数没有正确传递到PyTorch的设备初始化模块,导致底层默认走CUDA检测逻辑。
排查解决方法
- 确认Colab运行时配置:点击顶部菜单栏「修改」->「笔记本设置」,确认硬件加速器选项为「无」,保证运行时环境和参数配置匹配。
- 全局屏蔽CUDA检测:在执行训练命令前先运行以下代码,强制PyTorch跳过CUDA检测:
也可以直接在训练命令前添加环境变量声明,一步生效:import os os.environ["CUDA_VISIBLE_DEVICES"] = "-1"!CUDA_VISIBLE_DEVICES=-1 python train.py --img 415 --batch 16 --epochs 30 --data dataset.yaml --device cpu --weights yolov5s.pt --cache - 修正参数写法:将
--device cpu改为--device 'cpu',避免部分版本的参数解析器对无引号的字符串参数识别异常。 - 升级YOLOv5版本:拉取官方仓库的最新代码,修复老旧版本的参数传递bug。
- 验证实际运行设备:训练启动后查看控制台输出的设备信息,只要明确显示
Using CPU,就说明警告仅为前置检测触发,不影响实际训练,无需额外处理。
内容的提问来源于stack exchange,提问作者Houssem Neuer
相关产品推荐
相关产品推荐

