今天使用ultralytics yolov8进行训练的时候弹出这个错误,经过半天排查,是pytorch版本的问题。
之前的conda虚拟环境随着时间的推移变得不可用,虽然在cmd中检查torch.cuda.is_available()显示为true,但版本太老不支持新的v8。随后把显卡驱动、CUDA、CUDNN更新到最新版本,这个时候从pytorch的官网使用pip命令下载torch,下载速度会很慢,试了两次均以网络超时告终。
下面的方法可以解决:
首先检查本机的显卡驱动,所支持的最高CUDA版本号以及CUDNN的版本号,
再去download.pytorch.org/whl下载对应的torch、torchaudio、torchvision,3件套必须匹配得上本机的python版本,torch里的cuda版本必须小于或等于显卡驱动所支持的最高CUDA版本,根据所下载的torch版本,去下载对应的torchaudio、torchvision版本(可以在pytorch发行的历代版本中找到3者匹配的版本号)。
这里的坑出现了,我当时只顾下载了带gpu的torch,没有下载对应的torchaudio、torchvision,导致pip安装时系统自动下载了没有带GPU的torchaudio、torchvision,这将导致在第一轮训练时弹出本文提到的错误:
这个时候的pytorch版本是这样的:
因为ultralytics8.2.100要求torchvision版本必须大于0.9.0,我当时就在这两个包之中不断地安装卸载匹配版本号,在安装ultralytics时如果torch版本没对上它会自动卸载我自己安装的带GPU版本的torch,就在这花费了不少时间。后面在清华源上用迅雷下载的GPU版本torch,安装后显示它并不带cuda。最后还是在pytorch上用迅雷下载了版本匹配的3件套。
成功安装后的包应该是这样的,3件套必须带上CUDA:
这个时候就可以进行训练了,解决了题目中提到的错误。