在 Ubuntu 上安装 TensorFlow

本指南将介绍如何在 Ubuntu 上安装 TensorFlow。虽然这些说明可能也适用于其他 Linux 版本,但我们只在满足以下要求的计算机上验证过这些说明(而且我们只支持在此类计算机上按这些说明操作):

  • 64 位台式机或笔记本电脑
  • Ubuntu 16.04 或更高版本

安装哪一个 TensorFlow

你必须在下列几种 TensorFlow 中选择其一来安装:

  • 仅有 CPU 支持的 TensorFlow。 如果你的系统中没有 NVIDIA® GPU,你必须安装这个版本。 需要注意的是,这个版本的 TensorFlow 通常要更易于安装(往往仅需 5 至 10 分钟),所以即使你有英伟达(NVIDIA)的 GPU 显卡,我们仍然推荐你首先尝试安装这一版本。
  • 含有 GPU 支持的 TensorFlow。 TensorFlow 在 GPU上的运行速度要远大于相同程序在 CPU 上的运行速度。因此,如果你的系统中有符合以下要求的 NVIDIA® GPU 显卡,并且你的应用对性能有着严格的要求,你应该安装这一版本。

NVIDIA 对于使用 GPU 运行 TensorFlow 的要求

如果你正在利用本指南中描述的方法之一来安装支持 GPU 的 TensorFlow,那么你的系统中必须要有如下的 NVIDIA 软件:

  • CUDA Toolkit 9.0。详见 NVIDIA 的文档。请保证你将 CUDA 相关的路径像 NVIDIA 文档中所描述的那样添加在 LD_LIBRARY_PATH 环境变量中。
     * cuDNN SDK v7。详见 NVIDIA 的文档,请保证你像 NVIDIA 文档中描述的那样创建了 CUDA_HOME 环境变量。
  • GPU 显卡拥有 CUDA 3.0 或者更高版本的计算性能,用于构建源码以及 3.5 或者更高版本的二进制文件。详见 NVIDIA 英伟达的文档 中支持的 GPU 显卡列表。
  • GPU 驱动 支持你的 CUDA Toolkit 版本。
  • NVIDIA CUDA 解析工具的接口,libcupti-dev 库。该库提供了更高级的分析工具支持。要安装这个库,对 CUDA Toolkit 9.0 以上的版本运行如下命令即可:

    $ sudo apt-get install cuda-command-line-tools
    

    并且将其路径加在你的环境变量 LD_LIBRARY_PATH 中:

    $ export LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/local/cuda/extras/CUPTI/lib64
    

    对于 CUDA Toolkit 7.5及以下版本,运行:

    $ sudo apt-get install libcupti-dev
    
  • [可选]: 为了优化推论性能,你也可以安装 NVIDIA TensorRT 3.0。需要使用预编译 tensorflow-gpu 包的最小 TensorRT 运行时组件集可以按照以下方式安装:

    $ wget https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1404/x86_64/nvinfer-runtime-trt-repo-ubuntu1404-3.0.4-ga-cuda9.0_1.0-1_amd64.deb
    $ sudo dpkg -i nvinfer-runtime-trt-repo-ubuntu1404-3.0.4-ga-cuda9.0_1.0-1_amd64.deb
    $ sudo apt-get update
    $ sudo apt-get install -y --allow-downgrades libnvinfer-dev libcudnn7-dev=7.0.5.15-1+cuda9.0 libcudnn7=7.0.5.15-1+cuda9.0
    
  • [重要]: 为了与预构建包 tensorflow-gpu 进行兼容,请使用上述 Ubuntu 14.04 的 TensorRT 包,即使安装到 Ubuntu 16.04 系统上也是如此。

如果要从源构建 TensorFlow-TensorRT 集成模块,而不使用预编译的二进制文件,请参阅 模块文档

有关 TensorRT 的详细安装说明,请参阅 NVIDIA 的 TensorRT 文档

为避免在以后的系统升级期间出现 cuDNN 版本冲突,你可以将 cuDNN 版本保留为 7.0.5:

   $  sudo apt-mark hold libcudnn7 libcudnn7-dev
   

以后如果允许升级,你可以删除保留:

   $  sudo apt-mark unhold libcudnn7 libcudnn7-dev
   

通过源码安装 TensorFlow

决定如何安装 TensorFlow

你必须决定使用哪一种方法来安装 TensorFlow。支持的方法有如下几种:

