[超级详细]如何在深度学习训练模型过程中使用GPU加速
我不会写代码! 2024-06-12 15:01:08 阅读 62
前言
在深度学习当中,我们训练模型通常要对模型进行反复的优化训练,仅用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)
运行结果:
总结
在安装过程最重要的是版本兼容性问题,大家可以查看官方文档。最后,大家如果有什么问题欢迎在评论区留言,我都会回复大家,帮助大家解决问题
上一篇: 基于Ascend C的FlashAttention算子性能优化最佳实践
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。