一、问题背景

本人正准备学习yolo算法,然后提前已经安装了CUDA模块,以及对应的pytorch版本。

下载yolo源代码后,readme.txt中建议我用pip install -U -r requirement.txt方法安装依赖库。

当时我注意到torch被重新安装了一遍,但是当时没留心,以为应该不是什么问题。

后来,在实际用yolo跑数据集的时候,发现哪怕device设置成cuda:0,也没办法使用GPU。

于是我import torch后,执行torch.cuda.is_available(),返回的结果是False。

在导入torch的情况下,继续执行torch.__version__,查看torch的版本,发现竟然是CPU的版本;而我当时安装的时候是GPU版本,极有可能是当时用requirement.txt文件安装的时候它默认给我重装成cpu版本了。

接着,我在cmd黑窗口中运行nvcc -V,返回的结果很正常,cuda已经正常安装。

pytorch里 def的格式 pytorch false_依赖库

安装了CPU版本的torch,用torch.cuda.is_available()返回的结果当然是False了

不管有没有装CUDA模块……,torch版本不对就不行!就不能用GPU进行训练!

二、解决方法

重装pytorch相关的模块,比如torchvision、torchaudio、torch。

三、教训总结

千万不要随便用指令pip install -U -r requirement.txt,因为-U指令表示如果txt文件中包括和已安装库相同的库,则安装最新版本(鬼知道这个版本是哪个让人头麻的、BUG满天飞的版本呢?);至于如果在requirement.txt中指定版本安装,会不会安装指定版本,就不得而知了,如果你正好知道,不妨在评论区分享一下。如果不想要更新库,可以去掉-U,这样一旦有同名库存在,就不会安装。

因此建议在使用requirement.txt安装依赖库时,先去看看是否有类似Pytorch、TensorFlow这种大型依赖库,这种库不同版本之间差异很大的,并且因为体积太大,一旦版本不合适,就需要花费很大的精力去卸载和重装。

可能比较麻烦,但是绝对实用的建议是,你想要测试对方的什么代码,就直接用他的requirement.txt文件安装一个新创建的虚拟环境;别在一个环境中装太多东西了!不然出问题了,花费的时间,远比你创建一个新环境的时间多得多!