技术博客

越是喧闹,越是孤独。越是寂寞,越是丰富
The more noisy, the more lonely. The more lonely, the more rich

越是喧闹,越是孤独。越是寂寞,越是丰富
The more noisy, the more lonely. The more lonely, the more rich

技术博客


搭建GPU环境用于深度学习

2022-08-26 Mendel
机器学习

 为了试一下在GPU上进行模型训练能比CPU快多少

NVIDIA Geforce的GPU是非常适合做深度学习的,RTX3070也是一个很具备性价比的显卡。详见HOML(《Hands-On Machine Learning with Scikit-Learn, Keras & TensorFlow)中关于显卡选购的一个链接:https://homl.info/66

接下来我们就一步一步开始吧!



01

安装CUDA


CUDA,Compute Unified Device Architecture,是 NVIDIA 发明的一种并行计算平台和编程模型。它通过利用图形处理器 (GPU) 的处理能力,可大幅提升计算性能。


在Nvidia CUDA的官网(https://developer.nvidia.com/cuda-downloads选择合适的版本后下载即可,约2.5G,目前的最新版是11.7。下载后按照提示安装即可。





02


安装cuDNN


The NVIDIA CUDA® Deep Neural Network library (cuDNN) is a GPU-accelerated library of primitives for deep neural networks. cuDNN provides highly tuned implementations for standard routines such as forward and backward convolution, pooling, normalization, and activation layers.


cuDNN正常的下载链接是:https://developer.nvidia.com/cudnn,但是通过此页面下载需要登录NVIDIA并注册为开发者,填写很多信息,比较繁琐。可以通过访问 https://developer.nvidia.com/rdp/cudnn-archive,通过右键复制链接地址后复制到迅雷中下载的方式绕过登录直接下载。


这里下载的是最新版8.4.1,下载完成后,解压即可,不需要安装。但是为了之后配置环境变量,这里将其解压到C:\\tools目录下,与后面提到的Tensorflow文档中的示例路径保持一致。




03


配置环境变量


按照tensorflow配置GPU的官方文档的介绍 (https://www.tensorflow.org/install/gpu),配置环境变量。


Win11的环境变量配置,具备了可视化编辑功能,可以方便的增加/删除/移动项目,这里将增加下面四项到PATH中:

  • C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\bin
  • C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\extras\\CUPTI\\lib64
  • C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.7\\include
  • C:\\tools\\cudnn-windows-x86_64-8.4.1.50_cuda11.6-archive\\bin



注意:环境变量修改后如果要重新运行测试是否生效,需要重启Console或者Pycharm后再试。



04


调试运行


测试发现,程序已经能够检测到GPU了,并尝试执行训练,但是随即运行结束且没有报错,只提示 “Process finished with exit code -1073740791

这是因为pycharm的控制台有时不打印错误日志,需要用系统console或pycharm中的console去执行。之后就发现了错误 “Could not locate zlibwapi.dll,是因为缺少某些库文件。可以从这个链接 https://static.mengchen.cc/resources/zlibwapi.zip  可下载该文件。解压后也放在 C:\\tools下面,并添加到环境变量中,确保zlibwapi.dll和zlibwapi.lib可以被访问到即可。

最后顺利执行!通过对MNIST数据集进行训练对比,使用gpu之前,每个epoch需要9秒,使用gpu后只需1秒,提升了近10倍的效率,后面还需要更多的案例来测试真实的性能差距。


参考资料
[1] https://blog.csdn.net/weixin_40392957/article/details/80207366
[2] https://blog.csdn.net/ytomc/article/details/124021170
[3] https://blog.csdn.net/qq_44224801/article/details/125525721