指定CPU运行YOLOv5却仍出现CUDA相关提示的原因是什么
YOLOv5指定CPU运行仍触发CUDA告警的原因及解决方法
问题原因
- 你遇到的不是模型真的在使用GPU,只是YOLOv5内部逻辑触发的告警,你可以通过
print(model.device)确认最终模型实际运行在CPU上。 - 触发告警的核心原因是YOLOv5加载模型时会先执行全局CUDA环境预检查,即使你传入的device参数最终是CPU,内部检查逻辑也会先尝试探测CUDA是否可用,探测失败就会抛出该警告。
- 部分场景下,你加载的预训练权重文件本身是在CUDA环境下保存的,YOLOv5会先尝试将权重加载到原保存设备,再迁移到你指定的CPU,这个过程也会触发CUDA不可用的告警。
解决方案
- 直接强制指定
device='cpu',不要使用cuda if torch.cuda.is_available() else 'cpu'的三元判断。你已经明确当前环境输出的设备是CPU,直接写死device参数可以跳过YOLOv5的CUDA探测分支,避免告警。修改后的加载代码如下:model = yolov5.load(model, device='cpu') - 如果你需要保留动态判断设备的逻辑,可以在代码入口处添加指定警告的过滤规则,直接屏蔽该类告警,代码如下:
import warnings warnings.filterwarnings("ignore", message="User provided device_type of 'cuda', but CUDA is not available. Disabling") - 模型加载完成后手动调用一次CPU迁移操作,确认模型完全运行在CPU上:
model = model.to('cpu')
内容的提问来源于stack exchange,提问作者Joysn
相关产品推荐
相关产品推荐

