Translate

2016年8月23日火曜日

TensorFlowをインストールしてみる

TensorFlowを使うには、まずインストールしないといけない。

ということでまず公式サイトのインストール手順

 https://www.tensorflow.org/versions/r0.10/get_started/os_setup.html

を翻訳してみた。

以下参照する人は、at your own riskでお願いします。
---------

ダウンロードとセットアップ


バイナリパッケージ、GitHubソースコードのどちらからでもインストール可能です。

前提条件

TensorFlow Python APIは、Python 2.7とPython3.3以降をサポートしています。

GPUバージョン(Linuxのみ)は、Cuda Toolkit 7.5とcuDNN v4が動作すること。その他バージョンはソースコードからインストールした場合のみ(Cuda toolkitは7.0以降。cuDNN は6.5(v2), 7.0(v3), v5)をサポートします。詳細は、Cudaインストール手順 を参照のこと。

概要


様々なTensorFlowをインストールする方法を提供しています:

  • Pip インストール:TensorFlowをあなたのマシン上にインストールします。おそらく前にインストールしたPythonプログラムを更新する必要があります。既存のPythonプログラムがある場合影響が出るかもしれません。
  • Virtualenv インストール:自身のディレクトリ内にTensorFlowをインストールします。あなたのマシン上の既存のPythonプログラムに影響を与えません。
  • Anaconda インストール :Anaconda Pythonディストリビューションが動作中の環境自身にTensorFlowをインストールします。あなたのマシン上の既存のPythonプログラムに影響を与えません。
  • Docker インストール :あなたのマシン上のすべてのプログラムから分離されたDockerコンテナ上でTensorFlowを実行します。
  • ソースからインストール :次にpipを使ってインストールするpipホィールをビルドすることでTensorFlowをインストールします。

もしpipやvirtualeny、anaconda、dockerに慣れているのであれば、あなたの個別ニーズに合わせて手順を適用してください。pipの名称やDockerイメージの名前は対応するインストールセクションにリストされます。

もしインストール中にエラーが発生したら、解決方法をみつけるために 一般の問題 を確認してください。

Pip インストール

Pip はPythonで記述された、ソフトウェアのインストールや管理に使用するパッケージ管理システムの一つです。

pip install中にインストールされ更新されるパッケージを REQUIRED_PACKAGES section of setup.py にてリスト化しています。

まだインストールしていない場合は、pip(もしくはpyhton3のためのpip3)をインストールしてください:

# Ubuntu/Linux 64-bit の場合
$ sudo apt-get install python-pip python-dev

# Mac OS X の場合
$ sudo easy_install pip
$ sudo easy_install --upgrade six


次に、正しいバイナリを選択してインストールします:

# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU 有効, Python 2.7 の場合:
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU のみ, Python 2.7 の場合:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py2-none-any.whl

# Mac OS X, GPU 有効, Python 2.7 の場合:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0rc0-py2-none-any.whl

# Ubuntu/Linux 64-bit, CPU のみ, Python 3.4 の場合:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU 有効, Python 3.4 の場合:
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU のみ, Python 3.5 の場合:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU 有効, Python 3.5 の場合:
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU のみ, Python 3.4 or 3.5 の場合:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py3-none-any.whl

# Mac OS X, GPU 有効, Python 3.4 or 3.5 の場合:
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0rc0-py3-none-any.whl


TensorFlowをインストールします:

# Python 2 の場合:
$ sudo pip install --upgrade $TF_BINARY_URL

# Python 3 の場合:
$ sudo pip3 install --upgrade $TF_BINARY_URL
注意: TensorFlow0.7.1未満の過去のバージョンからのアップデートの場合、更新されたprotobufの関連パッケージのクリーンインストレーションを実行するために事前にTensorFlowとprotobufをpip uninstallを先に実行すべきです。

これで、インストールテストの実行が可能になりました。


Virtualenv インストール

