TensorFlowソースコンパイル-Ubuntuに基づいて15.04


Ubuntu/Linux直接設置:
#     CPU    
$ pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
#    GPU       (               CUDA sdk)
$ pip install https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
ソースコンパイル:
クローンTensorFlow倉庫
$ git clone --recurse-submodules https://github.com/tensorflow/tensorflow
--recurse-submodulesパラメータは、TesorFlow依存のプロトbufライブラリを取得するために必要である。
Linuxインストール
Bazelを取り付けます
まず教程に従ってBazelをインストールします。次の命令でBazelのソースコードをダウンロードしてコンパイルします。
$ git clone https://github.com/bazelbuild/bazel.git
$ cd bazel
$ git checkout tags/0.1.0$ ./compile.sh
上のコマンドで引き出したコードラベルは0.1.0で、Tensorflowの現在のバージョンに対応しています。BazelのHEADバージョン(最新バージョン)はここでは不安定かもしれません。
実行経路output/bazel$PATH環境変数に追加する。
インストールの他の依存性
$ sudo apt-get install python-numpy swig python-dev
オプション:CUDAをインストールする(LinuxでGPUサポートをオープンする)
コンパイルしてGPUを利用できるTensorFlowを実行するためには、まずNVIDIAが提供するCuda Toolkit 7.0とCUDNN 6.5 V 2をインストールする必要があります。
TensorFlowのGPU特性はNVidia Compute Capability>=3.5のグラフィックカードしかサポートされていません。
  • NVidia Titan
  • NVidia Titan X
  • NVidia K 20
  • NVidia K 40
  • Cuda Toolkitをダウンロードしてインストールします。
    ダウンロード/usr/local/cudaのような経路にツールを取り付けます。
    CUDNN Toolkit 6.5をダウンロードしてインストールします。
    ダウンロード
    CUDNNファイルを解凍してCda Toolkit 7.0にインストールする経路でコピーします。Cuda Toolkit 7.0を/usr/local/cudaにインストールすると仮定して、以下のコマンドを実行します。
    tar xvzf cudnn-6.5-linux-x64-v2.tgz
    sudo cp cudnn-6.5-linux-x64-v2/cudnn.h /usr/local/cuda/include
    sudo cp cudnn-6.5-linux-x64-v2/libcudnn* /usr/local/cuda/lib64
    TensorFlowを配置するCubaオプション
    ソースツリーのルートから実行:
    $ ./configure
    Do you wish to bulid TensorFlow with GPU support? [y/n] y
    GPU support will be enabled for TensorFlow
    
    Please specify the location where CUDA 7.0 toolkit is installed. Refer to
    README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
    
    Please specify the location where CUDNN 6.5 V2 library is installed. Refer to
    README.md for more details. [default is: /usr/local/cuda]: /usr/local/cuda
    
    Setting up Cuda include
    Setting up Cuda lib64
    Setting up Cuda bin
    Setting up Cuda nvvm
    Configuration finished
    これらの構成はシステムCudaライブラリのシンボリックリンクに確立されます。Cudaライブラリのパスが変更されるたびに、上記のステップを再実行しなければならない。そうでなければ、Bazelコンパイルコマンドを呼び出すことができません。
    ターゲットプログラムをコンパイルして、GPUサポートをオープンします。
    ソースツリーのルートから実行:
    $ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
    
    $ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu#        .       GPU        2x2         (major eigenvalue).#               .000009/000005 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]000006/000001 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]000009/000009 lambda = 2.000000 x = [0.894427 -0.447214] y = [1.788854 -0.894427]
    なお、GPUサポートはコンパイルオプション「--config=cuda」で開く必要があります。
    既知の問題
  • は同じソースツリーの下でCudaのサポートとCudaのサポートを無効にするバージョンをコンパイルすることができますが、私達はやはりこの2つの異なるコンパイル構成を切り替える時に、「bazel clean」を使って環境を整理することをお勧めします。
  • バーゼルコンパイルを実行する前にまずconfigurを実行しなければなりません。そうしないとコンパイルが失敗してエラーメッセージが表示されます。将来的には、configurステップをコンパイルプロセス全体に含めることで、前提はbazelが新しい特性サポートを提供することができます。