概念介绍
什么是GPU?
GPU全称是Graphics Processing Unit,即图形处理器,是一种专门进行绘图运算工作的微处理器。虽然GPU在游戏中以3D渲染而闻名,但是GPU相较于传统的专为通用计算而设计的CPU,GPU是一种特殊类型的处理器,具有数百或数千个内核,经过优化,可并行运行大量计算,对运行深度学习和机器学习算法尤其有用。GPU允许某些计算机比传统CPU上运行相同的计算速度快10-100倍。
什么是CUDA?
CUDA全称是Compute Unified Device Architecture,即计算机统一设备体系结构,是NVIDIA(英伟达)创建的并行计算平台和应用程序编程接口模型。CUDA平台是一个软件层,可直接访问GPU的虚拟指令集和并行计算元素,以执行计算内核。因此我们如果想利用GPU加速运行深度学习算法,那么CUDA就是一个不可或缺的中间层,它代替我们直接跟GPU硬件打交道,并对外开放接口,pytorch则对这层接口再次进行封装,对编程人员提供接口。我们使用的是pytorch提供的编程接口。
什么是cuDNN?
cuDNN全称CUDA Deep Neural Network library:是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。如果你要用GPU训练模型,cuDNN不是必须的,但是一般会采用这个加速库。
什么是pytorch?
pytorch是一个开源的机器学习库,底层基于C++实现,最初由Facebook的人工智能研究团队开发。它有两大特征:
1)类似于Numpy的张量(Tensor)计算,可使用GPU加速。
2)基于带自动微分系统的深度神经网络
安装
上面是对一些基本概念的介绍,希望能通过这些基本介绍,能够理解我们为什么要使用这些东西,以及使用这些东西的优势是什么。下面我们介绍一下安装过程,以及一些安装注意点:
概览:
- 验证自己电脑是否有GPU
- 保证电脑已经安装visual studio
- 选择适配自己电脑的CUDA版本
- 选择对应的cnDNN版本
- 选择对应的pytorch版本
- 代码验证
1.验证自己电脑是否有GPU
1) control + shift + esc
启动任务管理器
2)点击 性能
,因该可以看到 GPU0
, GPU1
2.安装visual studio
visual studio是运行环境,所以要先在CUDA安装前配置好,然后就是visual studio的版本,虽然CUDA安装文档上指定了版本,但是根据我的安装情况来说,一般新版的是没问题的,不用特意安装较早版本;(我选择的是CUDA 8.0, 文档要求是visual studio 2013-2015,我安装的是visual studio 2017,也能正常使用)
这里有一个vs2017的安装教程:vs2017安装(有安装链接)
官网最新版是vs2019,更早的版本在官网找不到,所以这里留一个链接,希望能帮助到有需要的人。
3.选择要安装的CUDA版本(版本适配非常重要)
1)打开控制面板
2)搜索 NVIDIA
3)双击 NVIDIA控制面板
,帮助
, 系统信息
, 组件
我这边支持的CUDA版本是8.0的。所以就下载的CUDA 8.0版本:
下载路径:https://developer.nvidia.com/cuda-toolkit-archive
4.选择对应的cnDNN版本
cuDNN下载:https://developer.nvidia.com/cudnn (需要注册登录后才能下载)
下载界面如下:
选择对应版本下载后,解压到本地目录,然后将bin文件添加到系统路径Path中
这里我的安装路径是:D:\Program Files\CUDNN\cuda\bin
还需要将cuDNN里的bin,include,lib文件拷贝到CUDA里面(这一步的目的是什么没搞清楚,看的别人教程)。
C:\cuda\bin\cudnn64_7.dll —> C:\Program Files\NVIDIA GPUComputing
Toolkit\CUDA\v9.1\bin
C:\cuda\include\cudnn.h —> C:\Program Files\NVIDIA GPUComputing
Toolkit\CUDA\v9.1\include
C:\cuda\lib\x64\cudnn.lib —> C:\Program Files\NVIDIA GPUComputing
Toolkit\CUDA\v9.1\lib\x64
5.选择对应的pytorch版本
pytorch下载:https://pytorch.org/get-started/previous-versions/ (选择对应操作系统和版本)
在安装较早版本pytorch的时候,可能会出现版本冲突的问题,这里删除冲突的包然后重新安装即可。
6.代码验证
import torch
a = torch.rand(2)
b = a.cuda()
print(b)
如果以上代码可以正常输出,则说明cuda已经配置好并且可以正常使用
这里特别说明一下直接打印 torch.cuda.is_available()
为True并不表示GPU可用了。最好按照上面的代码测试一下。
最后
这里最后说一下我的安装经验(惨痛教训),我前前后后安装、卸载应该有三次,耗时两天,最终安装成功。
1.首先是版本问题
一开始没有注意到版本,直接安装的CUDA版 pytorch1.4.0 CUDA 10.1
,然后为了跟pytroch匹配,又安装了CUDA10.1和cuDNN(适配cuDNN 10.1的)。然后运行代码的时候说我的驱动版本太老,于是更新驱动。更新完之后又报错:RuntimeError: CUDA error: no kernel image is available for execution on the device
,这里也百度谷歌了许多方法,解决方案很少,有说计算机算力不匹配的(这个其实也属于安装的版本跟电脑配置不匹配),也有说从github上下载pytorch源码,然后自己重新编译的,当时觉得这个比较靠谱,于是下载(总共1G左右…),下了好久…github那二十几KB的速度…,然后编译又出问题,说某个项目文件找不到,然后又是一番搜索,也没有找到好的解决方案, 果断放弃。
这我重新换了一个思路,我问了一个已经安装好的同学,问他怎么安装的,发现她安装的版本是8.0的,这让我很惊讶,因为她电脑算是新款,应该安装比较新的版本,后来询问了解到,需要安装适配电脑的版本。当时我查了一下自己的CUDA版本显示是10.1的,其他也都相匹配,当时感觉版本是对的。后来当我删掉安装的CUDA之后,再次查询,才发现自己CUDA是8.0的,应该是自己安装的新版本,显示也是新版本。但是由于最后缺少核心镜像( no kernelimage
),一直运行不成功。
2.然后是重新安装CUDA导致的conda运行异常问题
每次重装CUDA都会导致启动conda环境报一堆错误,可能是卸载的时候删除了一些conda运行需要的文件。于是又是卸载重装conda…重装大法好。可惜还得把依赖包一个个安装回去。这里也可以先把运行环境存一个备份,安装新版本后把环境拷到对应文件夹里就好(当时没想到…)。
有时候网上的教程千篇一律,而你遇到的问题又很冷门的时候,这时候不要一直去解决层出不穷的bug,反过来思考一下自己是不是在哪个简单步骤上走错了,或许突然就柳暗花明了呢。
写这个教程的原因不是把详细安装步骤罗列出来,更多的是希望能够捋清楚安装思路,以及安装需要注意的地方,还有就是分享一下自己的失败经验。
参考:
GPU,CUDA,cuDNN的理解 阅读数量:49145
Pytorch1.0+CUDA10.0+cuDNN环境配置之谈(Win 10)(这个安装步骤很详细)