Virtualenv は、分離された場所にある異なるPythonプロジェクトにより要求されるパッケージ関連性を維持するためのツールです。TensorFlowのVirtualenvインストレーションは、TensorFlowにより必要とされるPythonパッケージの既存のバージョンを上書きしません。

Virtualenv を使ったインストレーションは次の通り:

  • pipおよびVirtualenvのインストール
  • Virtualenv 環境の構築
  • Virtualenv環境の有効化およびその環境へTensorFlowのインストール
  • インストール後、TensorFlowを使いたい時にVirtualenv環境を有効化

pipおよびVirtualenvをインストールします:

# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev python-virtualenv

# Mac OS X
$ sudo easy_install pip
$ sudo pip install --upgrade virtualenv

ディレクトリ~/tensorflow内にVirtualenv環境を構築します:

$ virtualenv --system-site-packages ~/tensorflow

環境を有効化します:

$ source ~/tensorflow/bin/activate  # If using bash
$ source ~/tensorflow/bin/activate.csh  # If using csh
(tensorflow)$  # Your prompt should change

通常の Pip インストール など TensorFlow をインストールしてください。最初にインストールのための正しいバイナリを選択してください:

# Ubuntu/Linux 64-bit, CPU only, Python 2.7
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU only, Python 2.7:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py2-none-any.whl

# Mac OS X, GPU enabled, Python 2.7:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0rc0-py2-none-any.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.4
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.5
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU only, Python 3.4 or 3.5:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py3-none-any.whl

# Mac OS X, GPU enabled, Python 3.4 or 3.5:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0rc0-py3-none-any.whl

最後にTensorFlowをインストールします:

# Python 2
(tensorflow)$ pip install --upgrade $TF_BINARY_URL

# Python 3
(tensorflow)$ pip3 install --upgrade $TF_BINARY_URL

有効化したVirtualenv環境を使って、インストールテストの実行 が可能です。

TensorFlowを使って実行したら、環境を無効化してください。

(tensorflow)$ deactivate

$  # Your prompt should change back

再度TensorFlowを使う場合、Virtualenv環境を有効化させてください:

$ source ~/tensorflow/bin/activate  # If using bash.
$ source ~/tensorflow/bin/activate.csh  # If using csh.
(tensorflow)$  # Your prompt should change.
# Run Python programs that use TensorFlow.
...
# When you are done using TensorFlow, deactivate the environment.
(tensorflow)$ deactivate

Anaconda インストール

Anaconda はたくさんの標準的な数値計算・科学技術計算パッケージを含むPythonディストリビューションの一つです。Anacondaは conda と呼ばれるパッケージマネージャを使用して、Virtualenvに近い自身の 環境システムを保有します。

Virtualenv や conda 環境を使って、分離された場所での異なる Python プロジェクトごとに必要とされる関連性を維持します。TensorFlow の Anaconda 環境インストレーションは、TensorFlow によって必要とされる Python パッケージの既存バージョンを上書きしません。

  • Anacondaのインストール
  • conda 環境の構築
  • conda 環境の有効化およびTensorFlowのインストール
  • インストール後、TensorFlowを使用したい場合は都度conda環境を有効化
  • (オプション)ipythonやその他パッケージをconda環境へのインストール

Anacondaをインストールします:
Anaconda ダウンロードサイト 上の手順に従ってください。

tensorflowという名前の conda 環境を構築します:

# Python 2.7
$ conda create -n tensorflow python=2.7

# Python 3.4
$ conda create -n tensorflow python=3.4

# Python 3.5
$ conda create -n tensorflow python=3.5

環境を有効化して、conda を使用 もしくは pip を使って TensorFlow をこの中でインストールしてください。

conda を使用

conda-forge に、コミュニティが維持管理している conda パッケージがあります。

TensorFlow のCPUのみバージョンが現在有効で、Python2 もしくは Python3 の conda 環境にインストール可能です。

$ source activate tensorflow
(tensorflow)$  # Your prompt should change

# Linux/Mac OS X, Python 2.7/3.4/3.5, CPU only:
(tensorflow)$ conda install -c conda-forge tensorflow

