TensorFlow(PythonAPI)をラズパイにインストール


Pocket

タイトルの通りで、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

下記warningがちょっと気になりますが。

 

あとがき

最新のTensorflowリポジトリを見ると、今後はもうちょっと簡単にビルド出来るようになりそうな予感。
Add Raspberry PI build
後、XLAにも期待。
 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です