You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

CUDA环境检测正常但训练YOLOv8时触发torchvision::nms CUDA后端未实现错误求助

CUDA环境检测正常但训练YOLOv8时触发torchvision::nms CUDA后端未实现错误求助

看起来你的环境表面配置都对得上,但这个torchvision::nms的CUDA后端错误其实是挺常见的算子兼容问题,我给你几个实际可操作的排查和解决方向:


1. 先检查torchvision版本是否完全匹配Torch和CUDA

你只贴了Torch版本,但torchvision和Torch的版本必须严格对应,否则很容易出现算子不兼容的情况。先运行这段代码确认版本:

import torchvision
print(f'torchvision version: {torchvision.__version__}')

正常来说,和Torch 2.1.1+cu121对应的torchvision应该是0.16.1+cu121。如果版本不对,直接重新安装对应版本:

pip install torchvision==0.16.1+cu121 --index-url https://download.pytorch.org/whl/cu121

2. 排查ultralytics库的版本兼容

YOLOv8的ultralytics库和Torch版本有时候会存在兼容冲突,特别是新的Torch版本搭配旧的ultralytics时。可以先尝试升级到最新稳定版:

pip install --upgrade ultralytics

如果升级后还是不行,试试降级到一个和Torch 2.1.1经过验证的稳定版本,比如:

pip install ultralytics==8.0.200

3. 临时切换到CPU模式排查问题

先在训练代码前加上强制CPU运行的设置,看看训练能不能正常跑起来——如果CPU能运行,那100%是GPU算子的匹配问题,回到前两步解决:

from ultralytics import YOLO
from datetime import datetime, timedelta
import torch

# 临时强制用CPU运行(仅排查用)
model = YOLO('yolov8n.pt')
results = model.train(data='data.yaml', epochs=15, imgsz=[480, 352], device='cpu')

4. 确认cuDNN是否被PyTorch正确加载

虽然你设置了环境变量,但PyTorch可能没正确识别到cuDNN。运行这段代码检查:

print(f'cuDNN version: {torch.backends.cudnn.version()}')
print(f'cuDNN enabled: {torch.backends.cudnn.enabled}')

如果输出cuDNN version: None或者版本和你安装的cuDNN不匹配(比如你装的是cuDNN 8.9.4 for CUDA12.1,应该输出8904),那需要:

  • 把cuDNN解压后的binlib\x64include文件夹里的文件,直接复制到CUDA安装目录的对应文件夹下(比如C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1下的对应目录)
  • 重启PyCharm甚至电脑,再重新检查

5. 彻底清理缓存后重装依赖

如果上面的方法都不行,可能是pip缓存的旧包导致的混合版本问题,彻底清理后重装:

# 卸载所有相关库
pip uninstall -y torch torchvision torchaudio ultralytics
# 清理pip缓存
pip cache purge
# 重新安装对应版本的PyTorch全家桶
pip3 install torch==2.1.1+cu121 torchvision==0.16.1+cu121 torchaudio==2.1.1+cu121 --index-url https://download.pytorch.org/whl/cu121
# 安装最新版ultralytics
pip install ultralytics --upgrade

备注:内容来源于stack exchange,提问作者Andrei

火山引擎 最新活动