我们推荐使用 Virtualenv 安装方法 Virtualenv 是一个 Python 的虚拟环境,独立于其他的 Python 部署,不会与同一台机器上的其他 Python 程序互相影响。在安装 Virtualenv 的过程中,你需要安装 TensorFlow 及其依赖的所有包(实际上这很简单)。要开始使用 TensorFlow 工作的时候,你只需要激活("activate")虚拟环境。总而言之,Virtualenv 提供了一种安全可靠的方法来安装并运行 TensorFlow。

使用原生 pip 直接在你的系统上安装 TensorFlow 而不使用任何容器系统。对于希望使每一个用户都能够使用 TensorFlow 的多用户系统的管理员,我们推荐使用原生 pip 直接安装。由于原生 pip 安装不是在一个独立容器中的进行的隔离安装,因此,pip 可能会影响到同台机器上其他基于 Python 的程序。然而如果你了解 pip 和你当前的 Python 环境,原生 pip 安装会更加简单,往往只需要一条命令即可。

Docker 完全地将 TensorFlow 的安装与其他之前安装于你机器上的库隔离开。Docker 容器中包含 TensorFlow 和其他所有的依赖包。请注意 Docker 镜像可能会比较大(几百 MB 大小)。若你已经在一个很大的应用项目中使用了 Docker,你应该也用它来安装你的 TensorFlow。

在 Anaconda 中,你可以使用 conda 来创建一个虚拟环境。然而,我们推荐你使用 pip install 命令在 Anaconda 中安装 TensorFlow,而不是 conda install

注意: conda 中的包是社区而非官方支持的。也就是说,TensorFlow 的团队既不负责测试也不负责维护 conda 中的包。这可能给你的使用带来隐患,需要你自行负责。

使用 Virtualenv 安装

按照如下步骤来使用 virtualenv 安装 TensorFlow:

  1. 选择下面的一条命令来安装 pip 和 Virtualenv:

    $ sudo apt-get install python-pip python-dev python-virtualenv # for Python 2.7
    $ sudo apt-get install python3-pip python3-dev python-virtualenv # for Python 3.n 
  2. 挑选其中的一条命令来创建一个 Virtualenv 的虚拟环境:

    $ virtualenv --system-site-packages targetDirectory # for Python 2.7
    $ virtualenv --system-site-packages -p python3 targetDirectory # for Python 3.n 

    其中 targetDirectory 指明了 Virtualenv 树中根部位置。我们的命令中假设了 targetDirectory~/tensorflow,但你也可以指定任意目录。

  3. 通过以下任意一条命令激活 Virtualenv 的虚拟环境:

    $ source ~/tensorflow/bin/activate # bash, sh, ksh, or zsh 
    $ source ~/tensorflow/bin/activate.csh  # csh or tcsh
    $ . ~/tensorflow/bin/activate.fish  # fish 

    第一条 source 命令会将你的前缀变为

    (tensorflow)$ 
  4. 确保安装了 pip 8.1 或更高版本:

    (tensorflow)$ easy_install -U pip
  5. 运行下列其中的一条命令来在激活的 Virtualenv 环境中安装 TensorFlow:

    (tensorflow)$ pip install --upgrade tensorflow      # for Python 2.7
    (tensorflow)$ pip3 install --upgrade tensorflow     # for Python 3.n
    (tensorflow)$ pip install --upgrade tensorflow-gpu  # for Python 2.7 and GPU
    (tensorflow)$ pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU 

    如果前面几步成功了,则可以跳过步骤 6,否则需要继续执行步骤 6。

  6. (可选)如果步骤 5 失败了(通常是由于你运行了一个低于 8.1 的 pip 版本),通过以下命令来在激活的 Virtualenv 环境中安装 TensorFlow:

    (tensorflow)$ pip install --upgrade tfBinaryURL   # Python 2.7
    (tensorflow)$ pip3 install --upgrade tfBinaryURL  # Python 3.n 

    其中 tfBinaryURL 指明了 TensorFlow 的 Python 包的 URL 路径。 tfBinaryURL 的值取决于操作系统,Python 版本和 GPU 支持。在这里找到时候你的系统的 tfBinaryURL 。例如,如果你要在 Linux 中安装 Python 3.4 和仅支持 CPU 环境的 TensorFlow,在激活的 virtualenv 环境中运行如下命令即可:

    (tensorflow)$ pip3 install --upgrade \
    https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl 

如果你遇见了安装问题,请见:常见安装问题

下一步

在安装了 TensorFlow 之后,需要 验证你的安装

