TensorFlow源代码安装

转自https://vimsky.com/article/3621.html#ConfigureInstallation

本指南介绍了如何通过源代码编译安装Tesnorflow。请注意,我们已经为LinuxMacWindows系统提供了经充分测试并预编译好的TensorFlow二进制文件。另外还有预编译的TensorFlowDocker映像。所以,不要自己构建一个TensorFlow二进制文件,除非你乐于从源代码构建,并愿意处理一些未知的问题。

本指南介绍如何在以下操作系统上构建TensorFlow

§ Ubuntu(LINUX)

§ Mac OS X

目前没有正式支持在Windows上构建TensorFlow;但是,如果您不介意使用高度实验性的BazelWindowsTensorFlow 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 desiredbranch

例如,要使用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-pippython3-wheel

可选:安装TensorFlow GPU版本的要求

如果您正在构建没有GPU支持的TensorFlow,请跳过本节。

以下NVIDIA硬件必须安装在您的系统上:

§ 具有CUDA ComputeCapability 3.0或更高版本的GPU卡。见NVIDIA文档列出的所支持的GPU卡。

以下NVIDIA软件必须安装在您的系统上:

§ NVIDIACudaToolkit(> = 7.0)。我们建议使用8.0版本。详情请参阅NVIDIA的文档。确保您将相关的Cuda路径名追加到LD_LIBRARY_PATH环境变量,如NVIDIA文档中所述。

§ NVIDIACuda工具包相关的NVIDIA驱动程序。

§ cuDNN(> = v3)。我们建议5.1版本。详情请参阅NVIDIA的文档,特别要关注其中LD_LIBRARY_PATH环境变量的设置。

最后,您还必须安装libcupti-dev,命令如下:

 $ sudo apt-get installlibcupti-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来安装Pythonpip,见这个文档。如果您遵循这些说明,则不需要禁用SIP

安装pip后,调用以下命令:

 $ sudo pip install six numpywheel

可选:安装TensorFlow GPU版本的要求

如果没有安装brew,请按照以下步骤进行安装,见brew安装说明

安装brew后,执行以下命令安装GNU coreutils

$ brew install coreutils

如果要编译Tensorflow并安装XCode 7.3CUDA 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软件要求:

§ Ubuntu(LINUX)上安装TensorFlow

§ Mac OS X上安装TensorFlow

配置安装

源代码树的根目录包含一个名为configurebash脚本。该脚本要求您确定所有相关TensorFlow依赖关系的路径名,并指定其他构建配置选项,如编译器标志。您必须先运行此脚本,才能创建pip软件包并安装TensorFlow

如果你想构建支持GPUTensorFlowconfigure将要求您指定CudacuDNN的版本号。如果您的系统上安装了几个版本的CudacuDNN,请明确地选择所需的版本,而不是依赖于默认版本。

其中一个configure问题如下:

Please specify optimization flags to use during compilation when bazeloption "--config=opt" is specified [Default is -march=native]

这个问题出现在构建pip时。我们建议接受默认值(-march=native),这将以本地机器CPU类型的来优化生成代码。但是,如果要在一种CPU类型上构建TensorFlow,但在不同的CPU类型上运行TensorFlow,那么请考虑指定一个更具体的优化标志,见gcc文档

下面执行configure脚本的例子。请注意,您自己的输入可能与我们的示例输入不同:

$ cd tensorflow  # cd to thetop-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 bazeloption "--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. [Leaveempty to default to CUDA 8.0]: 8.0

Please specify the location where CUDA 8.0 toolkit is installed. Refer toREADME.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 defaultto cuDNN 6.0]: 6

Please specify the location where cuDNN 6 library is installed. Refer toREADME.md for more details. [Default is /usr/local/cuda]:

Please specify a list of comma-separated Cuda compute capabilities youwant 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 significantlyincreases 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

如果要构建支持GPUTensorflowconfigure将创建一个规范的符号链接到您的系统上的Cuda库。因此,每次更改Cuda路径时,在再次执行bazel build命令之前,都必须重新运行configure脚本。

另外,请注意以下事项:

§ 虽然可以在同一源代码树下构建Cudanon-Cuda配置,但是,当在同一源代码树中切换这两种配置之间时,我们建议运行bazel clean

§ 如果你不在运行configure脚本之前运行bazel build命令,bazel build命令将失败。

构建pip

要为支持CPU-onlyTensorFlow构建一个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_resources2048,.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


猜你喜欢

转载自blog.csdn.net/sheshutu6880/article/details/80569290