本指南介绍了如何通过源代码编译安装Tesnorflow。请注意,我们已经为Linux,Mac和Windows系统提供了经充分测试并预编译好的TensorFlow二进制文件。另外还有预编译的TensorFlowDocker映像。所以,不要自己构建一个TensorFlow二进制文件,除非你乐于从源代码构建,并愿意处理一些未知的问题。
本指南介绍如何在以下操作系统上构建TensorFlow:
- Ubuntu(LINUX)
- Mac OS X
目前没有正式支持在Windows上构建TensorFlow;但是,如果您不介意使用高度实验性的Bazel在Windows上或TensorFlow CMake构建,可以自己尝试在Windows上构建TensorFlow。
确定安装哪个TensorFlow
您必须选择以下类型的TensorFlow来构建和安装:
- TensorFlow仅支持CPU。如果您的系统没有NVIDIA®GPU,请构建并安装此版本。请注意,此版本的TensorFlow通常更容易构建和安装,因此即使您有NVIDIA GPU,也建议首先构建和安装此版本。
-
TensorFlow支持GPU。 TensorFlow程序通常在GPU上的运行速度明显高于CPU。因此,如果您的系统具有NVIDIA GPU,并且您需要运行性能敏感的应用程序,可以安装此版本。除了NVIDIA GPU本身,您的系统还必须满足以下文档描述的NVIDIA软件要求:
- 在Mac OS上安装TensorFlow
克隆TensorFlow存储库
从克隆TensorFlow存储库开始构建TensorFlow。
要克隆最新的TensorFlow存储库,执行以下命令:
$ git clone https://github.com/tensorflow/tensorflow
前面的git clone
命令创建一个名为tensorflow
的子目录。克隆后,您可以选择构建一个具体分支(如发行版分支),命令如下:
$ cd tensorflow $ git checkout Branch # where Branch is the desired branch
例如,要使用r1.0
发行版而不是主版本,执行以下命令:
$ git checkout r1.0
为Linux准备环境
在Linux上构建TensorFlow之前,请在系统上安装以下构建工具:
- bazel
- TensorFlow Python依赖项
- 可选地,NVIDIA软件包,用于支持TensorFlow GPU。
安装Bazel
如果系统上没有安装bazel,请按照以下步骤进行安装见文档。
安装TensorFlow Python依赖项
要安装TensorFlow,您必须安装以下软件包:
numpy
,这是TensorFlow需要的数字处理包。dev
,它可以添加对Python的扩展。pip
,这使您能够安装和管理某些Python包。wheel
,它使您能够以wheel(.whl)格式管理Python压缩包。
要为Python 2.7安装这些软件包,执行以下命令:
$ sudo apt-get install python-numpy python-dev python-pip python-wheel
要为Python 3.n安装这些软件包,执行以下命令:
$ sudo apt-get install python3-numpy python3-dev python3-pip python3-wheel
可选:安装TensorFlow GPU版本的要求
如果您正在构建没有GPU支持的TensorFlow,请跳过本节。
以下NVIDIA硬件必须安装在您的系统上:
- 具有CUDA Compute Capability 3.0或更高版本的GPU卡。见NVIDIA文档列出的所支持的GPU卡。
以下NVIDIA软件必须安装在您的系统上:
- NVIDIA的Cuda Toolkit(> = 7.0)。我们建议使用8.0版本。详情请参阅NVIDIA的文档。确保您将相关的Cuda路径名追加到
LD_LIBRARY_PATH
环境变量,如NVIDIA文档中所述。 - 与NVIDIA的Cuda工具包相关的NVIDIA驱动程序。
- cuDNN(> = v3)。我们建议5.1版本。详情请参阅NVIDIA的文档,特别要关注其中
LD_LIBRARY_PATH
环境变量的设置。
最后,您还必须安装libcupti-dev
,命令如下:
$ sudo apt-get install libcupti-dev
下一个
在准备好环境后,你现在必须做配置安装。
为Mac OS准备环境
在构建TensorFlow之前,您必须在系统上安装以下内容:
- bazel
- TensorFlow Python依赖项。
- 可选地,NVIDIA软件包,用于支持TensorFlow GPU。
安装bazel
如果系统上没有安装bazel,请按照以下步骤进行安装,见文档。
安装python依赖项
要安装TensorFlow,您必须安装以下软件包:
- six
- numpy,这是TensorFlow需要的数字处理包。
- wheel,这使您能够以wheel(.whl)格式管理Python压缩包。
您可以使用pip安装python依赖项。如果您的机器上没有pip,我们建议使用homebrew来安装Python和pip,见这个文档。如果您遵循这些说明,则不需要禁用SIP。
安装pip后,调用以下命令:
$ sudo pip install six numpy wheel
可选:安装TensorFlow GPU版本的要求
如果没有安装brew,请按照以下步骤进行安装,见brew安装说明。
安装brew后,执行以下命令安装GNU coreutils:
$ brew install coreutils
如果要编译Tensorflow并安装XCode 7.3和CUDA 7.5,请注意,Xcode 7.3尚未兼容CUDA 7.5。要解决此问题,请执行以下任一操作:
- 更新到CUDA 8.0.
-
下载Xcode 7.2并通过以下命令设置为默认项:
$ sudo xcode-select -s /Application/Xcode-7.2/Xcode.app
注意:您的系统必须满足以下文档描述的NVIDIA软件要求:
配置安装
源代码树的根目录包含一个名为configure
的bash脚本。该脚本要求您确定所有相关TensorFlow依赖关系的路径名,并指定其他构建配置选项,如编译器标志。您必须先运行此脚本,才能创建pip软件包并安装TensorFlow。
如果你想构建支持GPU的TensorFlow,configure
将要求您指定Cuda和cuDNN的版本号。如果您的系统上安装了几个版本的Cuda或cuDNN,请明确地选择所需的版本,而不是依赖于默认版本。
其中一个configure
问题如下:
Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]
这个问题出现在构建pip包时。我们建议接受默认值(-march=native
),这将以本地机器CPU类型的来优化生成代码。但是,如果要在一种CPU类型上构建TensorFlow,但在不同的CPU类型上运行TensorFlow,那么请考虑指定一个更具体的优化标志,见gcc文档。
下面执行configure
脚本的例子。请注意,您自己的输入可能与我们的示例输入不同:
$ cd tensorflow # cd to the top-level directory created $ ./configure Please specify the location of python. [Default is /usr/bin/python]: /usr/bin/python2.7 Found possible Python library paths: /usr/local/lib/python2.7/dist-packages /usr/lib/python2.7/dist-packages Please input the desired Python library path to use. Default is [/usr/lib/python2.7/dist-packages] Using python library path: /usr/local/lib/python2.7/dist-packages Do you wish to build TensorFlow with MKL support? [y/N] No MKL support will be enabled for TensorFlow Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is -march=native]: Do you wish to use jemalloc as the malloc implementation? [Y/n] jemalloc enabled Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] No Google Cloud Platform support will be enabled for TensorFlow Do you wish to build TensorFlow with Hadoop File System support? [y/N] No Hadoop File System support will be enabled for TensorFlow Do you wish to build TensorFlow with the XLA just-in-time compiler (experimental)? [y/N] No XLA support will be enabled for TensorFlow Do you wish to build TensorFlow with VERBS support? [y/N] No VERBS support will be enabled for TensorFlow Do you wish to build TensorFlow with OpenCL support? [y/N] No OpenCL support will be enabled for TensorFlow Do you wish to build TensorFlow with CUDA support? [y/N] Y CUDA support will be enabled for TensorFlow Do you want to use clang as CUDA compiler? [y/N] nvcc will be used as CUDA compiler Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to default to CUDA 8.0]: 8.0 Please specify the location where CUDA 8.0 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: Please specify which gcc should be used by nvcc as the host compiler. [Default is /usr/bin/gcc]: Please specify the cuDNN version you want to use. [Leave empty to default to cuDNN 6.0]: 6 Please specify the location where cuDNN 6 library is installed. Refer to README.md for more details. [Default is /usr/local/cuda]: Please specify a list of comma-separated Cuda compute capabilities you want to build with. You can find the compute capability of your device at: https://developer.nvidia.com/cuda-gpus. Please note that each additional compute capability significantly increases your build time and binary size. [Default is: "3.5,5.2"]: 3.0 Do you wish to build TensorFlow with MPI support? [y/N] MPI support will not be enabled for TensorFlow Configuration finished
如果要构建支持GPU的Tensorflow,configure
将创建一个规范的符号链接到您的系统上的Cuda库。因此,每次更改Cuda路径时,在再次执行bazel build
命令之前,都必须重新运行configure
脚本。
另外,请注意以下事项:
- 虽然可以在同一源代码树下构建Cuda和non-Cuda配置,但是,当在同一源代码树中切换这两种配置之间时,我们建议运行
bazel clean
。 - 如果你不在运行
configure
脚本之前运行bazel build
命令,bazel build
命令将失败。
构建pip包
要为支持CPU-only的TensorFlow构建一个pip包,需要执行以下命令:
$ bazel build --config=opt //tensorflow/tools/pip_package:build_pip_package
要为具有GPU支持的TensorFlow构建pip软件包,请调用以下命令:
$ bazel build --config=opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
关于gcc 5或更高版本的注意事项:TensorFlow网站上提供的二进制pip包是使用gcc 4编译的,它使用较旧的ABI。要使您的构建与较旧的ABI兼容,您需要添加--cxxopt="-D_GLIBCXX_USE_CXX11_ABI=0"
到你的bazel build
命令。
Tips:默认情况下,从源代码构建TensorFlow消耗大量的RAM。如果RAM有限,您可以在使用bazel时
通过指定参数来限制RAM的使用:--local_resources 2048,.5,1.0。
该bazel build
命令构建一个命名build_pip_package
的脚本。运行此脚本将在/tmp/tensorflow_pkg
目录构建一个.whl
文件
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
安装pip包
调用pip install
安装该pip包。.whl
文件的具体文件名取决于您的平台。例如,以下命令将安装pip包:
在Linux上对于TensorFlow 1.3.0版本:
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.0-py2-none-any.whl
验证您的安装
通过执行以下操作来验证您的TensorFlow安装:
启动一个终端
更改目录(cd
)到你系统上的任意目录(除了tensorflow
这个你调用configure
命令的目录的子目录。
调用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入门。
如果系统输出错误消息而不是问候,请参阅常见的安装问题。
常见的安装问题
遇到的安装问题通常取决于操作系统。请参阅以下指南之一的“常见安装问题”部分:
除了这两个指南中记录的错误之外,下表列出了构建TensorFlow特有的其他错误。
Stack Overflow链接 | 错误信息 |
---|---|
41293077 |
W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations. |
42013316 |
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory |
42013316 |
ImportError: libcudnn.5: cannot open shared object file: No such file or directory |
35953210 | 调用`python`或`ipython`会产生以下错误:
ImportError: cannot import name pywrap_tensorflow |