pip を使用


pipを使う場合、easy_installについてのエラーを避けるために--ignore-installedフラグを使ってください。

$ source activate tensorflow
(tensorflow)$  # Your prompt should change

通常の Pip インストールを実行してTensorFlowをインストールしてください。最初にインストールのための正しいバイナリを選択してください:

# Ubuntu/Linux 64-bit, CPU only, Python 2.7
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 2.7
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp27-none-linux_x86_64.whl

# Mac OS X, CPU only, Python 2.7:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py2-none-any.whl

# Mac OS X, GPU enabled, Python 2.7:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0rc0-py2-none-any.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.4
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.4
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp34-cp34m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, CPU only, Python 3.5
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

# Ubuntu/Linux 64-bit, GPU enabled, Python 3.5
# Requires CUDA toolkit 7.5 and CuDNN v4. For other versions, see "Install from sources" below.
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.10.0rc0-cp35-cp35m-linux_x86_64.whl

# Mac OS X, CPU only, Python 3.4 or 3.5:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-0.10.0rc0-py3-none-any.whl

# Mac OS X, GPU enabled, Python 3.4 or 3.5:
(tensorflow)$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/mac/gpu/tensorflow-0.10.0rc0-py3-none-any.whl

最後に、TensorFlowをインストールします:

# Python 2
(tensorflow)$ pip install --ignore-installed --upgrade $TF_BINARY_URL

# Python 3
(tensorflow)$ pip3 install --ignore-installed --upgrade $TF_BINARY_URL

使い方


有効化された conda 環境を使って、インストールテストの実行 が可能です。

TensorFlowを使い終わったら、環境を無効化してください。

(tensorflow)$ source deactivate

$  # Your prompt should change back

後でtensorFlowを使うためには、conda 環境を再び有効化する必要があります:

$ source activate tensorflow
(tensorflow)$  # Your prompt should change.
# Run Python programs that use TensorFlow.
...
# When you are done using TensorFlow, deactivate the environment.
(tensorflow)$ source deactivate

ipython のインストール


ipython で tensorflow を使う場合、おそらく tensorflow 環境へ ipython をインストールする必要があります:

$ source activate tensorflow
(tensorflow)$ conda install ipython

同様に、パンダのような他のPythonパッケージをtensorflowで使いたい場合は tensorflow 環境内でインストールする必要があります。


Docker インストール

Docker は、あなたのマシン上で実行中の Linux OS のセルフコンテナバージョンを構築するためのシステムです。Dockerを使ってTensorFlowをインストールして実行する場合、あなたのマシン上の既存パッケージと完全に分離した状態でインストールします。

4つのDockerイメージを提供しています。

  • gcr.io/tensorflow/tensorflow : TensorFlow CPU バイナリイメージ
  • gcr.io/tensorflow/tensorflow:latest-devel : CPU バイナリイメージ+ソースコード
  • gcr.io/tensorflow/tensorflow:latest-gpu : TensorFlow GPU バイナリイメージ
  • gcr.io/tensorflow/tensorflow:latest-devel-gpu : GPU バイナリイメージ+ソースコード
latestタグをリリースバージョン(例えば、0.10.0rc0-gpu)に置き換えたものもあります。

Dockerを使ったインストール手順は、次のとおりです:

  • マシン上にDockerをインストールする
  • sudoなしでのコンテナ作成を許可された Dockerグループ を作成する
  • TensorFlow イメージでDockerコンテナを起動する(イメージは最初に起動した際に自動でダウンロードされる)

マシン上にDockerをインストールする手順は Dockerのインストールを参照してください。

Dockerインストール後、TensorFlowバイナリイメージを使ってDockerコンテナを起動します。

$ docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow

オプション-p 8888:8888はDockerコンテナの内部ポートをホストマシンへ割り当てており、この場合はJupyter ネットワーク接続を確保しています。

