TensorFlow1.8+Ubuntu16.05+CUDA8.0+cuDNN+Anaconda2安装

环境:

  • Ubuntu 16.04 64bit
  • Anaconda2 4.4.11
  • CUDA 8.0
  • cuDNN 7.0.5
  • gcc 5.4.0

本文记录我安装TensorFlow时遇到的问题。由于本人使用CUDA8.0,最新版的tensorflow需要CUDA9.0,因此本文介绍基于源代码安装tensorflow的步骤,如果你使用CUDA9.0请直接按照官网安装教程.

1. 前提配置

1.1 安装CUDA

首先要仔细看官方文档
http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#ubuntu-installation
里面关于安装前的准备,如硬件性能查询、依赖包安装、禁用服务等等这里不赘述

安装:显卡驱动、CUDA、Anaconda2

驱动和CUDA都建议用.run文件安装,下载地址:
http://www.nvidia.com/Download/index.aspx?lang=en-us
https://developer.nvidia.com/cuda-toolkit-archive

下载好之后先安装驱动

1
sudo ./NVIDIA-Linux-x86_64-390.25.run

之后会有提示步骤,基本安装提示一致安装就行,不要选择abort等取消安装的按钮

1
sudo ./cuda_8.0.61_375.26_linux.run

同样也是安装步骤执行,只是这里会提示你安装驱动,记得要取消

下载cudnn7.0 https://developer.nvidia.com/cudnn
执行

1
sudo tar -xzf cudnn-8.0-linux-x64-v7.tar -C /usr/local

配置CUDA的环境变量

1
2
3
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64 ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
sudo ldconfig

1.2 安装Anaconda

从Anaconda官网下载run文件安装,python 2.7 64bit
https://www.anaconda.com/download/

1.3 anaconda虚拟环境配置(可选)

此时你可能需要一个anaconda的虚拟python环境,其优点是不与当前的python环境冲突,缺点是一些必须的包需要重新安装(也很快)。

虚拟环境配置如下

1
conda create -n tensorflow pip python=2.7

上述我们创建了一个名字叫tensorflow的虚拟python环境,其包含了pip和python2.7,开启虚拟环境的方式为

1
2
xuzhewei@LabServer000:~$ conda activate tensorflow
(tensorflow) xuzhewei@LabServer000:~$

2. 从源码安装TensorFlow

为什么要从源码安装?因为tensorflow官方给的二进制安装包要求使用CUDA 9.0,服务器上其他框架有些并未适配该版本,因此需要将tensorflow在本地编译成whl后进行安装。

2.1 安装Bazel

bazel是用来构建pip的whl安装文件的,安装官网给出的步骤安装即可,没有碰到坑。

  1. 安装依赖包

    1
    sudo apt-get install pkg-config zip g++ zlib1g-dev unzip python
  2. 下载Bazel

    地址:bazel-0.13.1-installer-linux-x86_64.sh

    注意上述版本只是我当前使用的,请根据具体情况修改

  3. 安装

    1
    2
    chmod +x bazel-0.13.1-installer-linux-x86_64.sh
    ./bazel-0.13.1-installer-linux-x86_64.sh --user
  4. 配置环境变量

    ~/.bashrc中加入以下代码

    1
    export PATH="$PATH:$HOME/bin"

    这个文件将会在你下次打开命令行时调用,你也可以直接在命令行运行,在当前环境增加该路径

    1
    export PATH="$PATH:$HOME/bin"

2.2 安装依赖

1
sudo apt-get install python-numpy python-dev python-pip python-wheel

安装libcupti

1
2
sudo apt-get install cuda-command-line-tools
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64

上述LD_LIBRARY_PATH环境变量只在当前环境下有效,若要下次启动直接调用,请加入到~/.bashrc

2.3 下载tensorflow

1
git clone https://github.com/tensorflow/tensorflow

2.4 安装配置

源代码里有个configure文件帮助进行安装配置,随着版本不同可以出现的配置条目不一样,但是关键需要如下几项:

1
2
3
4
5
6
Do you wish to use jemalloc as the malloc implementation? [Y/n]Y
jemalloc enabled
Do you wish to build TensorFlow with CUDA support? [y/N] Y
CUDA support will be enabled for TensorFlow
Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 9.0]: 8.0
Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 7.0]: 7

其他问题要么都默认,要么都选N即可

2.5 构建pip软件包

关于 gcc 5 或更高版本的说明:TensorFlow 网站上提供的二进制 pip 软件包是使用 gcc 4 构建的,该编译器使用的是旧版的 ABI。为了使您的构建与旧版 ABI 兼容,您需要在 bazel build 命令中添加 --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"。具备 ABI 兼容性后,针对 TensorFlow pip 软件包构建的自定义操作就能继续在您已构建好的软件包中正常运行了。

1
bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package --cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"

完成后会创建一个build_pip_package的脚本,运行后会在指定文件夹里生成.whl文件

1
bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

2.6 安装tensorflow

1
pip install tensorflow-1.8.0-cp27-cp27mu-linux_x86_64.whl

3. 验证

打开python

1
$ python

在python交互式shell

1
2
3
4
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

输出

1
Hello, TensorFlow!