タイトルの通りで、TensorFlowをラズパイにインストールする方法です。
公式ではラズパイはC++APIのみサポートされています。
https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/makefile
GithubのIssuesなどを見ていると、おそらく今後も公式としてはC++ランタイムのみのサポートとなりそうですね。
ラズパイ用TensorFlow(python API)としては、samjabrahamsさんが公開しているパッケージが有名で普段はコレを使っています(マジ感謝)。ということで、手っ取り早くインストールしたい場合は下記リポジトリからインストールがおすすめです。
https://github.com/samjabrahams/tensorflow-on-raspberry-pi
しかし、現在(2017/10)でもv1.1.0となっていることや、単純に自分でビルドしてみたかったということもあり、今回はソースコードからビルドしてみました。
環境
・Raspberry Pi 3 – Raspbian 8.0(jessie)
・TensorFlow v1.3.1
・Bazel 0.5.3
・Python 2.7
・gcc 4.9.2
・g++ 4.9.2
ビルド手順
1.Bazelのインストール
まずはBazelをインストールします。
インストール方法は↓参照
BazelをRaspberryPiにインストールする
2.依存パッケージのインストール
$ sudo apt-get install python-pip python-numpy swig python-dev $ sudo pip install wheel
3.ソースコードのダウンロード
$ git clone https://github.com/tensorflow/tensorflow $ cd tensorflow $ git checkout v1.3.1
4.コンフィグ
./configure
コンフィグは全てデフォルト設定で行いました。
5.ソースコード編集
2ファイルの編集が必要でした。
・tensorflow/core/platform/platform.h:48行目
//#define IS_MOBILE_PLATFORM ←コメントアウトする
・tensorflow/workspace.bzl:147〜156行目
eigenのバグFixらしい。ダウンロードするパッケージを“d781c1de9834″に変更して下さい。
native.new_http_archive( name = "eigen_archive", urls = [ "http://mirror.bazel.build/bitbucket.org/eigen/eigen/get/d781c1de9834.tar.gz", ←d781c1de9834に変更 "https://bitbucket.org/eigen/eigen/get/d781c1de9834.tar.gz", ←同上 ], sha256 = "a34b208da6ec18fa8da963369e166e4a368612c14d956dd2f9d7072904675d9b", ←同上 strip_prefix = "eigen-eigen-d781c1de9834", ←同上 build_file = str(Label("//third_party:eigen.BUILD")), )
【参考】
Raspberry Pi Bazel Build “Define appropriate PLATFORM macro” error
Tensorflow build from sources fails #9697
6.ビルド
$ bazel build -c opt --copt="-mfpu=neon-vfpv4" --copt="-funsafe-math-optimizations" --copt="-ftree-vectorize" --copt="-fomit-frame-pointer" --local_resources 1024,1.0,1.0 --verbose_failures tensorflow/tools/pip_package:build_pip_package
ビルドは、数時間かかります。今回は途中でラズパイが2回程落ちた(熱暴走?電圧低下?)ので正確な時間はわかりませんが…
7.pipでインストール
ビルドが成功したら後はpipパッケージ作ってインストールするだけです。
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg $ sudo pip install /tmp/tensorflow_pkg/tensorflow-1.3.1-cp27-cp27mu-linux_armv7l.whl
あとがき
最新のTensorflowリポジトリを見ると、今後はもうちょっと簡単にビルド出来るようになりそうな予感。
Add Raspberry PI build
後、XLAにも期待。