请注意你必须在每次运行 TensorFlow 之前都要激活你的 Virtualenv 环境。如果 Virtualenv 环境当前并没有激活,运行以下其中一条命令:

$ source ~/tensorflow/bin/activate      # bash, sh, ksh, or zsh
$ source ~/tensorflow/bin/activate.csh  # csh or tcsh 

当 Virtualenv 环境激活后,你可以使用 shell 来运行相关程序。出现如下提示时,代表着那你的虚拟环境已经激活了:

(tensorflow)$ 

当你使用完 TensorFlow 之后,你可以通过 deactivate 命令来休眠该环境:

(tensorflow)$ deactivate 

前缀提示会变回原来默认的样式(由 PS1 环境变量定义)。

卸载 TensorFlow

要卸载 TensorFlow,只需要简单地移除你所创建的整个目录树
例如:

$ rm -r targetDirectory 

使用原生 pip 安装

你也可以使用 pip 安装 TensorFlow,在简单的安装过程和复杂的安装过程之间进行选择。你可能会需要通过 pip 来安装 TensorFlow,在一个简单的安装过程和一个更复杂的中选择其一:

注意:setup.py 中的 REQUIRED_PACKAGES 部分
列出了 TensorFlow 安装时 pip 会安装或升级的所有的包

安装前提:Python 和 Pip

Python 是自动安装于 Ubuntu 中的。花一秒的时间来确认一下系统中安装的 Python 版本(命令 python -V):

  • Python 2.7
  • Python 3.4+

pip 或 pip3 包管理通常会安装在 Ubuntu 系统上。通过 pip -Vpip3 -V 命令来确认下是否有安装。我们强烈建议安装 8.1 或更高版本的 pip 或 pip3。如果没有安装,运行如下命令来安装或更新到最新的 pip 版本:

$ sudo apt-get install python-pip python-dev   # for Python 2.7
$ sudo apt-get install python3-pip python3-dev # for Python 3.n

安装 TensorFlow

假设之前所需的软件已经安装在了你的 Linux 主机上,那么进行如下几步:

  1. 通过其中的一条命令安装 TensorFlow:

    $ pip install tensorflow      # Python 2.7; CPU support (no GPU support) 
    $ pip3 install tensorflow     # Python 3.n; CPU support (no GPU support)
    $ pip install tensorflow-gpu  # Python 2.7;  GPU support
    $ pip3 install tensorflow-gpu # Python 3.n; GPU support 

    如果命令完成了安装,你现在应该 对你的安装进行验证

  2. (可选) 如果步骤 1 失败了,安装如下格式执行命令进行安装:

    $ sudo pip  install --upgrade tfBinaryURL   # Python 2.7
    $ sudo pip3 install --upgrade tfBinaryURL   # Python 3.n 

    其中 tfBinaryURL 指明了 TensorFlow 的 Python 包的 URL 路径。tfBinaryURL 的值取决于操作系统,Python 版本和 GPU 支持。在 这里 找到时候你的系统的 tfBinaryURL 值。例如,如果你要在 Linux 中安装 Python 3.4 和仅支持 CPU 环境的 TensorFlow,在激活的 Virtualenv 环境中运行如下命令即可:

    (tensorflow)$ pip3 install --upgrade \
    https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl 

    如果该步骤失败了,见这里:常见安装问题.

下一步

安装完毕 TensorFlow 之后,验证你的安装.

卸载

要卸载 TensorFlow,运行如下命令:

$ sudo pip uninstall tensorflow  # for Python 2.7
$ sudo pip3 uninstall tensorflow # for Python 3.n 

使用 Docker 安装

通过以下几步来使用 Docker 安装 TensorFlow:

  1. Docker 文档 中所描述的那样来安装 Docker。
  2. 或者,创建一个 Linux group 叫做 docker,如 Docker 文档 中所描述的那样,这样无需 sudo 命令即可运行容器。(如果你不做这一步,你需要在每次使用 Docker 时都使用 sudo 命令。)
  3. 要安装支持 GPU 的 TensorFlow,你必须先安装位于 GitHub 中的 nvidia-docker
  4. 运行包含 TensorFlow 二进制镜像 的 Docker。

剩下的部分解释了如何运行一个 Docker 容器。

仅 CPU 支持

要运行一个仅支持 CPU 的 Docker 容器(即不带 GPU 支持),运行如下格式的命令:

$ docker run -it -p hostPort:containerPort TensorFlowCPUImage

