TensorFlow可以同时支持CPU和GPU上运行,CPU版本具有很强的通用性,它对硬件的要求不高、安装方便,适合刚接触深度学习的开发者,但是它的数据处理效果没有GPU版本好。GPU版本面向的是大规模无相互联系的数据,具有更大的计算量和吞吐量,所以更多专业深度学习开发者或公司都会选择使用GPU版本。下面进行TensorFlow-GPU版本的Windows和Linux环境的安装介绍。需要安装的软件如下,Windows环境:TensorFlow-GPU 1.8.0+Python 3.5+CUDA 9.0+ cudnn-9.0-windows10-x64-v7.4。Linux/Ubuntu16.04环境:TensorFlow +Python3.6.5 +cuda-9.0 +cuDNN7.0.5_for_cuda9.0。
在安装CUDA之前,首先要先确认自己电脑的GPU是否支持cuda,一般显卡在GeForce 410M以上的都可以,然后确认在系统中布置Python环境(具体布置Python环境参考2.1.1)。
CUDA版本、cuDNN版本、TensorFlow版本应一一对应,我们需要安装TensorFlow-GPU 1.8.0,所以我们这里使用CUDA 9.0。首先下载CUDA安装包,可以在官网上面选择对应的CUDA 9.0安装包(https://developer.nvidia.com/cuda-90-download-archive ),如图5下载完成之后打开安装包进行安装:系统检查->许可协议->选项自定义(在CUDA选项中只需要Development、Runtime、Documentation、Samples,其他的勾选会导致安装错误)如图6->安装完成。
图5 CUDA版本选择页面
图6 CUDA自定义界面
(1)第一步我们要做的是安装NVidia驱动,并安装相关的依赖包,使用如下命令:
# 查看系统推荐的Nvidia driver
$ ubuntu-drivers devices
# 安装驱动
$ ubuntu-drivers autoinstall
# 安装依赖包
$ sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libfreeimage3 libfreeimage-dev
如果原先N卡上有驱动的话需要卸载(可选):
$ sudo chmod +x *.run
$ sudo ./NVIDIA-Linux-x86_64-384.59.run –uninstall
# 检测是否安装成功,出现GPU信息说明成功
$ nvidia-smi
(2)很重要的一步,禁用Nouveau驱动,否则会影响后面的操作:
# 打开文本
$ sudo gedit /etc/modprobe.d/blacklist.conf
# 打开文本之后在末尾加入下面的命令
$ blacklist nouveau
$ options nouveau modeset=0
# 启动更改
$ sudo update-initramfs -u
# 重启之后在终端输入如下命令,没有输出则禁用Nouveau成功
$ lsmod | grep nouveau
(3)安装CUDA9.0
在官网(https://developer.nvidia.com/cuda-90-download-archive?target_os=Linux)下载对应版本的CUDA文件,如图7:
图7 CUDA选项页面
需要下载三个文件:
cuda_9.0.176_384.81_linux.run
cuda_9.0.176.1_linux.run
cuda_9.0.176.2_linux.run
# 在终端进入文件所在的目录使用如下命令安装
$ sudo chmod +x cuda_9.0.176_384.81_linux.run
$ sudo chmod +x cuda_9.0.176.1_linux.run
$ sudo chmod +x cuda_9.0.176.2_linux.run
$ ./cuda_9.0.176_384.81_linux.run --override
$ ./cuda_9.0.176.1_linux.run
$ ./cuda_9.0.176.2_linux.run
(4)测试CUDA
测试需要使用gcc和g++版本为6.0以下进行编译否则会出错,系统自带的版本比需要的版本高,所以将版本降为5.0
$ sudo apt install gcc-5 g++-5
$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
# 将CUDA设置在环境变量中
$ vim ~/.bashrc
在文本末尾加入
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64:/usr/ local/cuda/ extras/CPUTI
/lib64
export CUDA_HOME=/usr/local/cuda-9.0/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME
# 开始测试
$ cd ~/NVIDIA_CUDA-9.0_Samples/5_Simulations/fluidsGL
$ sudo make clean && make
$ ./fluidsGL
$ sudo apt-get install libcufft9.1
出现如图8情况则CUDA安装成功
图8 CUDA测试结果
安装cuDNN库
cuDNN压缩包下载需要在官网上下载https://developer.nvidia.com/cudnn,找到cudnn-9.0-windows10-x64-v7.4版本,下载解压之后将包中的三个文件夹bin、include、lib分别拷贝到CUDA默认安装路径的CUDA文件夹下,CUDA的默认安装路径为C:\Program Files\NVIDIA GPU Computing Toolkit,放在CUDA文件目录中的bin、include、lib\x64三个文件夹下,如图9、图10:
图9 cuDNN压缩包文件
图10 CUDA文件目录
完成cuDNN的安装之后,接下来就是安装TensorFlow。TensorFlow的安装很简单,可以直接使用Python3.5中的pip命令进行安装:
$ pip3 install –upgrade tensorflow-gpu==1.8.0
图11 TensorFlow安装
在官网(https://developer.nvidia.com/rdp/cudnn-archive)下cuDNN7.0.5_for_cuda9.0对用版本,之后进行解压安装。
(1)解压文件
$ tar -zxvf cudnn-9.0-linux-x64-v7.1.tgz
(2)移动文件到CUDA目录下
$ sudo cp -P cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
$ sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include/
(3)更改文件权限
$ sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
设置完成
(4)TensorFlow-GPU 1.8 pip安装
$ pip install --upgrade tensorflow-gpu
测试GPU环境
安装完成之后需要进行环境测试,首先在CMD中输入python进入python编译环境,然后通过下面的代码进行测试TensorFlow是否正常安装:
>>> import tensorflow as tf
>>> a = tf.test.is_built_with_cuda() # 判断CUDA是否可以用
>>> b = tf.test.is_gpu_available(
cuda_only=False,
min_cuda_compute_capability=None
) # 判断GPU是否可以用
>>> print(a)
>>>print(b)
如果输出结果为:
Ture
Ture
说明CUDA、TensorFlow、GPU都可用
图12 TensorFlow-GPU环境测试
在终端输入Python,进入Python编译环境,之后输入命令
>>>from tensorflow.python.client import device_lib
>>>device_lib.list_local_devices()
出现GPU的类型和相关信息说明安装成功。