Google Coral USB Accelerator を使う その5

Tensorflow v1.15のインストールとソースからのbuild

今回はUbuntuだけ。

Tensorflow 1.15 のインストール

Tensorflow1系でないと動かない環境とかサンプルとかあるので、
Tensorflow v1.15をインストールする。

専用のPython環境用意しておく

pyenv virtualenv 3.7.7 tf_1.15.0

作業ディレクトリの作成とpython環境設定

mkdir -p /work/tf_1.15.0
cd /work/tf_1.15.0
pyenv local tf_1.15.0 
pip install --upgrade pip setuptools

Tensorflow 1.15 ライブラリのインストール

pip install tensorflow-cpu==1.15

[!NOTE] GPU使わないので-cpu付きパッケージを選択する

Tensorflow 1.15 のbuild

Tensorflowのpythonライブラリはpipでインストールできるが、 ソースからbuildしないと使えないツールもあるのでbuild環境を整える。

参考: ソースからのビルド | Tensorflow

Bazelのインストール

Tensorflow をソースからbuildするにはbazelが必要なので、インストールしておく。

[!NOTE] BazelはVer.0.26.1 以下 を使用しないといけない
Ver. 0.26.1はaptでインストールできない

参考: Installing Bazel on Ubuntu

wget https://github.com/bazelbuild/bazel/releases/download/0.26.1/bazel-0.26.1-installer-linux-x86_64.sh
chmod +x bazel-0.26.1-installer-linux-x86_64.sh
./bazel-0.26.1-installer-linux-x86_64.sh --user

実行ファイルは、~/bin/bazel になるので、pathが~/binに通ってない場合は、一旦 ログアウトして 再ログイン (pathが通ってない場合、configureでエラーになる)

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

pip install six numpy wheel mock 'future>=0.17.1'
pip install keras_applications --no-deps
pip install keras_preprocessing --no-deps

tennsorflowのソースを取得

githubからcloneして V1.15.3 をチェックアウトしておく。

cd /work/tf_1.15/
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout -b v1.15.3 refs/tags/v1.15.3

buildの設定

cd /work/tf_1.15/tensorflow
./configure
# いくつか質問されるので、すべてデフォルト(リターン)を入力

buildの実行

実行のひな形

bazel build //《対象ディレクトリ》:《ターゲット》

[!NOTE] ※ 対象ディレクトリはカレントディレクトリからの相対パス
※ ターゲットは対象ディレクトリのBUILDファイルで確認

例えばこんな感じ

cd /work/tf_1.15/tensorflow
bazel build //tensorflow/lite/toco:toco
bazel build //tensorflow/python/tools:freeze_graph
bazel build //tensorflow/tools/graph_transforms:summarize_graph
bazel build //tensorflow/tools/graph_transforms:transform_graph

[!NOTE] RAMは4GB以上必要かな?
オプション--local_ram_resources=2048を指定すると使用するRAMを2GBに限定できる(指定する数値はMB単位)。
使用するPCのスペックによってかかる時間はマチマチ。
NativeなUbuntuで4コア8スレッドでも3~4時間程度かかる。
Virtualboxで1コア使用だと24時間とかかかることも。

buildしたファイルの実行

bazel run で実行する。

[!NOTE] オプションをbazelではなく実行するコマンドに渡すため、-- を入れる必要がある。

cd /work/tf_1.15/tensorflow
bazel run //tensorflow/lite/toco:toco -- «オプション»
bazel run //tensorflow/tools/graph_transforms:summarize_graph -- «オプション»
bazel run //tensorflow/tools/graph_transforms:transform_graph -- «オプション»

絶対パスで実行するには以下。

/work/tf_1.15/tensorflow/bazel-bin/tensorflow/lite/toco/toco «オプション»
/work/tf_1.15/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/summarize_graph «オプション»
/work/tf_1.15/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/transform_graph «オプション»

パスが長いので、以下を設定しておくと便利。

alias            toco='/work/tf_1.15/tensorflow/bazel-bin/tensorflow/lite/toco/toco'
alias summarize_graph='/work/tf_1.15/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/summarize_graph'
alias transform_graph='/work/tf_1.15/tensorflow/bazel-bin/tensorflow/tools/graph_transforms/transform_graph'

おまけ

フツーはこっちがメインだが…(^^ゞ
pipでインストールすれば必要ないが、Tensorflowのpipパッケージを作成するにはこちら。
(オプション変更したいときとか)

bazel build --config=v1 //tensorflow/tools/pip_package:build_pip_package
./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
pip install /tmp/tensorflow_pkg/tensorflow-1.15.3-cp37-cp37m-linux_x86_64.whl