ポート割り当てのフォーマットは、 ホスト側ポート番号:コンテナ側ポート番号です。ホスト側ポート番号はどんな番号でも割り当てることはできますが、コンテナ側のポート番号は8888でなくてはなりません。

NVidia GPUサポートのために NVidiaドライバと nvidia-docker をインストールしてください。実行は次のように入力します

$ nvidia-docker run -it -p 8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu
nvidia-docker実行中に問題が発生したら、デフォルト設定を使って、repo内の スクリプト にこれらのフラグを含めます。

$ path/to/repo/tensorflow/tools/docker/docker_run_gpu.sh -p 8888:8888 gcr.io/tensorflow/tensorflow:latest-gpu

詳細は、TensorFlow Docker readmeを読んでください。

これで、Dockerコンテナ内部で インストールテストの実行ができるようになりました。


ソースコードからのインストール


ソースコードからインストールする場合、pipを使ってpip wheelをビルドします。そのため ここ に記述されているとおりにpipをインストールする必要があります。

TensorFlowリポジトリのクローン

$ git clone https://github.com/tensorflow/tensorflow

上記は最新のマスタブランチをインストールする手順に注意してください。もし(リリースブランチなど)特定のブランチをインストールしたい場合は、-b git cloneコマンドに付け、r0.8より前の場合は--recurse-submodulesをつかってTensorFlowに依存するprotobufライブラリをインストールしてください。

Linuxのための環境準備

bazelのインストール

ここ に書かれた手順に従ってbazelのための関連パッケージをインストールしてください。installer for your system で使っているbazelの最新安定バージョンをダウンロードし、次に記述しているようにインストーラを実行してください:

$ chmod +x PATH_TO_INSTALL.SH
$ ./PATH_TO_INSTALL.SH --user
PATH_TO_INSTALL.SHをあなたがインストーラをダウンロードしたパスに変更することを忘れないで下さい。

その他関連パッケージのインストール

# For Python 2.7:
$ sudo apt-get install python-numpy swig python-dev python-wheel
# For Python 3.x:
$ sudo apt-get install python3-numpy swig python3-dev python3-wheel

オプション:CUDAのインストール(Linux上でGPUを使用)


GPUを使うTensorFlowをビルドもしくは実行するためには、NVIDIAの Cuda Toolkit(7.0以降)とcuDNN(v2以降)の両方をインストールする必要があります。

TensorFlow GPU サポートは3.0以降のNVidia Compute Capabilityを使うGPUカードが前提です。サポートされたカードは以下のとおり(これらだけサポートするというわけではありません):

  • NVidia Titan
  • NVidia Titan X
  • NVidia K20
  • NVidia K40

GPUカードのNVIDIA Compute Capabilityチェック


https://developer.nvidia.com/cuda-gpus


Cuba Toolkitのダウンロードとインストール

https://developer.nvidia.com/cuda-downloads

もしバイナリリリースを使っているのであれば、バージョン7.5をインストールしてください。

ツールキットは e.g. /usr/local/cudaにインストールされます。


cuDNNのダウンロードとインストール


https://developer.nvidia.com/cudnn

cuDNN v4(v5は現在、ソースコードからTesorFlowをインストールするときのリリース候補)をダウンロードして下さい。

解凍してcuDNNファイルをツールキットディレクトリへコピーしてください。ツールキットが/usr/local/cudaへインストールされたと仮定した場合、次のコマンドを(ダウンロードしたcuDNNのバージョンによって編集して)実行してください:

tar xvzf cudnn-7.5-linux-x64-v4.tgz
sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

Mac OS X のための環境準備

homebrew を使ってbazelやSWIG関連パッケージをインストールし、easy_installやpipを使ってpython関連パッケージをインストールすることを推奨します。

もちろん、homebrewなしてSwigをソースコードからインストールすることも可能です。この場合、PCRE2ではなく PCRE の関連パッケージのインストールを確認しなくてはなりません。



関連性

ここ の手順に従って、bazelの関連パッケージをインストールしてください。それから、bazelやSWIGをインストールするためにhomebrewを使うことができます:
$ brew install bazel swig

