Tensorflow环境搭建
本章主要介绍在几个主要的平台上,如何安装Tensorflow,以及简单的运行测试。
1 安装环境
目前TensorFlow社区推荐的环境是Ubuntu, 但是TensorFlow同时支持Mac,Windows上的安装部署。
因为深度学习计算过程,大量的操作是向量和矩阵的计算,而GPU在向量和矩阵计算方面比CPU有一个数量级的速度提升,所以深度学习在GPU上运算效率更高。
本次在 Ubuntu 16.04.1 LTS 测试
# 可以显示服务器信息,测速 wget -qO- bench.sh | bash
---------------------------------------------------------------------- CPU model : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz Number of cores : 40 CPU frequency : 1200.031 MHz Total size of Disk : 15120.4 GB (22.2 GB Used) Total amount of Mem : 257851 MB (632 MB Used) Total amount of Swap : 7812 MB (0 MB Used) System uptime : 8 days, 1 hour 6 min Load average : 0.00, 0.00, 0.00 OS : Ubuntu 16.04.1 LTS Arch : x86_64 (64 Bit) Kernel : 4.4.0-31-generic ----------------------------------------------------------------------
1.1 CUDA简介
显卡厂商NVIDIA推出的运算平台CUDA(Compute Unified Device Architecture),是一种通用的并行计算架构,该架构使GPU能够解决复杂的计算问题,它包含了CUDA指令集以及GPU内部的并行计算引擎。提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。程序开发人员通过C语言,利用CUDA的指令接口,就可以编写CUDA架构的程序。
1.2 CuDNN简介
CuDNN的全称是CUDA Deep Neural Network library,CuDNN是专门针对深度学习框架设计的一套GPU计算加速方案,最新版本的CuDNN提供了对深度神经网络中的向前向后的卷积,池化,以及RNN的性能优化。目前大部分深度学习框架都支持CuDNN。
目前包括TensorFlow在内的大部分深度学习框架,都支持CUDA。所以,为了让我们的深度神经网络的程序在TensorFlow上跑的更加好,推荐配置至少一块支持CUDA和CuDNN的NVIDIA的显卡。
2 TensorFlow的安装
Tensorflow的Python语言API支持Python2.7和Python3.3以上的版本。GUP版本推荐使用Cuda Toolkit 8.0和CuDNN v5.版本,Cuda和CuDNN的其他版本也支持,不过需要自己编译源代码的方式安装。
2.1 通过pip安装TensorFlow
pip是用来安装和管理Python包的管理工具。TensorFlow可以很方便的通过Pip来安装。
首先介绍pip在各个平台的安装方法。
2.1.1 安装Pip
在安装Pip之前请先自行安装好Python。
在Ubuntu/Linux系统上安装pip
#python2.7上安装pip $ sudo apt-get install python-pip python-dev #python3.5上安装pip $ sudo apt-get install python3-pip
在非root用户上安装pip 查看详情
wget https://bootstrap.pypa.io/get-pip.py python get-pip.py --user export PATH=~/.local/bin:$PATH
在Mac系统上安装pip
$ sudo easy_install pip $ sudo easy_install --upgrade six
在Windows系统上安装ip
# 去Python官网下载pip https://pypi.python.org/pypi/pip#downloads #解压文件,通过命令行安装pip > python setup.py install # 设置环境变量 在Windows的环境变量的PATH变量的最后添加"\Python安装目录\Scripts"
2.1.2 如何通过pip安装
Tensorflow已经把最新版本的安装程序上传到了Pypi,所以我们可以通过最简单的方式来安装TensorFlow。 (要求pip版本在8.1版本或者更高)
安装CPU版本的TensorFlow
#Python2.7 sudo pip install tensorflow #Python3.5 sudo pip3 install tensorflow
安装支持GUP版本的TensorFlow
#Python2.7 sudo pip install tensorflow-gpu #Python3.5 sudo pip3 install tensorflow-gpu
注意:目前在Windows上只支持64位的Python3.5版本。TensorFlow在Windows上依赖MSVCP140.DLL,需要提前安装Visual C++ 2015 redistributable (x64 version),并且将MSVCP140.DLL添加到环境变量PATH里。
在Windows系统上安装CPU版本(0.12版本)
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/cpu/tensorflow-0.12.0-cp35-cp35m-win_amd64.whl
在Windows系统上安装GPU版本(0.12版本)
C:\> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.0-cp35-cp35m-win_amd64.whl
2.2 源码编译安装TensorFlow
有时候我们需要单独自定义一下TensorFlow的安装,比如我们的cuda是7.5版本的,这个时候我们可能需要自己编译源码进行安装。(这里只介绍在Ubuntu系统上)
2.2.1 从git上下载源码:
git clone https://github.com/tensorflow/tensorflow
2.2.2 安装Bazel
跳过这个部分
2.2.3 编译TensorFlow
#在过程中会进行一些参数路径选择,根据需要自己配置 cd tensorflow ./configure #添加--config=cuda表示GPU版本 bazel build -c opt --config=cuda --define=use_fast_cpp_protos=true //tensorflow/tools/pip_package:build_pip_package #编译完的whl文件会放到/tmp/tensorflow_pkg目录 bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg #安装编译好的TensorFlow sudo pip install --upgrade /tmp/tensorflow_pkg/tensorflow-0.12*.whl
注意:编译安装过程中可能出现一些其他的依赖需要手动安装
#根据运行出错的提示可能需要安装funcsigs和pbr sudo pip install funcsigs sudo pip install pbr
3 Cuda和CuDNN安装
如果我们要使用TensorFlow的GPU版本的话,我们还需要安装Cuda和CuDNN库。
3.1 NVIDIA驱动安装
驱动下载地址:http://www.nvidia.com/download/driverResults.aspx/106780/en-us
驱动安装
$ sudo chmod +x NVIDIA-Linux-x86_64-367.44.run $ ./NVIDIA-Linux-x86_64-367.44.run
3.2 Cuda安装
根据自己的系统选择不同版本的Cuda下载安装。
下载地址: https://developer.nvidia.com/cuda-downloads
安装过程会提示一些选项,需要注意的是,我们在2.3.1已经安装了NVIDIA的驱动,所以在提示是否需要安装NVIDIA Accelerated Graphics Driver的时候选择n
选择参考如下:请先阅读完许可文件,一下是非root 安装步骤
----------------- Do you accept the previously read EULA? accept/decline/quit: accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 384.81? (y)es/(n)o/(q)uit: n Install the CUDA 9.0 Toolkit? (y)es/(n)o/(q)uit: y Enter Toolkit Location [ default is /usr/local/cuda-9.0 ]: /home/acesheep/cuda-9.0 Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y /usr/local is not writable. Do you wish to run the installation with 'sudo'? (y)es/(n)o: n sudo permissions are required to create the symbolic link. Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: n Install the CUDA 9.0 Samples? (y)es/(n)o/(q)uit: y Enter CUDA Samples Location [ default is /home/acesheep ]: Installing the CUDA Toolkit in /home/acesheep/cuda-9.0 ... Installing the CUDA Samples in /home/acesheep ... Copying samples to /home/acesheep/NVIDIA_CUDA-9.0_Samples now... Finished copying samples.
安装成功后,提示我们需要把路径添加到环境变量里
Please make sure that - PATH includes /home/acesheep/cuda-9.0/bin - LD_LIBRARY_PATH includes /home/acesheep/cuda-9.0/lib64, or, add /home/acesheep/cuda-9.0/lib64 to /etc/ld.so.conf and run ldconfig as root
在/etc/profile或者~/.bashrc中添加如下内容:
export PATH=/home/acesheep/cuda-9.0/bin:$PATH export LD_LIBRARY_PATH=/home/acesheep/cuda-9.0/lib64/:$LD_LIBRARY_PATH #然后执行 source /etc/profile 或者 source ~/.bashrc
3.3 CuDNN安装
根据自己的系统环境和Cuda的版本,选择下载CuDNN
下载地址 https://developer.nvidia.com/rdp/cudnn-download
选择参考如下:
#以CuDNN的v7.1版本,Cuda 9.0为例 cp cudnn-9.0-linux-x64-v7.1.solitairetheme8 cudnn-9.0-linux-x64-v7.1.tgz >>$ tar xvf cudnn-9.0-linux-x64-v7.1.tgz cuda/include/cudnn.h cuda/NVIDIA_SLA_cuDNN_Support.txt cuda/lib64/libcudnn.so cuda/lib64/libcudnn.so.7 cuda/lib64/libcudnn.so.7.1.2 cuda/lib64/libcudnn_static.a
设置环境变量
#编辑/etc/profile或者~/.bashrc文件,在末尾添加如下内容(根据自己的安装路径和版本请自行修改对应内容) export CUDA_HOME=/home/acesheep/cuda-9.0 export LD_LIBRARY_PATH="$HOME/cuda/lib64/:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$CUDA_HOME/lib64/:$LD_LIBRARY_PATH" export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$CUDA_HOME/lib" export PATH="$CUDA_HOME/bin:$PATH" #然后执行 source /etc/profile 或者 source ~/.bashrc
安装完成之后,让我们来测试一下CUDA,运行:
nvidia-smi
结果如下:
Thu Mar 29 15:55:46 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 384.111 Driver Version: 384.111 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 TITAN Xp Off | 00000000:04:00.0 Off | N/A | | 23% 28C P0 59W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 TITAN Xp Off | 00000000:05:00.0 Off | N/A | | 23% 29C P0 60W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 TITAN Xp Off | 00000000:08:00.0 Off | N/A | | 23% 33C P0 61W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 3 TITAN Xp Off | 00000000:09:00.0 Off | N/A | | 23% 35C P0 62W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 4 TITAN Xp Off | 00000000:85:00.0 Off | N/A | | 23% 30C P0 60W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 5 TITAN Xp Off | 00000000:86:00.0 Off | N/A | | 23% 35C P0 60W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 6 TITAN Xp Off | 00000000:89:00.0 Off | N/A | | 23% 30C P0 60W / 250W | 0MiB / 12189MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 7 TITAN Xp Off | 00000000:8A:00.0 Off | N/A | | 23% 29C P0 59W / 250W | 0MiB / 12189MiB | 3% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | No running processes found | +-----------------------------------------------------------------------------+
说明NVIDIA的驱动和cuda已经安装成功了。
上面的显示表示本机有8个GPU,GPU核心GeForce GTX TITAN Xp,每个GPU有12G显存,因为没有在上面跑任何程序,所以目前GPU显存利用了0M,GPU利用率0%。
4 安装测试
好,如果顺利的话,到这里我们已经成功安装好了TensorFlow,那么让我简单测试一下安装是否成功。
$ python ... >>> import tensorflow as tf >>> print(tf.__version__) 1.6.0
上面这段代码,正常运行会打印出来TensorFlow的版本号,这里是“1.6.0”
我们再跑一个简单的计算,看看tensorflow是否运行正常。输入如下代码:
$ python ... >>> import tensorflow as tf >>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() >>> print(sess.run(hello)) Hello, TensorFlow! >>> a = tf.constant(1) >>> b = tf.constant(2) >>> c=sess.run(a + b) >>> print("1+2= %d" % c) 1+2= 3 >>>
如果你的这段代码可以正常输出“Hello, TensorFlow!” 和“1+2= 3”, 那么恭喜你,我们已经安装TensorFlow成功了。