本人显卡为甜品卡GTX1650,驱动版本是cuda11.1,出于比赛原因,yolov5s在我的cpu上跑速度很慢(一秒5帧),所以重新安装了一根GPU版本的pytorch。现在回顾一下过程,让后来的网友少走弯路。
要成功使用pytorch,需要以下四个条件:0、有适合cuda的显卡;1、安装合适的运算用cuda;2、添加神经网络计算优化库cudnn;3、合适的pytorch安装指令
下面我们就开始吧
以下为Windows
可能暂时用不上Linux
查看cuda驱动版本
方法一
在任务栏托盘找到NVIDIA控制面板
点击系统信息,可看到cuda驱动版本
方法二
命令行输入NVIDIA-smi
也可以看到cuda版本
安装CUDA Toolkit
在NVIDIA官网下载即可
直接去下载最新版
https://developer.nvidia.com/cuda-toolkit
或者找历史版本
https://developer.nvidia.com/cuda-toolkit-archive
个人感觉版本号11开头对我来说都可以,我下载了cuda_11.1.0_456.43_win10(有错误请指出)
然后就是安装,可以自行更改安装过程中的三条文件路径,但要记住自己装哪里了
安装cudnn
下载地址
https://developer.nvidia.com/cudnn
这里可以下载自己cuda对应的cudnn,版本号需要对应起来
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10
我下载了cudnn-11.1-windows-x64-v8.0.5.39
打开来里面是文件夹格式的都是dll文件、lib文件、h文件这样的,把相应的文件复制到安装目录的相应目录下面,cudnn就算是安装好了
设置环境变量
1、在计算机右键菜单设置里(可能找不到,需要在控制面板搜索)找到 高级系统设置->环境变量
2、添加以下几个环境变量:
CUDA_SDK_PATH = C:\ProgramData\NVIDIA Corporation\CUDA
Samples\v11.1
(更换为自己安装位置的路径,下同)
CUDA_LIB_PATH = %CUDA_PATH%\lib\x64
CUDA_BIN_PATH = %CUDA_PATH%\bin
CUDA_SDK_BIN_PATH = %CUDA_SDK_PATH%\bin\win64 CUDA_SDK_LIB_PATH = %CUDA_SDK_PATH%\common\lib\x64
3、在系统变量 PATH 的末尾添加: %CUDA_LIB_PATH%;%CUDA_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_BIN_PATH%;
再添加如下4条(更换为自己的安装路径,下同):
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\lib\x64; C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.1\bin; C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\common\lib\x64;
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.1\bin\win64
验证
在命令行中 cd到安装目录的extras\demo_suite
命令行中运行bandwidthTest.exe和deviceQuery.exe
得到两个输出都是PASS说明成功了
重启
还是有必要重启一下的,让刚才做的配置生效
安装gpu版本的pytorch
注意:千万不要用清华镜像,因为他们似乎没有对应的GPU版本,其他镜像我不知道,反正我没有搭其他镜像源下的
如果你已经有cpu版的pytorch又不希望污染环境(比如你可能装错了,这时候就是泼出去的水了),建议conda create -n NAME python=3.x
一下,新建一个虚拟环境。
在pytorch官网找对应的版本https://pytorch.org/get-started/locally/
复制一下命令就好了
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
我这里安装了11.3(因为我改成11.1不可以),但事实证明YOLO还是跑起来了,算是很幸运了。
似乎还有种方法是在这里找自己喜欢的版本(为什么pytorch在这里都是1.8?)
https://anaconda.org/pytorch-lts/pytorch/files?sort=basename&sort_order=desc
我没试过,大家可以试试看
最后验证
可以在conda list
里看结果,可以看到是cuda版本,如果按照默认的安装方式(pip install pytorch),这里显示cpu
也可以输入python后输入如下命令:
import torch
torch.cuda.is_avaliable()
当然也可直接跑YOLO