在 Ubuntu 上安装 TensorFlow
本指南将介绍如何在 Linux 的 Ubuntu 上安装 TensorFlow。虽然这些说明可能也适用于其他 Linux 版本,我们已经在满足以下条款的系统上进行了测试和支持:
- 64 位台式机或笔记本电脑
- Ubuntu 16.04 或更高版本
选择要安装的 TensorFlow
有以下的 TensorFlow 版本可供安装:
- 仅有 CPU 支持的 TensorFlow。如果你的系统中没有 NVIDIA® GPU,你必须安装这个版本。此版本的 TensorFlow 通常更易于安装,因此即使你拥有 NVIDIA GPU,我们也建议你先安装此版本。
- 含有 GPU 支持的 TensorFlow。TensorFlow 在 GPU 上运行通常要比在 CPU 上快。如果是在运行存在性能瓶颈应用而正好系统中有 NVIDIA GPU 符合要求,你应安装这个版本。详情请查看 TensorFlow GPU 支持。
如何安装 TensorFlow
安装 TensorFlow 有如下几个可选方式:
在虚拟环境中使用 pip
要点:使用虚拟环境是推荐安装方式。
Virtualenv 工具是用于创建虚拟 Python 环境以便与同台物理机中的其他 Python 隔离开。在这个情景中,会在虚拟环境中安装 TensorFlow 及其依赖并只在虚拟环境 **activated(激活)**时可用。Virtualenv 提供了一种避免与系统其他部分产生冲突来安装运行 TensorFlow 的可靠方式。
1. 安装 Python, pip
,以及 virtualenv
。
在 Ubuntu 上,Python 是自动安装的并且 pip
通常 也已安装。 确认 python
和 pip
版本:
python -V # or: python3 -V
pip -V # or: pip3 -V
安装以下包到 Ubuntu 中:
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
我们推荐使用 8.1 及以上版本的 pip
。如果当前使用版本低于 8.1,请升级 pip
:
sudo pip install -U pip
如果不是 Ubuntu 系统但安装有 setuptools,使用 easy_install
来安装 pip
:
easy_install -U pip
2. 为虚拟环境创建一个目录并选择一个 Python 解释器。
mkdir ~/tensorflow # 工作目录
cd ~/tensorflow
# Choose one of the following Python environments for the ./venv directory:
virtualenv --system-site-packages venv # 使用默认 Python (Python 2.7)
virtualenv --system-site-packages -p python3 venv # 使用 Python 3.n
3. 激活虚拟环境。
按照以下不同 shell 使用特定命令激活虚拟环境:
source ~/tensorflow/venv/bin/activate # bash、sh、ksh 或 zsh
source ~/tensorflow/venv/bin/activate.csh # csh 或 tcsh
. ~/tensorflow/venv/bin/activate.fish # fish
当虚拟环境激活后,shell 提示会显示为 (venv) $
。
4. 在虚拟环境中升级 pip
。
在激活虚拟环境后,升级 pip
:
(venv)$ pip install -U pip
在虚拟环境中安装其他 Python 包并不会影响 vurtualenv
外的包。
5. 在虚拟环境中安装 TensorFlow。
选择一个可用的 TensorFlow 包进行安装:
tensorflow
— 适用于 CPU 的当前发布版本tensorflow-gpu
— 支持 GPU 的当前发布版本tf-nightly
— 适用于 CPU 的最新构建版本tf-nightly-gpu
— 支持 GPU 的最新构建版本
在激活虚拟环境后,使用 pip
安装包:
pip install -U tensorflow
使用 pip list
查看虚拟环境中所有已安装包。 验证安装并查看版本:
(venv)$ python -c "import tensorflow as tf; print(tf.__version__)"
成功:TensorFlow 现已安装完成。
使用 deactivate
命令停用 Python 虚拟环境。
问题
如果以上步骤失败,可以尝试通过使用远程 pip
包的 URL 安装 TensorFlow 已编译文件:
(venv)$ pip install --upgrade remote-pkg-URL # Python 2.7 (venv)$ pip3 install --upgrade remote-pkg-URL # Python 3.n
remote-pkg-URL 取决于操作系统、Python 版本以及是否有 GPU 支持。从这里查看 URL 名称列表获取文件地址。
如果遇到问题,请查看一般安装问题。
卸载 TensorFlow
如要卸载 TensorFlow,移除步骤 2 中你创建的 Virtualenv 目录即可:
deactivate # stop the virtualenv
rm -r ~/tensorflow/venv
在系统环境下使用 pip
安装
使用 pip
在系统环境下安装 TensorFlow 包而不使用容器或虚拟环境隔离开。这种方式推荐在多系统环境中系统管理员想为其他用户提供可用的 TensorFlow 时使用。
由于系统环境下安装,它可能会与其他以 Python 为基础的安装环境产生冲突。但如果你理解 pip
以及你的 Python 环境,系统环境下 pip
安装时最便捷的方式。 . 查看 setup.py 必备包了解 TensorFlow 安装必需的包。
1. 安装 Python、pip
和 virtualenv
。
在 Ubuntu 上,Python 是自动安装的而 pip
通常 也已安装。 确认 python
和 pip
版本:
python -V # or: python3 -V
pip -V # or: pip3 -V
安装以下包到 Ubuntu 中:
sudo apt-get install python-pip python-dev # for Python 2.7
sudo apt-get install python3-pip python3-dev # for Python 3.n
我们推荐使用 8.1 及以上版本的 pip
。如果当前使用版本低于 8.1,请升级 pip
:
sudo pip install -U pip
如果不是 Ubuntu 系统但安装有 setuptools,使用 easy_install
来安装 pip
:
easy_install -U pip
2. 在系统上安装 TensorFlow。
选择一个可用的 TensorFlow 包进行安装:
tensorflow
— 适用于 CPU 的当前发布版本tensorflow-gpu
— 支持 GPU 的当前发布版本tf-nightly
— 适用于 CPU 的最新构建版本tf-nightly-gpu
— 支持 GPU 的最新构建版本
然后使用 pip
为 Python 2 或 3 安装以下包:
sudo pip install -U tensorflow # Python 2.7
sudo pip3 install -U tensorflow # Python 3.n
使用 pip list
查看虚拟环境中所有已安装包。 验证安装并查看版本:
python -c "import tensorflow as tf; print(tf.__version__)"
成功:TensorFlow 现已安装完成。
问题
如果以上步骤失败,可以尝试通过使用远程 pip
包的 URL 安装 TensorFlow 已编译文件:
sudo pip install --upgrade remote-pkg-URL # Python 2.7
sudo pip3 install --upgrade remote-pkg-URL # Python 3.n
由于系统环境下安装,它可能会与其他以 Python 为基础的安装环境产生冲突。但如果你理解 pip
以及你的 Python 环境,系统环境下 pip
安装时最便捷的方式。 . 查看 setup.py 必备包了解 TensorFlow 安装必需的包。
卸载 TensorFlow
使用下面其中一条命令,将 TensorFlow 从你的系统中卸载:
sudo pip uninstall tensorflow # for Python 2.7
sudo pip3 uninstall tensorflow # for Python 3.n
配置一个 Docker 容器
Docker 能将 TensorFlow 安装环境与宿主机中的已有包完全隔离开。这个 Docker 容器包含 TensorFlow 及其所有依赖。需要注意的是这个 Docker 镜像可能会相当大(数百 MB)。如果在使用 Docker 时需要将 TensorFlow 并入一个更大的应用架构中你可以选择使用 Docker 安装。
使用以下步骤来使用 Docker 安装 TensorFlow:
- 按照 Docker 文档的描述在你的机器上安装 Docker。
- 可选项,按照 Docker 文档的描述创建一个
docker
用户组以便不使用 sudo 操作容器。(如果省略此步骤,你每次调用 Docker 命令时都需要使用 sudo。) - 要想安装能够支持 GPU 的 TensorFlow 版本,需要先安装 nvidia-docker,这个存储在 github。
- 启动一个包含以下 已编译 TensorFlow 镜像的镜像。
本节的余下部分将讲解如何启动一个 Docker 容器。
CPU-only
要启动一个仅支持 CPU(表示没有 GPU 支持)的 Docker 容器。输入以下格式的一个命令:
$ docker run -it -p hostPort:containerPort TensorFlowCPUImage
详细解释:
可选项,如果你准备以 Jupyter notebook 的方式运行 TensorFlow,要将和都设为 。如果你想在容器中运行 TensorBoard,添加第二个
-p
参数,将和都设为 。必须项。决定 Docker 容器。指定为以下选项之一:
- ,已编译 TensorFlow 支持 CPU 的镜像。
- ,最新的支持 CPU 的已编译 TensorFlow 镜像和源码。
- ,特定版本(例如,1.1.0rc1)的支持 CPU 的已编译 TensorFlow 镜像。
- ,特定版本(例如,1.1.0rc1)的支持 CPU 的已编译 TensorFlow 镜像和源码。
TensorFlow 镜像可在 dockerhub 找到。
例如,下面的命令将最新的支持 CPU 的已编译 TensorFlow 镜像启动在一个能够在命令行中运行 TensorFlow 程序的 Docker 容器中:
$ docker run -it tensorflow/tensorflow bash
下面的命令也将最新的支持 CPU 的已编译 TensorFlow 镜像启动在 Docker 容器中。只不过,在这个 Docker 容器中,你可以在一个 Jupyter notebook 中运行 TensorFlow 程序:
$ docker run -it -p 8888:8888 tensorflow/tensorflow
Docker 会在你第一次启动这个容器时下载已编译 TensorFlow 镜像。
GPU 支持
想要启动一个带有 NVIDIA GPU 支持的 Docker 容器,输入以下格式的命令(这不需要任何本地 CUDA 安装环境支持):
$ nvidia-docker run -it -p hostPort:containerPort TensorFlowGPUImage
详细解释:
- 可选项,如果你准备以 Jupyter notebook 的方式运行 TensorFlow,要将和都设为 。
- TensorFlowGPUImage 决定 Docker 容器。指定为以下选项之一:
- ,最新的支持 GPU 的已编译 TensorFlow 镜像。
- ,最新的支持 GPU 的已编译 TensorFlow 镜像和源码。
- ,特定版本(例如,0.12.1)的支持 GPU 的已编译 TensorFlow 镜像。
- ,特定版本(例如,0.12.1)的支持 GPU 的已编译 TensorFlow 镜像和源码。
我们推荐安装 latest
版本。例如,下面的命令将最新的支持 GPU 的已编译 TensorFlow 镜像启动在一个能够在命令行中运行 TensorFlow 程序的 Docker 容器中:
$ nvidia-docker run -it tensorflow/tensorflow:latest-gpu bash
下面的命令也将最新的支持 GPU 的已编译 TensorFlow 镜像启动在 Docker 容器中。只不过,在这个 Docker 容器中,你可以在一个 Jupyter notebook 中运行 TensorFlow 程序:
$ 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 自述。
下一步
现在你需要验证安装。
在 Anaconda 中使用 pip
Anaconda 提供了 conda
模块来创建一个虚拟环境。但是,在 Anaconda 中,我们推荐使用 pip install
而不是 conda install
命令来安装 TensorFlow。
注意:conda
是社区支持的包,它不是由 TensorFlow 团队官方维护的。由于它没有在最新的 TensorFlow 发布版本上测试,使用此包有一定未知风险。
按照如下步骤在 Anaconda 环境中安装 TensorFlow:
按照 Anaconda 下载网站 中的指导下载并安装 Anaconda。
通过以下命令建立一个叫做 的 conda 环境来运行某一版本的 Python:
$ conda create -n tensorflow pip python=2.7 # or python=3.3, etc.
- 使用如下命令来激活 conda 环境:
$ source activate tensorflow (tensorflow)$ # 这时你的前缀应该变成这样
运行如下格式的命令来在你的 conda 环境中安装 TensorFlow:
(tensorflow)$ pip install --ignore-installed --upgrade tfBinaryURL
其中
tfBinaryURL
是 TensorFlow Python 包的 URL。例如,如下命令安装了仅支持 CPU 的 Python 3.4 版本下的 TensorFlow:(tensorflow)$ pip install --ignore-installed --upgrade \ https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp34-cp34m-linux_x86_64.whl
验证你的安装
按照如下步骤验证你的 TensorFlow 安装:
- 确保你的环境可以运行 TensorFlow (即:若有虚拟环境应激活它)
- 执行一个简短的 TensorFlow 程序
准备你的环境
如果你是使用原生 pip,Virtualenv 或者 Anaconda 安装的,那么进行如下步骤:
- 开启一个终端。
- 如果是使用 Virtualenv 或 Anaconda 安装,激活你的容器。
- 如果使用的 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!
如果系统输出了一个错误信息,见常见安装错误。
如果你是机器学习的新手,我们推荐以下内容:
学习更多内容,请到 TensorFlow 教程。
TensorFlow GPU 支持
注意:由于需要安装大量的必备库,推荐使用 Docker 安装而不是在宿主系统中直接安装。
以下 NVIDIA 硬件必须安装在你的系统中:
- GPU 卡拥有 CUDA Compute Capability 3.5 或以上。查看 NVIDIA 文档获取受支持 GPU 卡列表。
以下 NVIDIA 软件必须安装在你的系统中:
- GPU drivers。CUDA 9.0 需要 384.x 或更高。
- CUDA Toolkit 9.0。
- cuDNN SDK (>= 7.0)。推荐使用 7.1 版本 is recommended。
- CUPTI 随 CUDA Toolkit 一起,但你需要将它的路径添加到系统环境变量
LD_LIBRARY_PATH
中:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/extras/CUPTI/lib64
。 - 可选:NCCL 2.2 在多块 GPU 中使用 TensorFlow。
- 可选:TensorRT 理论上可以为一些模型降低延时和吞吐。
要使用带有 CUDA Compute Capability 3.0 的 GPU,或其他较早版本的 NVIDIA 库,请查看通过源码安装 TensorFlow。如果使用 Ubuntu 16.04 或其他基于 Debian 的发行版 Linux,可通过 NVIDIA 安装包仓库使用 apt-get
简便地安装。
# 添加 NVIDIA 安装包仓库。
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1604/x86_64/nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
sudo dpkg -i nvidia-machine-learning-repo-ubuntu1604_1.0.0-1_amd64.deb
sudo apt-get update
# 安装可选包 NCCL 2.x.
sudo apt-get install cuda9.0 cuda-cublas-9-0 cuda-cufft-9-0 cuda-curand-9-0 \
cuda-cusolver-9-0 cuda-cusparse-9-0 libcudnn7=7.1.4.18-1+cuda9.0 \
libnccl2=2.2.13-1+cuda9.0 cuda-command-line-tools-9-0
# 可选性安装 TensorRT 运行时环境,但必须在上面 cuda 安装之后进行。
sudo apt-get update
sudo apt-get install libnvinfer4=4.1.2-1+cuda9.0
常见安装错误
我们依赖于 Stack Overflow 来编写 TensorFlow 的安装问题和它们的解决方案。下面的表格包含了 Stack Overflow 关于常见安装问题的回答。如果你遇见了其他的错误信息或者没有在表格中列出的安装问题,请在 Stack Overflow 上搜索。如果 Stack Overflow 中没有显示相关的错误信息,创建一个新的问题并加上 tensorflow
标签。
GitHub 或 Stack Overflow 链接 | 报错信息 |
---|---|
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 这里 | 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 module 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.10.0-cp27-none-linux_x86_64.whl
支持 GPU:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp27-none-linux_x86_64.whl
注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。
Python 3.4
仅支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp34-cp34m-linux_x86_64.whl
支持 GPU:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp34-cp34m-linux_x86_64.whl
注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。
Python 3.5
支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp35-cp35m-linux_x86_64.whl
GPU 支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp35-cp35m-linux_x86_64.whl
注意 GPU 支持需要符合 NVIDIA 对运行 GPU 支持版本的 TensorFlow 的要求 的软硬件要求。
Python 3.6
仅支持 CPU:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.10.0-cp36-cp36m-linux_x86_64.whl
GPU 支持:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.10.0-cp36-cp36m-linux_x86_64.whl
注意 GPU 支持需要符合 NVIDIA 对运行支持 GPU 版本的 TensorFlow 的条件的软硬件要求。 -->