easy_install もしくは pip を使ってpython関連パッケージをインストールすることができます。easy_installを使う場合は、次のとおり実行してください。

$ sudo easy_install -U six
$ sudo easy_install -U numpy
$ sudo easy_install wheel


拡張pythonシェルipython もおすすめします。次のようにインストールします:
$ sudo easy_install ipython

オプション:MacのGPUセットアップ


もしGPUサポート付きのビルドを計画しているのであれば、homebrew経由でGNU coreutilsを取得する必要があります:
$ brew install coreutils

次に、直接OSXバージョンにあったパッケージを NVIDIA からダウンロードするか Homebrew Cask 拡張を使って、最近のCUDAツールキットを持っていることを確認してください。

$ brew tap caskroom/cask
$ brew cask install cuda

CUDAツールキットがインストールされているならば、~/.bash_profileに次の行を追加して、必要な環境変数をセットアップする必要があります:
export CUDA_HOME=/usr/local/cuda
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$CUDA_HOME/lib"
export PATH="$CUDA_HOME/bin:$PATH"


最後に、 Accelerated Computing Developer Program アカウントを必要とする CUDA Deep Neural Network ライブラリもインストールしたいでしょう。ローカルにダウンロードしたら、unzipしてヘッダやライブラリをローカルのCUDAツールキットフォルダへ移動してください:
$ sudo mv include/cudnn.h /Developer/NVIDIA/CUDA-7.5/include/
$ sudo mv lib/libcudnn* /Developer/NVIDIA/CUDA-7.5/lib
$ sudo ln -s /Developer/NVIDIA/CUDA-7.5/lib/libcudnn* /usr/local/cuda/lib/

CUDAインストールを確認するには、成功していることを確かめるためにdeviceQueryをビルドし実行することができます。

$ cp -r /usr/local/cuda/samples ~/cuda-samples
$ pushd ~/cuda-samples
$ make
$ popd
$ ~/cuda-samples/bin/x86_64/darwin/release/deviceQuery


XCode 7.3を使ってTensorFlowをコンパイルしたいのであれば、XCode 7.3にCUDA7.5といまだ互換性がないことに注意してください。Xcode 7.2をダウンロードしてデフォルトとして選択するようにセットする必要があります:
$ sudo xcode-select -s /Application/Xcode-7.2/Xcode.app

インストールのconfigure


ツリーのルートにあるconfigureスクリプトを実行してください。configureスクリプトはpythonインタプリタのパスを要求し、CUDAライブラリの設定(オプション)を許可します。

この手順は、pythonやnumpyヘッダファイル指定だけでなく、GPUを有効化したCUDAとツールキットを持っている場合はGPUサポート有効化にも使用されます。


もしCudaやcuDNNのいくつkのバージョンをインストールしているならば、システムデフォルトに頼る代わりに明確に一つ指定すべきです。

例えば:
$ ./configure
Please specify the location of python. [Default is /usr/bin/python]:
Do you wish to build TensorFlow with Google Cloud Platform support? [y/N] N
No Google Cloud Platform support will be enabled for TensorFlow
Do you wish to build TensorFlow with GPU support? [y/N] y
GPU support will be enabled for TensorFlow
Please specify which gcc nvcc should use as the host compiler. [Default is /usr/bin/gcc]:
Please specify the Cuda SDK version you want to use, e.g. 7.0. [Leave empty to use system default]: 7.5
Please specify the location where CUDA 7.5 toolkit is installed. Refer to README.md for more details. [Default is /usr/local/cuda]:
Please specify the cuDNN version you want to use. [Leave empty to use system default]: 5
Please specify the location where cuDNN 5 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.

Setting up Cuda include
Setting up Cuda lib
Setting up Cuda bin
Setting up Cuda nvvm
Setting up CUPTI include
Setting up CUPTI lib64
Configuration finished

