Tensorflow环境搭建 1.6.0

标签: none

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成功了。

原文


扫描二维码,在手机上阅读!

添加新评论