玩AI都绕不过N卡(即Nvidia显卡),N卡生态圈的AI应用又离不开CUDA和cuDNN,如果你经常使用本站打包的一键包软件,而又经常出现各种缺少cuda驱动和组件报错提示,不妨看看本篇教程,新手小白在使用AI应用前,也可以跟着操作,把运行软件前必要的环境都配置好,这样也能避免后期出现各种错误。文中有些专业术语了解下就行了,只需要知道怎么安装CUDA和cuDNN就可以了。
写在前面:
在深度学习中,我们常常要对图像数据进行处理和计算,而处理器CPU因为需要处理的事情多,并不能满足我们对图像处理和计算速度的要求,显卡GPU就是来帮助CPU来解决这个问题的,GPU特别擅长处理图像数据,而CUDA(Compute Unified Device Architecture),是显卡厂商NVIDIA推出的运算平台。CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎,安装cuda之后,可以加快GPU的运算和处理速度。
什么是显卡?
显卡(Video card,Graphics card)全称显示接口卡,又称显示适配器,是计算机最基本配置、最重要的配件之一。显卡作为电脑主机里的一个重要组成部分,是电脑进行数模信号转换的设备,承担输出显示图形的任务。显卡接在电脑主板上,它将电脑的数字信号转换成模拟信号让显示器显示出来,同时显卡还是有图像处理能力,可协助CPU工作,提高整体的运行速度。对于从事专业图形设计的人来说显卡非常重要。民用和军用显卡图形芯片供应商主要包括AMD(超微半导体)和Nvidia(英伟达)2家。现在的top500计算机,都包含显卡计算核心。在科学计算中,显卡被称为显示加速卡。
什么是显存?
也被叫做帧缓存,它的作用是用来存储显卡芯片处理过或者即将提取的渲染数据。如同计算机的内存一样,显存是用来存储要处理的图形信息的部件。
显卡、显卡驱动、CUDA之间的关系
显卡:(GPU),主流是NVIDIA的GPU,因为深度学习本身需要大量计算。GPU的并行计算能力,在过去几年里恰当地满足了深度学习的需求。AMD的GPU基本没有什么支持,可以不用考虑。
驱动:没有显卡驱动,就不能识别GPU硬件,不能调用其计算资源。但是呢,NVIDIA在Linux上的驱动安装特别麻烦,尤其对于新手简直就是噩梦。得屏蔽第三方显卡驱动。下面会给出教程。
CUDA:是显卡厂商NVIDIA推出的只能用于自家GPU的并行计算框架。只有安装这个框架才能够进行复杂的并行计算。主流的深度学习框架也都是基于CUDA进行GPU并行加速的,几乎无一例外。还有一个叫做cudnn,是针对深度卷积神经网络的加速库。
显卡驱动与cuda的关系:NVIDIA的显卡驱动器与CUDA并不是一一对应的,CUDA本质上只是一个工具包而已,所以我可以在同一个设备上安装很多个不同版本的CUDA工具包,比如可以同时安装 CUDA 9.0、CUDA 9.2、CUDA 10.0三个版本。一般情况下,我只需要安装最新版本的显卡驱动,然后根据自己的选择选择不同CUDA工具包就可以了,但是由于使用离线的CUDA总是会捆绑CUDA和驱动程序,所以在使用多个CUDA的时候就不要选择离线安装的CUDA了,否则每次都会安装不同的显卡驱动,这不太好,我们直接安装一个最新版的显卡驱动,然后在线安装不同版本的CUDA即可。
为什么GPU特别擅长处理图像数据呢?
这是因为图像上的每一个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,GPU就是用很多简单的计算单元去完成大量的计算任务,类似于纯粹的人海战术。GPU不仅可以在图像处理领域大显身手,它还被用来科学计算、密码破解、数值分析,海量数据处理(排序,Map-Reduce等),金融分析等需要大规模并行计算的领域。
查看自己自己的显卡支持的CUDA版本?
点击开始菜单,运行,输入cmd,然后黑色窗口输入 nvidia-smi 则可显示的CUDA Version当前驱动的最高支持版本,因为CUDA是向下兼容的,所以最高支持版本以下的CUDA版本都是支持的,如图,nvidia-smi显示最高版本支持为12.4,那12.4以及12.4一下的版本都是支持的。
下载与安装CUDA
第一步:到官网下载CUDA安装包,前面我们已经查看到了电脑GPU显卡所支持的CUDA版本为<=12.4,下载地址:https://developer.nvidia.com/cuda-toolkit-archive
第二步:下载完后,双击
extraction path可以不用修改,默认路径即可。cuda安装完成后,该路径下的文件就自动删除了。
一切正常,检查系统兼容性。
第三步:同意并继续后,选择自定义安装
第四步:安装组件,全部勾选,点击下一步
第五步:选择安装位置,这里建议默认安装,也可手动安装,但是要记得自己安装的位置,因为后面需要配置系统环境变量
第六步:开始准备安装,等待安装完成,这需要等待一段时间
安装完成界面如下,点击下一步,就安装完成了
查看是CUDA是否安装成功
配置完系统环境变量之后,我们就可以查看CUDA是否安装成功以及环境变量配置情况
查看安装版本:Win + R 打开cmd ,输入命令:nvcc –version,最后一行返回CUDA版本号,则代表安装成功。
在CUDA安装完之后,如果想要学习深度学习中的神经网络的话,则额外下载安装cuDNN,可帮助我们加快神经网络的运算,cuDNN是一个常见的神经网络层加速库文件,能够很大程度把加载到显卡上的网络层数据进行优化计算,而CUDA就像一个很粗重的加速库,其主要依靠的是显卡。cuDNN需要在有CUDA的基础上进行,可以在CUDA基础上加速2倍以上。
下载安装之前,这里再简要介绍几个关键概念
NVIDIA的显卡驱动器与CUDA
NVIDIA的显卡驱动程序和CUDA完全是两个不同的概念,CUDA是NVIDIA推出的用于自家GPU的并行计算框架,也就是说CUDA只能在NVIDIA的GPU上运行,而且只有当要解决的计算问题是可以大量并行计算的时候才能发挥CUDA的作用。
NVIDIA显卡驱动和CUDA工具包本身是不具有捆绑关系的,也不是一一对应的关系,CUDA本质上只是一个工具包而已,所以我可以在同一个设备上安装很多个不同版本的CUDA工具包,一般情况下,我只需要安装最新版本的显卡驱动,然后根据自己的选择选择不同CUDA工具包就可以了。
CUDA和cuDNN关系
CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。
注意:cuDNN是一个SDK,是一个专门用于神经网络的加速包,它跟我们的CUDA没有一一对应的关系,即每一个版本的CUDA可能有好几个版本的cuDNN与之对应,但一般有一个最新版本的cuDNN版本与CUDA对应更好。
cuDNN的下载与安装
第一步:官网下载cuDNN的安装包,9.X地址:https://developer.nvidia.com/cudnn-downloads 8.X地址:https://developer.nvidia.com/rdp/cudnn-archive,这里需要你注册一个账号,按照要求注册完就可以下载安装包了,这里我的CUDA安装的是11.3版本的,我就安装与我CUDA对应的cuDNN了。
第二步:下载好安装包后,利用解压软件解压出来
第三步:复制粘贴 bin、include、lib三个文件到CUDA的安装目录进行覆盖替换
cuDNN到此安装成功!