ホーム > Tensorflow >

tensorflowをソースからコンパイルしてインストールする

コンパイルに必要なパッケージのインストール

OSはubuntu16.04を想定

sudo apt-get install openjdk-8-jdk pkg-config zip g++ zlib1g-dev unzip
sudo apt-get install python-pip python-numpy swig python-dev python-wheel

bazelのコンパイル

tensorflowをビルドするのに必要なビルドツールであるbazelをソースからコンパイルする。

git clone https://github.com/bazelbuild/bazel.git
pushd bazel
git checkout -b work_0.3.2 refs/tags/0.3.2
./compile.sh
cp output/bazel $HOME/local/bin/
popd

tensorflowのコンパイル

githubからtensorflowのソースコードをcloneする

git clone --recursive https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout -b work_v0.10.0 refs/tags/v0.10.0

configureを実行する。pythonのパス、Googleクラウドを使用するかどうか、GPUを使用するかどうか聞かれる。

./configure

configureが完了したら、bazelコマンドを使ってtensorflowをコンパイルする。

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

コンパイルが完了したら、以下のコマンドを実行する。 すると、/tmp/tensorflow_pkg ディレクトリの下に、wheelフォーマットのパッケージが作成される。

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

作成したpythonパッケージのインストール

先程作成したwheelフォーマットのパッケージをvirtualenvによるサンドボックス内にインストールする。

# tensorflow用の環境を作成
cd $HOME
mkdir tensorflow-0.10.0
virtualenv --system-site-packages $HOME/tensorflow-0.10.0

# サンドボックスの有効化
source $HOME/tensorflow-0.10.0/bin/activate

# tensorflowパッケージのインストール
pip install /tmp/tensorflow_pkg/tensorflow-0.10.0-py2-none-any.whl

C++APIのチュートリアルのコンパイルと実行方法

tensorflowのリポジトリのルートディレクトリに移動し、以下のコマンドを実行し、実行バイナリを作成する。

bazel build -c opt //tensorflow/examples/label_image:label_image

次に、計算グラフの定義を含むアーカイブをダウンロードして、プロジェクト内の所定のディレクトリに展開する。

wget https://storage.googleapis.com/download.tensorflow.org/models/inception_dec_2015.zip -O /tmp/inception_dec_2015.zip
unzip /tmp/inception_dec_2015.zip -d tensorflow/examples/label_image/data/

作成した実行バイナリを以下のコマンドにより実行すると、入力画像 (デフォルトでは tensorflow/examples/label_image/data/grace_hopper.jpg) の識別を行うことができる。

./bazel-bin/tensorflow/examples/label_image/label_image

また、別のチュートリアルのコンパイルと実行方法の例を以下に示す。

# チュートリアルのコンパイル
bazel build -c opt //tensorflow/cc:tutorials_example_trainer

# チュートリアルの実行
./bazel-bin/tensorflow/cc/tutorials_example_trainer

共有ライブラリのコンパイル方法

tensorflowのリポジトリのルートディレクトリに移動し、以下のコマンドを実行し、 tensorflowの共有ライブラリ(.so)をコンパイルする

bazel build -c opt //tensorflow:libtensorflow_cc.so

# /usr/local/lib にインストールする
# sudo install -m 0644 bazel-bin/tensorflow/libtensorflow_cc.so /usr/local/lib/
# sudo ldconfig

続いて、以下のスクリプトを実行し、tensorflowのC++APIのヘッダファイルをコピーする。 (コピー先はtmp以下となっているので適宜修正する)

tensorflowを利用するC++ソースをコンパイルする際に、このディレクトリをインクルードパスに追加する。

macOSで共有ライブラリを使用する方法

macOSでは共有ライブラリの拡張子は.soではなく.dylibなので拡張子を変更する。 また、共有ライブラリのパスを正しく設定しないと共有ライブラリのロード時にエラーとなってしまうので、 install_name_toolコマンドを使って共有ライブラリのパスを設定する。

例えば、tensorflowの共有ライブラリを/usr/local/libにインストールする場合、以下のようにする。

install -m 0644 bazel-bin/tensorflow/libtensorflow_cc.so /usr/local/lib/libtensorflow_cc.dylib
install_name_tool -id /usr/local/lib/libtensorflow_cc.dylib /usr/local/lib/libtensorflow_cc.dylib