ここでは、システム内のCudaライブラリのシンボリックリンクの規範的なセットを構築しています。Cudaライブラリのパスを変更するたびに、bazelビルドコマンド実行前にこのステップを再実行する必要があります。cuDNNライブラリのために、R2であれば6.5、R3であれば7.0、R4RCであれば4.0.4を使ってください。


GPUサポート時のビルド


ソースツリーのルートから、実行してください:
$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer

$ bazel-bin/tensorflow/cc/tutorials_example_trainer --use_gpu
# Lots of output. This tutorial iteratively calculates the major eigenvalue of
# a 2x2 matrix, on GPU. The last few lines look like this.
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ありなし両方ビルド可能であるが、同一のソースコード内でこれらの2つの構成間を交換する際にbazel cleanを実行することをお勧めします。

bazel build実行前にconfigureを実行する必要があります。しかしながら、ビルドはクリアエラーメッセージが表示され失敗します。将来的に、ビルドステップ内にconfigureステップをより便利に組み込むことを考慮することになるでしょう。


pipパッケージの構築とインストール


ソースコードからビルドする場合、pipパッケージをビルドしインストールします。

$ bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

# To build with GPU support:
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

# The name of the .whl file will depend on your platform.
$ sudo pip install /tmp/tensorflow_pkg/tensorflow-0.10.0rc0-py2-none-any.whl


開発のためのTensorFlowセットアップ


もしTensorFlow自身動作しているなら、相互対話型のPythonシェル内にてTensorFlowの再インストール無しで変更をテスト可能です。


すべてのファイルが(コピーの代わりに)システムディレクトリからリンクされているようにTensorFlowをセットアップするために、次のコマンドをTensorFlowのルートディレクトリ内部で実行してください:

bazel build -c opt //tensorflow/tools/pip_package:build_pip_package

# To build with GPU support:
bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package

