转自https://vimsky.com/article/3621.html#ConfigureInstallation
本指南介绍了如何通过源代码编译安装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软件要求:
克隆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
为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软件必须安装在您的系统上:
§ NVIDIA的CudaToolkit(> = 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 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来安装Python和pip,见这个文档。如果您遵循这些说明,则不需要禁用SIP。
安装pip后,调用以下命令:
$ sudo pip install six numpywheel
可选:安装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 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
如果要构建支持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_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链接 | 错误信息 |
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. | |
ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory | |
ImportError: libcudnn.5: cannot open shared object file: No such file or directory | |
调用`python`或`ipython`会产生以下错误: ImportError: cannot import name pywrap_tensorflow |