关键词:tensorflow-gpu,cuda,cudnn,环境搭建
本文是关于tensorflow-gpu在windows系统下的环境搭建。GPU相比较于CPU更加适合深度学习的计算。
深度学习和神经网络的每个计算任务都是独立于其他计算的,任何计算都不依赖于任何其他计算的结果,可以采用高度并行的方式进行计算。而GPU相比于CPU拥有更多独立的大吞吐量计算通道,较少的控制单元使其不会受到计算以外的更多任务的干扰,拥有比CPU更纯粹的计算环境,所以深度学习和神经网络模型在GPU的加持下会更高效地完成计算任务。
安装tensorflow-gpu之前,还需要搞定硬件,cuda和cudnn这三样。硬件指PC机上需安装有相应的图形处理单元(GPU);cuda是英伟达(NVIDIA)公司开发的一款通用并行计算架构,可使GPU解决复杂的计算问题;cudnn是是用于深度神经网络的GPU加速库。可以这样理解:cuda作为软件需要硬件支持自不必说,而cudnn是建立在cuda之上,针对于深度学习的一个库,tensorflow和pytorch等深度学习框架需要cudnn库的支持才可以运行。
首先需要确认自己的硬件可以安装cuda,并查看驱动对应的cuda版本。
1)在运行中输入控制面板打开,将右上角查看方式改为大图标
2)打开NVIDIA控制面板
3)标题栏点击帮助——>系统信息,项目下面可以看到自己的GPU型号。我的是笔记本,型号是GeForce MX150。想查看自己的GPU是不是支持cuda可以到这个网址查看:https://developer.nvidia.com/cuda-gpus
可能是笔记本的原因,这里的型号没有我要找的,但官网上MX150显示是支持cuda的,因此就可以继续安装了。
4)点击组件,在NVCUDA.DLL之后可看到文件版本和产品名称。本机的驱动是cuda9.2.217,可以安装的cuda版本是9.2以下的。这里我直接对应的安装了cuda9.2。驱动版本较低的话可在设备管理器中更新一下显卡驱动。
如果硬件和驱动都支持,下一步就可以安装cuda了。
1)安装。下载地址:https://developer.nvidia.com/cuda-92-download-archive,下载network版本就可以。下载前需要注册,比较麻烦,也可选择从网盘下载:https://pan.baidu.com/s/1wzok1F28bQq3KX8UJ5UNQw,提取码:djj9
打开下载的exe文件根据提示一步步安装,直至安装完成。注意选项阶段选择自定义安装,只安装CUDA即可,否则易出现安装不成功的现象。
2)验证。之后需要验证是否安装成功,运行中打开cmd,输入nvcc -V
可查看当前cuda toolkit的版本。
cuda提供了两个运行案例可供验证是否成功,官网给出的位置在:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\bin\win64\Release
存在两个可执行文件deviceQuery和bandwidthTest。我在自己的电脑上没有找到,但是在以下位置找到了这两个文件的源文件和项目文件:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v9.2\1_Utilities
用VS打开项目文件deviceQuery_vs2010和bandwidthTest_vs2010,两个项目均为控制台项目,直接运行会出现闪退现象。可在main函数最后一个语句exit()处打断点,运行后出现以下界面代表CUDA安装成功。
cudnn7.2.1的下载地址为:https://developer.nvidia.com/rdp/cudnn-download。同样需要注册,也可以选择从上述网盘下载。cudnn7.2.1是一个库文件,因此只需要添加到cuda的安装路径中即可。压缩包解压后,
1) 复制 cuda\bin\cudnn64_7.dll 至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin。
2)复制 cuda\ include\cudnn.h 至C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\include。
3)复制 cuda\lib\x64\cudnn.lib 至 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\lib\x64。
复制完成后查看系统的环境变量。右键此电脑==>属性==>左侧高级系统设置==>环境变量==>查看是否存在以下系统环境变量:
Variable Name: CUDA_PATH
Variable Value: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0
若存在则表明安装成功。
tensorflow-gpu的版本与cuda和cudnn有较严格的对应关系,经过测试的版本对应关系如下:
其中的cuda和cudnn版本比较粗糙,没有给具体的版本号。本人用pip测试安装了1.12.0及1.11.0都无法正常运行,说明直接安装的版本不适合现有的cuda9.2。此时可以通过源码构建可用的tensorflow,具体步骤见如下网址:https://tensorflow.google.cn/install/source_windows。
也可以从GitHub上选择构建好的tensorflow-gpu文件,下载到本地后再用pip安装。
tensorflow下载地址:https://github.com/fo40225/tensorflow-windows-wheel。本人选择了1.10.0\py26\GPU\cuda92cudnn72sse2版本。
下载到本地后,打开cmd,使用cd命令找到下载的.whl文件所在的位置。输入
pip tensorflow_gpu-1.10.0-cp36-cp36m-win_amd64.whl
等待安装即可。
使用pip安装时要注意,如果系统中存在多个python版本,要首先确定自己的默认版本与tensorflow是对应的。修改默认版本可以通过更改环境变量中的Path变量。
安装完成后,再cmd中输入如下指令,得到计算结果证明安装成功。
import tensorflow as tf
sess = tf.Session()
a = tf.constant(1)
b = tf.constant(2)
print(sess.run(a+b))
参考链接:
1)知乎专栏:为什么深度学习和神经网络需要GPU?https://zhuanlan.zhihu.com/p/106669828