當前位置: 首頁>>技術教程>>正文


使用源代碼安裝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/zh-tw/article/3621.html,未經允許,請勿轉載。