其中:

  • -p hostPort:containerPort 是可选的如果你准备从 shell 命令行中运行 TensorFlow 程序,那么忽略该选项。如果你准备在如 Jupyter notebooks 中运行 TensorFlow,把 hostPortcontainerPort 都设置为 8888。如果你想在容器中运行 TensorBoard,加一个 -p,将hostPortcontainerPort 都设置为 6006。
  • TensorFlowCPUImage 是必需的。它指定了 Docker。选择声明其中的一个值:

    • tensorflow/tensorflow,这是 TensorFlow CPU 二进制镜像的值。
         * tensorflow/tensorflow:latest-devel,这是最新的 TensorFlow CPU 二进制镜像加上源码,
    • tensorflow/tensorflow:version,是某一特定的版本(比如,1.1.0rc1)的 TensorFlow CPU 二进制镜像。
         * tensorflow/tensorflow:version-devel,是某一特定的版本(比如,1.1.0rc1)的 TensorFlow CPU 二进制镜像加源码。

       gcr.io 是 Google 容器注册(Google Container Registry)。注意一些 TensorFlow 的镜像也可以在 dockerhub 中找到。

例如,如下命令在 Docker 容器中运行 TensorFlow CPU 二进制镜像,可以从 shell 命令行中运行 TensorFlow:

$ docker run -it tensorflow/tensorflow bash

如下命令也可以在 Docker 中运行最新的 TensorFlow CPU 二进制镜像。不同的是,在这个 Docker 镜像中,你可以在 Jupyter notebook 中运行 TensorFlow:

$ docker run -it -p 8888:8888 tensorflow/tensorflow

Docker 将会在你第一次运行的时候下载 TensorFlow 二进制镜像。

GPU 支持

在安装 GPU 支持的 TensorFlow 之前,确保你的系统符合
NVIDIA 软件要求。要运行一个带有 NVIDIA GPU 支持的 Docker 容器运行如下格式的命令:

$ nvidia-docker run -it -p hostPort:containerPort TensorFlowGPUImage

其中:

  • -p hostPort:containerPort 是可选的如果你准备从 shell 命令行中运行 TensorFlow 程序,那么忽略该选项。如果你准备在如 Jupyter notebooks 中运行 TensorFlow,把 hostPortcontainerPort 都设置为 8888。如果你想在容器中运行 TensorBoard,加一个 -p,将hostPortcontainerPort 都设置为 6006。
  • TensorFlowCPUImage 是必需的。 它指定了 Docker。 选择声明其中的一个值:

    • tensorflow/tensorflow, 这是 TensorFlow CPU 二进制镜像的值。
    • tensorflow/tensorflow:latest-devel,这是最新的 TensorFlow CPU 二进制镜像加上源码,
    • tensorflow/tensorflow:version,是某一特定的版本(比如,1.1.0rc1)的 TensorFlow CPU 二进制镜像。
    • tensorflow/tensorflow:version-devel,是某一特定的版本(比如,1.1.0rc1)的 TensorFlow CPU 二进制镜像加源码。

    gcr.io 是 Google 容器注册(Google Container Registry)。注意一些 TensorFlow 的镜像也可以在
    dockerhub 中找到.

例如,如下命令在 Docker 容器中运行 TensorFlow CPU 二进制镜像,可以从 shell 命令行中运行 TensorFlow:

$ nvidia-docker run -it tensorflow/tensorflow:latest-gpu bash

如下命令也在 Docker 容器中运行了最新的 TensorFlow GPU 二进制镜像。在这个 Docker 容器中,你可以在 Jupyter notebook 中运行程序:

$ nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:latest-gpu

如下的命令可以安装一个较早的 TensorFlow 版本(0.12.1):

$ nvidia-docker run -it -p 8888:8888 tensorflow/tensorflow:0.12.1-gpu

Docker 会在你第一次运行的时候下载 TensorFlow 二进制镜像。更多信息见 TensorFlow docker readme

下一步

你应该 验证你的安装.

使用 Anaconda 安装

