深度学习环境配置

深度学习环境配置

之前一段时间,一直在用CPU跑算法训练自己的模型,今天突然意识到是支持GPU的啊,又快又省资源,不用它不是傻吗…🙄

下面记录一下如何配置TensorFlow-gpu + CUDA + Keras实现GPU训练深度学习算法的模型。

一些简介

关于TensorFlow

TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。

关于Keras

Keras是用Python编写的高级神经网络API,能够在TensorFlow,CNTKTheano之上运行。它的开发着眼于实现快速实验。能够以最小的延迟将想法付诸实践是进行良好研究的关键。

  • 允许轻松快速地进行原型制作(通过用户友好性,模块化和可扩展性)。
  • 支持卷积网络和循环网络,以及两者的组合。
  • 在CPU和GPU上无缝运行。

关于CUDA

CUDA(ComputeUnified Device Architecture),是显卡厂商NVIDIA推出的运算平台。 CUDA是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。

关于cuDNN

NVIDIA cuDNN是用于深度神经网络的GPU加速库。它强调性能、易用性和低内存开销。NVIDIA cuDNN可以集成到更高级别的机器学习框架中,如谷歌的Tensorflow、加州大学伯克利分校的流行caffe软件。简单的插入式设计可以让开发人员专注于设计和实现神经网络模型,而不是简单调整性能,同时还可以在GPU上实现高性能现代并行计算。

关于CUDA + cuDNN的组合:

CUDA看作是一个工作台,上面配有很多工具,如锤子、螺丝刀等。cuDNN是基于CUDA的深度学习GPU加速库,有了它才能在GPU上完成深度学习的计算。它就相当于工作的工具,比如它就是个扳手。但是CUDA这个工作台买来的时候,并没有送扳手。想要在CUDA上运行深度神经网络,就要安装cuDNN,就像你想要拧个螺帽就要把扳手买回来。这样才能使GPU进行深度神经网络的工作,工作速度相较CPU快很多。

环境配置

通过今天踩的坑,提醒近期如果需要用tensorflow+cuda实现GPU运算的话,最好安装tensorflow-gpu-2.0.0duca-10.0,或者更低的版本,具体可以参考官网各版本对应的信息。

安装tensorflow

python下直接转tensorflow-gpu的库即可,哦!python3的版本一定要在3.7之下哦,还有一定要64bit的…

python3 -m pip install tensorflow-gpu==2.0.0
# 或者用国内镜像源加速安装
python3 -m pip install tensorflow-gpu==2.0.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

安装Keras

python直接装库

python3 -m pip install keras

安装配置DUCA

这里装的tensorflow是2.0.0版本,因此duca需要10.0版本,可以去官网下载v10.0,选择exe(local),可以直接完整化安装。

下载之后运行安装程序,如果不想麻烦直接默认简易安装即可,安装完毕之后可以测试一下,可能反馈如下信息:

>>> import tensorflow
2020-04-07 16:00:12.823507: W tensorflow/stream_executor/platform/default/dso_loader.cc:55] Could not load dynamic library 'cudart64_100.dll'; dlerror: cudart64_101.dll not found

也就是说缺少了cudart64_100.dll这个动态链接库,可以去这里下载,下载完之后,将解压得到的文件放入C:\Windows\System32目录下,不过配置并未完成,因为cuDNN还未安装配置。

配置cuDNN

官网下载与duca对应版本的cuDNN,不过首先需要注册、登录、完成一个小调查问卷,也不复杂的。

下载完毕之后,将压缩包里的内容放入CUDA安装的目录C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0,如图:

同时需要将cudnn64_7.dll放入C:\Windows\System32下,不然可能仍然找不到该dll。

此时再去测试,应该就没问题了,可以用如下语句测试:

>>> a = tf.test.is_built_with_cuda()  # 判断CUDA是否可以用
>>> b = tf.test.is_gpu_available(
... cuda_only=False,
... min_cuda_compute_capability=None
... ) # 判断GPU是否可以用

成功配置的效果如下图:

反馈如上信息,则表明配置已经成功,再次跑算法就是GPU了,又快又拉风~

问题及解决

在自己配置的时候,远远没有上面说的这么简单,起初直接默认装了tensorflow,结果是最新版2.1.0的,查了一下,也就安装了cuda10.2的版本,结果报错找不到cudart64_100.dll,去上面提供的链接库的下载地址找到安装就行了,然而问题并没有那么简单,在配置好cuDNN之后,用前面的方法进行测试,一直报错:

cudaGetDevice() failed. Status: cudaGetErrorString symbol not found.

这是什么问题呢?

网上还有人说是NVIDIA驱动版本的问题,在控制面板看了一下,我的是441,已经满足要求了…

有人说tensorflow-2.1.0要和duca-10.1配合着用,结果还是很不OK…应该是新版本存在的问题,毕竟连tensorflow目前都并未支持python3的各个版本…

最后,姑且直接将tensorflow换成了tensorflow-2.0.0的版本,也就是前面安装步骤里讲到的,然后再配合安装duca-10.0进行配置,终于成功解决了问题。😎

希望这篇文章能够帮助到你

Comments


:D 一言句子获取中...

Loading...Wait a Minute!