前言

在深度学习当中,我们训练模型通常要对模型进行反复的优化训练,仅用CPU来进行训练的话需要花费很长时间,但是我们可以使用GPU来加速训练模型,这样就可以大大减少我们训练模型花费的时间。下图是我在训练模型过程中使用GPU加速和未使用GPU加速花费时间的对比:

由图中可以看出,使用GPU加速要比未使用GPU加速训练模型快很多。接下来我就教大家如何在在深度学习训练模型过程中使用GPU加速。

注意:以下安装步骤及命令仅支持Window环境下安装,后续我会发布其他操作系统安装教程

安装NVIDIA显卡驱动程序

首先在搜索栏中搜索设备管理器,打开后在显示适配器中找到我们电脑显卡版本

然后我们就可以在NVIDIA官方网站中找到自己电脑显卡对应的驱动程序版本进行安装

NVIDIA显卡驱动程序下载链接

找到自己显卡对应版本进行下载显卡驱动程序

搜索后找到对应版本下载

下载之后进行安装

这里我们选择默认位置安装,点击OK就可以了,其他后续步骤比较简单,点击下一步安装就可以了,大家遇到什么问题可以参考以下链接查看具体安装步骤:
【Windows】安装NVIDIA驱动

最后,我们打开命令提示符输入nvidia-smi指令查看电脑显卡驱动信息

nvidia-smi

看到如下信息就证明NVIDIA显卡驱动程序已经安装成功

安装CUDA和cuDNN

简介

CUDA和cuDNN都是由NVIDIA推出的深度学习开发工具。

CUDA是Compute Unified Device Architecture的缩写,是一个由NVIDIA制定的通用并行计算平台和编程模型,允许开发人员使用C++、Fortran和Python等编程语言在NVIDIA GPU上运行代码。CUDA Toolkit是基于CUDA平台的开发工具包,包括了GPU加速的库、调试和优化工具、C/C++编译器以及运行时库等。

cuDNN全称为CUDA Deep Neural Network library,是一个高性能的GPU加速深度学习库,支持包括卷积神经网络、循环神经网络等多种神经网络模型,并且可以与流行的深度学习框架如TensorFlow、PyTorch和Caffe2等进行集成。cuDNN提供高度优化的实现,包括卷积、池化、标准化和激活等常用操作,通过使用cuDNN,可以加速深度学习任务的处理速度。

检查版本兼容性

版本兼容性对于GPU加速是非常重要的,因为版本兼容性问题我就安装卸载了很多次才解决。

最后我在TensorFlow和NVIDIA官方文档中找到了对应GPU、CUDA、cuDNN和Python版本,大家可以参考下方链接进行版本的选择:

TensorFlow官方文档
NVIDIA官方文档

在NVIDIA官方文档中,可以找到每个CUDA版本所支持的GPU型号列表。在页面的左侧菜单中,选择所需的CUDA版本,然后单击“Supported Operating Systems”链接,可以查看该版本所支持的操作系统。单击“Supported CUDA GPUs”链接,可以查看该版本所支持的GPU型号列表。

大家也可以根据这张表选择CUDA、cuDNN、Python以及tensorflow-gpu版本进行安装

博主各个版本对应信息: NVIDIA GeForce GTX 1080、NVIDIA GeForce GTX 1650、Python3.9.0、CUDA 11.2.0、cuDNN 8.1.0、tensorflow-gpu 2.6.0

安装CUDA

CUDA 11.2的下载链接:CUDA 11.2.0

首先选择CUDA对应系统版本信息


最后点击下载

下载完成之后点击exe文件进行安装

这里我们选择默认位置进行安装:

点击OK等待即可:

之后进入CUDA安装界面:

系统检查——>同意许可协议——>选择自定义选项——>安装完成

在安装过程中需要注意的是选择自定义安装选项:

全部勾选相关配置:

最后安装完成点击关闭即可:

具体再无其它需要注意的地方,若遇到其他问题可参考相关链接或评论区留言,我会一一解答

CUDA和cuDNN安装教程

注意:在安装过程中已自动添加环境变量;安装完成之后需要重启电脑
默认安装路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2

重启电脑之后在命令提示符中输入nvcc -V命令查看CUDA是否安装成功:

显示以上信息证明CUDA安装成功

安装cuDNN

cuDNN下载链接

点击下载链接后可找到对应版本进行下载,下载之前需要注册登录NVIDIA开发者计划,填写个人基本信息即可。

下面以cuDNN 8.1.0为例进行下载安装

下载完成之后解压得到cuda文件夹

打开该文件夹可以看到有bin、include、lib三个文件夹

找到之前CUDA 11.2.0安装路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2 并打开该文件夹,可以找到与之对应的三个文件夹

将cudnn中的三个文件夹复制到cuda对应的文件夹当中

可以将对应文件夹中内容全选,复制粘贴到cuda文件夹中即可

配置环境变量

右击此电脑然后点击属性,然后点击高级系统设置

点击环境变量,在系统环境变量中找到path环境变量,点击进入

将以下内容添加到path环境变量当中即可

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvpC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include

一般前面两个环境变量在安装CUDA时已经自动配置好,我们只需要将后面两个添加进去即可

不同版本的cuDNN修改版本号即可

最后可以在path中看到这四个位置证明环境变量配置成功

验证cuDNN是否安装成功

打开终端命令提示符(win+r输入cmd)
进入到CUDA文件路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\demo_suite

cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\demo_suite

执行:deviceQuery.exe,出现如下效果图:

继续执行:bandwidthTest.exe,出现如下效果图:

最后cuDNN安装成功

验证TensorFlow可用GPU

安装python3.9.0

python3.9.0下载链接

点击链接下载安装即可,安装完成之后在命令提示符输入:python 可查看当前python版本

输入:exit() 退出python编译环境

安装tensorflow-gpu 2.6.0

在命令提示符输入:pip install tensorflow-gpu 2.6.0 等待安装完成即可

若出现什么问题可在评论区留言

最后在终端输入:pip list 可查看到安装的tensorflow-gpu 2.6.0

验证可用GPU

可在终端进入python编译环境或其他编译器中输入以下代码验证可用GPU

import tensorflow as tfprint("Num GPUs Available: ", len(tf.config.experimental.list_physical_devices('GPU')))

只要输出结果>0,证明存在可用gpu

代码测试

在编辑器中创建test_model.py文件,输入以下代码可显示GPU加速效果

import tensorflow as tf# 列出可用的 GPU 设备print(tf.config.list_physical_devices('GPU'))# 设置 TensorFlow 使用 GPU 进行计算gpu_devices = tf.config.list_physical_devices('GPU')if gpu_devices:for device in gpu_devices:tf.config.experimental.set_memory_growth(device, True)# 加载数据集mnist = tf.keras.datasets.mnist(x_train, y_train), (x_test, y_test) = mnist.load_data()x_train, x_test = x_train / 255.0, x_test / 255.0# 定义模型model = tf.keras.models.Sequential([tf.keras.layers.Flatten(input_shape=(28, 28)),tf.keras.layers.Dense(128, activation='relu'),tf.keras.layers.Dropout(0.2),tf.keras.layers.Dense(10)])# 编译模型loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)model.compile(optimizer='adam', loss=loss_fn, metrics=['accuracy'])# 训练模型model.fit(x_train, y_train, epochs=5)# 评估模型model.evaluate(x_test, y_test, verbose=2)

运行结果:

总结

在安装过程最重要的是版本兼容性问题,大家可以查看官方文档。最后,大家如果有什么问题欢迎在评论区留言,我都会回复大家,帮助大家解决问题