按照如下步骤在 Anaconda 环境中按照 TensorFlow:

  1. 按照 Anaconda 下载网站 中的指导来下载并安装 Anaconda。

  2. 通过以下命令建立一个叫做 tensorflow 的 conda 环境来运行某一版本的 Python:

    $ conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
  3. 使用如下命令来激活 conda 环境:

    $ source activate tensorflow
    (tensorflow)$  # 这时你的前缀应该变成这样 
  4. 运行如下格式的命令来在你的 conda 环境中安装 TensorFlow:

    (tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL 

    其中 tfBinaryURLTensorFlow Python 包的 URL。例如,如下命令安装了仅支持 CPU 的 Python 3.4 版本下的 TensorFlow:

    (tensorflow)$ pip install --ignore-installed --upgrade \
    https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl 

验证你的安装

按照如下步骤验证你的 TensorFlow 安装:

 1. 确保你的环境可以运行 TensorFlow (即:若有虚拟环境应激活它)

  1. 执行一个简短的 TensorFlow 程序

准备你的环境

如果你是使用原生 pip,Virtualenv 或者 Anaconda 安装的,那么进行如下步骤:

  1. 开启一个终端。
  2. 如果是使用 Virtualenv 或 Anaconda 安装,激活你的容器。
  3. 如果使用的 TensorFlow 源码安装,跳转至任意路径,除了有 TensorFlow 源码的地方。

如果你是通过 Docker 安装的,开启一个你可以使用 bush 的 Docker 容器,如:

$ docker run -it tensorflow/tensorflow bash

执行一个简短的 TensorFlow 程序

在你的 shell 命令行中开启 Python:

$ python

在 Python 的交互式 shell 命令行中运行如下程序:

# Python
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

如果系统输出一下数据,那么代表着你已经准备好编写 TensorFlow 程序了:

Hello, TensorFlow!

如果系统输出了一个错误信息,见 常见安装错误.

如果你是机器学习的新手,我们推荐以下内容:

Premade Estimators

常见安装错误

我们依赖于 Stack Overflow 来编写 TensorFlow 的安装问题和它们的解决方案。下面的表格包含了 Stack Overflow 关于常见安装问题的回答。如果你遇见了其他的错误信息或者没有在表格中列出的安装问题,请在 Stack Overflow 上搜索。如果 Stack Overflow 中没有显示相关的错误信息,创建一个新的问题并加上 tensorflow 标签。

Stack Overflow 链接 错误信息 Error Message
36159194
ImportError: libcudart.so.Version: cannot open shared object file:
  No such file or directory
41991101
ImportError: libcudnn.Version: cannot open shared object file:
  No such file or directory
36371137 and here
libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A
  protocol message was rejected because it was too big (more than 67108864 bytes).
  To increase the limit (or to disable these warnings), see
  CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.
35252888
Error importing tensorflow. Unless you are using bazel, you should
  not try to import tensorflow from its source directory; please exit the
  tensorflow source tree, and relaunch your python interpreter from
  there.
33623453
IOError: [Errno 2] No such file or directory:
  '/tmp/pip-o6Tpui-build/setup.py'
42006320
ImportError: Traceback (most recent call last):
  File ".../tensorflow/core/framework/graph_pb2.py", line 6, in 
  from google.protobuf import descriptor as _descriptor
  ImportError: cannot import name 'descriptor'
35190574
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify
  failed
42009190
  Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow
  Found existing installation: setuptools 1.1.6
  Uninstalling setuptools-1.1.6:
  Exception:
  ...
  [Errno 1] Operation not permitted:
  '/tmp/pip-a1DXRT-uninstall/.../lib/python/_markerlib' 
36933958
  ...
  Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow
  Found existing installation: setuptools 1.1.6
  Uninstalling setuptools-1.1.6:
  Exception:
  ...
  [Errno 1] Operation not permitted:
  '/tmp/pip-a1DXRT-uninstall/System/Library/Frameworks/Python.framework/
   Versions/2.7/Extras/lib/python/_markerlib'

TensorFlow Python 软件包的网址

一些安装方法中需要 TensorFlow Python 包的 URL,你所声明的值取决下面三个因素:

  • 操作系统
  • Python 版本
  • CPU 还是 GPU 支持

这个部分记录了 Linux 相关安装的 URL 值

Python 2.7

仅支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp27-none-linux_x86_64.whl

支持 GPU:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.8.0-cp27-none-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。

Python 3.4

仅支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp34-cp34m-linux_x86_64.whl

支持 GPU:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.8.0-cp34-cp34m-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。

Python 3.5

支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp35-cp35m-linux_x86_64.whl

GPU 支持:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.8.0-cp35-cp35m-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。

Python 3.6

仅支持 CPU:

https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.8.0-cp36-cp36m-linux_x86_64.whl

GPU 支持:

https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.8.0-cp36-cp36m-linux_x86_64.whl

注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。