はじめに
クリアコードは組み込みLinux向けにMozilla Firefoxを移植するプロジェクトGecko EmbeddedをWebDINO Japan(旧Mozilla Japan)様と共同で立ち上げ、開発を進めております。 この組み込みLinux向けに対して、深層学習のフレームワークの一つのChainerを載せようという話がありましたので、ChainerのYoctoレシピを作成しました。
現在のステータス
Yoctoの2.0または2.1で動作を確認しています。 動作はiWave RainboW-G20D Q7およびRenesas R-Car Gen3で確認しています。
レシピはGitHubにて公開しています。https://github.com/clear-code/meta-chainer
Yoctoに組み込むには、meta-chainerを git clone
したのち、(bitbakeのビルドディレクトリ)/conf/local.confへ
IMAGE_INSTALL_append = " python-chainer "
(bitbakeのビルドディレクトリ)/conf/bblayers.confへ
BBLAYEYS += " ${TOPDIR}/../meta-chainer "
をそれぞれ追加し、bitbakeを実行します。
諸注意
動作対象の組み込みボードではCUDAが動作しないため、作成したモデルの互換性に注意する必要があります。
Chainer 1系の時に作成されたコードではモデルの保存に pickle.dump(...)
が使用されていましたが、
この形式では保存する環境に存在するcupyなどの情報も保存されてしまいます。
この場合は、chainerに付属するserializerを用いて保存するように書き換えてください。
まとめ
組み込みLinuxに対してのChainerを載せた取り組みを紹介しました。 ChainerはPythonで書かれており、深層学習のモデルを使った予測であれば組み込み機器でも乗っているメモリの範囲内で動かせる可能性があります。 興味がある方は協力して頂けるとありがたいです。問題を発見した場合はmeta-chainerプロジェクトのIssueページに報告して下さい。