1.准备python环境
python环境需要看pytorch上说明的版本本文用的是python3.9
conda create -n pytorch39 python=3.9
2.安装pytorch【要使用GPU的先安装步骤3的CUDA在安装这个】
pytorch官方地址
(1)官方指出了python版本:
(2)使用
选择自己的环境,如果不用GPU的话直接选择CPU复制最后一行的pip命令在python环境下的cmd窗口运行安装完后就可以了。
3.需要使用GPU
3.1 安装cuda
随着显卡的发展,GPU越来越强大,而且GPU为显示图像做了优化。在计算上已经超越了通用的CPU。如此强大的芯片如果只是作为显卡就太浪费了,因此NVidia推出CUDA,让显卡可以用于图像渲染和计算以外的目的(例如这里提到的通用并行计算)。CUDA即Compute Unified Device Architecture,是NVidia利用GPU平台进行通用并行计算的一种架构,它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。开发人员可以利用C言、OpenCL、Fortran、c++等为CUDA架构编写程序。简单来理解,cuda就是NVidia提供的可以将显卡进行并行运算的一种软件驱动。
我们的最终目标是使用Pytoch,而特定Pytorch对cuda的版本是有要求的。因此,我们在安装cuda之前需要先确认到底装哪个cuda版本才行。
(1) 查看显卡的驱动版本
nvidia-smi
驱动版本是Driver Version: 537.58-------------------CUDA Version: 12.2
我们需要安装的CUDA版本应该是12.2,也可以参考官网的表因为截图迟早都不会是最新的文章,但是官网肯定会实时更新。
官网CUDA安装版本和N卡驱动对照表
我们还可以在官网看到不同型号的显卡的算力,我们这里是GeForce RTX 3050
所以在nvidia的gpu官网可以看到我们的显卡算力
根据自己的显卡型号点击不同的栏目查看
最后下载我们对应的CUDA在CUDA Toolkit官网选择自己的操作系统和CUDA版本下载,如果没有对应的版本点击CUDA Documentation/Release Notes查看其它版本
下载好以后安装CUDA
按照安装提示默认安装即可。 安装完成后,可以打开文件夹C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA,可以看到当前目录已经存在v12.2文件夹,表示已经成功安装cudav12.2版本,并且上述安装程序已经自动的向环境变量中添加了对应的cuda路径,使得后续pytorch可以正常调用和执行。
最后,测试一下cuda是否安装成功。打开cmd命令终端,然后输入命令:
nvcc -V
3.2 安装cudnn (可以不安装)
cudnn是什么?为什么装了cuda了还要再装cudnn?
为了解释上述两个问题,我们需要重新梳理一下我们使用Pytorch的最终目标是什么?我们是用它来进行深度学习训练和推理,深度学习本质上就是训练深度卷积神经网络。尽管我们已经可以用cuda使得显卡来完成并行计算任务,但是所有的操作还是比较底层的、复杂的。是否在cuda之上有一个专门用于深度神经网络的SDK库来加速完成相关特定的深度学习操作,这个库就是cudnn。
NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如caffe、tensorflow、pytorch、mxnet等。cudnn简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是调整性能,同时还可以在GPU上实现高性能现代并行计算。
简单来说,cuda就是用来定义显卡并行运算的一些列底层GPU操作库,cudnn则是在cuda基础上专门正对深度学习定制的高级GPU操作库。
cudnn官网下载地址
这里需要注册账号并填写相关个人信息,然后进才可以进入真正的下载页面,按照提示一步步操作,最终在下载页下载自己对应的版本。我们选择的cuDNN v8.9.5,没有对应CUDA版本的选择绿色的其它版本。
下载之后,解压缩,将CUDNN压缩包里面的bin、clude、lib文件直接复制到CUDA的安装目录下(C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.2),直接覆盖安装即可完成。
4.验证
验证Pytorch是否安装成功并且能够成功调用cudnn。首先在命令行中输入python进入python环境,然后输入命令:
import torch
print(torch.__version__)
如下图所示说明pytorch已经安装成功
再验证pytorch调用cuda是否正确。输入命令:
print(torch.cuda.is_available())
如下图所示即为成功: