在深度学习中,我们经常要对图像数据进行处理和计算,而处理器CPU因为需要处理的事情多,并不能满足我们对图像处理和计算速度的要求,显卡GPU就是用来帮助CPU解决这个问题的,GPU特别擅长处理图像数据。
为什么GPU特别擅长处理图像数据呢?这是因为图像上的每个像素点都有被处理的需要,而且每个像素点处理的过程和方式都十分相似,GPU就是用很多简单的计算单元来完成大量的计算任务,类似于纯粹的人海战术。GPU不仅可以在图像处理领域大显身手,它还被用在科学计算、密码破解、数值分析、海量数据处理(比如排序、Map-Reduce)、金融分析等需要大规模并行计算的领域。
而CUDA(Compute Unified Device Architecture)是显卡厂商NVIDIA推出的只能用于自家GPU的并行计算架构,只有安装这个软件,才能够进行复杂的并行计算。该架构使GPU能够解决复杂的计算问题。它包含CUDA指令集架构(Instruction Set Architecture,ISA)以及GPU内部的并行计算引擎,安装CUDA之后,可以加快GPU的运算和处理速度,主流的深度学习框架也都是基于CUDA进行GPU并行加速的。
想要使用GPU加速,则需要安装CUDA,首先需要自己的计算机显卡支持CUDA的安装,也就是查看自己的计算机有没有NVIDA的独立显卡。在NVIDA官网列表(https://developer.nvidia.com/cuda-gpus)中可以查看自己的显卡型号是否包括在NVIDA列表中。
在计算机桌面上右击,在弹出的菜单中如果能找到NVIDIA控制面板,如图2-9所示,则说明该计算机配有GPU。
图2-9
打开NVIDIA控制面板窗口,可以查看NVIDIA的一些信息,包括显卡的驱动版本,通过单击“帮助”菜单,并选择“系统信息”选项,查看系统信息获取支持的CUDA版本。如图2-10所示,选择“组件”,在3D设置模块找到NVCUDA64.DLL,在该行可以看到该NVCUDA的版本,可以看到图中显示的版本是11.8。
图2-10
我们已经知道,CUDA是显卡厂商NVIDIA推出的通用并行计算架构,能利用英伟达GPU的并行计算引擎。目前已经确认系统已有支持CUDA的显卡,这时可以到NVIDIA网站(https://developer.nvidia.com/cuda-toolkit-archive)下载CUDA,如图2-11所示。注意,安装CUDA Driver时,需要与Nvidia GPU Driver的版本驱动一致,CUDA才能找到显卡。
图2-11
根据实际情况选择合适的版本,比如计算机操作系统是Windows 10,这里下载CUDA 11.8.0的本地安装包,如图2-12所示。
图2-12
接下来下载与CUDA对应版本的cuDNN,cuDNN是用于深度神经网络的GPU加速库,下载地址为https://developer.nvidia.com/rdp/cudnn-archive,页面如图2-13所示。
图2-13
下载cuDNN,需要注册英伟达开发者计划的会员账号才能下载,如图2-14所示,读者请自行注册账户,加入会员。
进入下载页面后,注意不要选择错误的版本,一定要找到对应CUDA的版本号。另外,如果使用的是Windows 64位的操作系统,那么需要对应下载x86版本的cuDNN。
cuDNN就是个压缩包,解压会生成bin、include、lib三个目录(见图2-15),里面的文件复制到CUDA安装目录(这里是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0目录)下对应的目录即可。注意,不是替换文件夹,而是将文件放入对应的文件夹中。
图2-14
图2-15
接下来安装Visual Studio 2015、2017、2019和2022支持库,这个支持库务必安装,否则后面安装PyTorch支持库会出现各种“坑”。支持库不大,有十多兆字节,安装完成后重启系统。其下载地址为https://docs.microsoft.com/zh-CN/cpp/windows/latest-supported-vc-redist?view=msvc-160,下载页面如图2-16所示。
图2-16
安装GPU版本的PyTorch稍微复杂,前提是需要安装CUDA、cuDNN并行计算框架,然后安装PyTorch。PyTorch官网(地址为https://pytorch.org)给出了匹配的版本号及安装命令,如图2-17所示。
图2-17
运行命令(Run this command)字段中的命令如下:
把此命令复制到管理员终端命令行,按回车键执行即可安装GPU版本的PyTorch。PyTorch安装好以后,执行下面的示例代码看看结果如何。
接下来,我们看CPU与GPU在模型训练时的性能差异对比图,如图2-18所示。
图2-18 (颜色参见下载资源中的相关图片文件)
可以看出,15次bathsize=128的耗时(秒)对比,GPU快得非常多,大大减少了运行时间。如果有条件的话,尽量购买大显存的GPU显卡,在深度学习训练中能节省大量的计算时间,物超所值。