当前位置: 首页>>技术教程>>正文


使用源代码安装TensorFlow

本指南介绍了如何通过源代码编译安装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软件要求:

  • 在Ubuntu上安装TensorFlow

  • 在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

接下来,您必须为LinuxMac OS准备好您的环境

为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

本文整理自

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/3621.html,未经允许,请勿转载。