mkdir _python_build
cd _python_build
ln -s ../bazel-bin/tensorflow/tools/pip_package/build_pip_package.runfiles/org_tensorflow/* .
ln -s ../tensorflow/tools/pip_package/* .
python setup.py develop

このセットアップは、C++ファイルの変更のたびに;pythonファイルの追加・削除・移動のたびに;もしくはbazel buildルールの変更時//tensorflow/tools/pip_package:build_pip_packageターゲットのリビルドの前提であることに注意してください。


最初のTensorFlow ニューラルネットモデルの学習


ソースツリーのルートから、実行してください:
$ cd tensorflow/models/image/mnist
$ python convolutional.py
Successfully downloaded train-images-idx3-ubyte.gz 9912422 bytes.
Successfully downloaded train-labels-idx1-ubyte.gz 28881 bytes.
Successfully downloaded t10k-images-idx3-ubyte.gz 1648877 bytes.
Successfully downloaded t10k-labels-idx1-ubyte.gz 4542 bytes.
Extracting data/train-images-idx3-ubyte.gz
Extracting data/train-labels-idx1-ubyte.gz
Extracting data/t10k-images-idx3-ubyte.gz
Extracting data/t10k-labels-idx1-ubyte.gz
Initialized!
Epoch 0.00
Minibatch loss: 12.054, learning rate: 0.010000
Minibatch error: 90.6%
Validation error: 84.6%
Epoch 0.12
Minibatch loss: 3.285, learning rate: 0.010000
Minibatch error: 6.2%
Validation error: 7.0%
...
...

一般的な問題

GPU関連の問題


TensorFlowプログラム実行を試す時に次のメッセージに遭遇した場合:
ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory

GPUインストール手順に従ってください。もしソースからビルドし、CudaもしくはcuDNNのバージョンをからのままの場合、それらを明確に指定してください。

protobufライブラリ関連問題


TensprFlow pip パッケージは protobuf pipパッケージバージョン 3.0.0b2に依存しています。 Pipl (pip install protobuf実行時)からダウンロードしたprotobufのpipパッケージは、pythonだけのライブラリで、C++実装より10倍から50倍遅いprotoシリアライゼーション/でシリアライゼーションのpython実装を保有しています。protobufもまた速度の早いC++ベースのproto解釈処理を含むpythonパッケージのためのバイナリ拡張をサポートしています。この拡張は標準のPythonのみのPIPパッケージでは有効になっていません。バイナリ拡張を含むprotobufのためのカスタムバイナリpipパッケージを構築ています。これらの手順に従ってカスタムバイナリprotobuf pipパッケージをインストールします:

# Ubuntu/Linux 64-bit:
$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.0.0b2.post2-cp27-none-linux_x86_64.whl

# Mac OS X:
$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/protobuf-3.0.0b2.post2-cp27-none-any.whl

Python3の場合は:
# Ubuntu/Linux 64-bit:
$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/protobuf-3.0.0b2.post2-cp34-none-linux_x86_64.whl

# Mac OS X:
$ pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/protobuf-3.0.0b2.post2-cp35-none-any.whl

標準のpip install tensorflowでpythonのみのpipパッケージをインストールしたら、pip経由でTensorFlowをインストールした後上記のパッケージをインストールしてください。上記のpipパッケージは既存のprotobufパッケージで上書きされます。バイナリpipパッケージは64MBより大きいprotobufをサポートしていることに注意してください、そしてこれらのようにエラーを修正すべきであることに注意してください:
[libprotobuf ERROR google/protobuf/src/google/protobuf/io/coded_stream.cc:207] A
protocol message was rejected because it was too big (more than 67108864 bytes).
To increase the limit (or to disable these warnings), see
CodedInputStream::SetTotalBytesLimit() in google/protobuf/io/coded_stream.h.

pipインストール問題

Cannot import name 'descriptor'

ImportError: Traceback (most recent call last):
  File "/usr/local/lib/python3.4/dist-packages/tensorflow/core/framework/graph_pb2.py", line 6, in
    from google.protobuf import descriptor as _descriptor
ImportError: cannot import name 'descriptor'

TensorFlowの新しいバージョンへの更新時に上記エラーが出た場合、TensorFlowとprotobuf(もしインストールしているなら)を両方アンインストールし再度TensorFlowをインストールしてみてください(正しいprotobuf関連パッケージも含む)。


Can't find setup.py


もし、pip install中に、次のようなエラーに遭遇したら:
...
IOError: [Errno 2] No such file or directory: '/tmp/pip-o6Tpui-build/setup.py'

解決方法:pipのバージョンを更新してください:
pip install --upgrade pip

pipがどのようにインストールされたかにより、実行するためにsudoが必要になるかもしれません。


SSLError: SSL_VERIFY_FAILED


もし、URLからのpip install中に、次のようなエラーに遭遇したら:
...
SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed

解決方法:curlもしくはwgetを使って手動でwheelをダウンロードし、pipをローカルにインストールしてください。


Operation not permitted


もし、sudoを使っているにもかかわらず、次のようなエラーに遭遇したら:
...
Installing collected packages: setuptools, protobuf, wheel, numpy, tensorflow
Found existing installation: setuptools 1.1.6
Uninstalling setuptools-1.1.6:
Exception:
...
[Errno 1] Operation not permitted: '/tmp/pip-a1DXRT-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/_markerlib'

解決方法:pipコマンドに--ignore-installedフラグを追加してください。


Linuxにおける問題


もし次のエラーメッセージに遭遇したら:

...
 "__add__", "__radd__",
             ^
SyntaxError: invalid syntax

解決方法:Python2.7を使ってください。


Ubuntu build issue on Linux 16.04 when building with --config=cuda: build fail with cuda: identifier "__builtin_ia32_mwaitx" is undefined.


GitHub issue: https://github.com/tensorflow/tensorflow/issues/1066

解決方法:次のコンパイルフラグをthird_party/gpus/crosstool/CROSSTOOLへ追加してください。

cxx_flag: "-D_MWAITXINTRIN_H_INCLUDED" cxx_flag: "-D_FORCE_INLINES"

Mac OS X: ImportError: No module named copyreg


Mac OS X上で、tensorflowインポート中に次のメッセージに遭遇することが有ります。

>>> import tensorflow as tf
...
ImportError: No module named copyreg

解決方法:TensorFlowはprotobufに依存しており、Pythonパッケージsix-1.10.0が必要です。Appleのデフォルトpythonインストールはsix-1.4.1のみ提供しています。

次の方法のうちどれか一つで解決可能です:

  • sixのカレントバージョンを更新する:
  $ sudo easy_install -U six
  分離したPythonライブラリでtensorFlowをインストールしてください:

homebrew もしくは MacPorts 経由でPython分離コピーをインストールし、再度Pythonコピーを使ってTensorFlowをインストールしてください。


Mac OS X: TypeError: __init__() got an unexpected keyword argument 'syntax'


Mac OS X上で、tensorflowインポート中に次のメッセージに遭遇することが有ります。

>>> import tensorflow as tf
Traceback (most recent call last):
  File "", line 1, in
  File "/usr/local/lib/python2.7/site-packages/tensorflow/__init__.py", line 4, in
    from tensorflow.python import *
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/__init__.py", line 13, in
    from tensorflow.core.framework.graph_pb2 import *
...
  File "/usr/local/lib/python2.7/site-packages/tensorflow/core/framework/tensor_shape_pb2.py", line 22, in
    serialized_pb=_b('\n,tensorflow/core/framework/tensor_shape.proto\x12\ntensorflow\"d\n\x10TensorShapeProto\x12-\n\x03\x64im\x18\x02 \x03(\x0b\x32 .tensorflow.TensorShapeProto.Dim\x1a!\n\x03\x44im\x12\x0c\n\x04size\x18\x01 \x01(\x03\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
TypeError: __init__() got an unexpected keyword argument 'syntax'


これは、protobufバージョン間で衝突が発生しているためです(protobuf3.0.0が必要)。現在もっともよい解決方法は次のようにprotobufのより古いバージョンがインストールされていないことを確認することです:
$ pip install --upgrade protobuf

Mac OS X: Segmentation Fault when import tensorflow


Mac OS X上で、python内のtensorflowインポート時に次のようなエラーメッセージが表示された:
>>> import tensorflow
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcublas.dylib locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcudnn.dylib locally
I tensorflow/stream_executor/dso_loader.cc:108] successfully opened CUDA library libcufft.dylib locally
"import tensorflow" terminated by signal SIGSEGV (Address boundary error)

これは、デフォルトではcudaはlibcuda.dylibを作成するのですが、tensorflowはlibcuda.1.dylibをロードしようとしているためです。これはシンボリックリンクを作成することで解決できます:
ln -sf /usr/local/cuda/lib/libcuda.dylib /usr/local/cuda/lib/libcuda.1.dylib

以上
------------

..Pythonをガッツリ知らないと、TensorFlowは難しそう..

環境すら作るの大変そう..とおもって、Dockerインストールを選択し、上のとおりやってみたら、構築だけは簡単だった。

ポート8888版をブラウザで開いてやるとWebUIでpythonが実行できる環境になっていてとってもべんり。
しかも失敗したら、コンテナ再起動で最初所の状態になる(DATAディレクトリをexposeしてないみたい)ので、やり直しが効く。

やっぱCoreOS環境は作っておいて損ないな、とこのDevOps時代を実感した..


GET STARTEDも翻訳してみたので、ご参考迄。
https://fight-tsk.blogspot.jp/2016/09/tensorflowget-started.html



p.s.

DockerでTensor Boardを使いたい場合がDocker HubのReadme.mdには記載がなかったが
DockerfileにはEXPOSE 6006とあったので、

docker exec -it <コンテナ名> /bin/bash

して

tensorboard --logdir=<tensor Board用データ格納先パス>



もちろんTensorFlowのコートのSession部分最後あたりに

tf.train.SummaryWriter("<tensor Board用データ格納先パス>", sess.graph)

をいれて実行してお行かないと何も覗けない。

0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...