OpenEmbedded Layer にmeta-tensorflowのレシピが登録されていたことを発見したのが理由。
手順としては公式に記載のとおりなのだが、自分の環境ではリソースが足りないため少しレシピを変えた。
→TensorFlowのビルド(Bazel)が2つ同時(tensorflowとtensorflow-native)に走るため、メモリが足りなくなってしまう(おそらく、64Gとか必要なのかもしれない?)
手を加えたレシピは以下で公開。
https://github.com/NobuoTsukamoto/meta-tensorflow
手を加えたのは、
- tensorflowとtensorflow-nativeが同時に走らないように、DEPENDを設定。
- Bazelのビルドオプションにlocal_resourcesフラグをつけて、CPU/MEMのリソースを設定。
準備
TensorFlowをビルドするにはホストマシンに、追加でlibatomicをビルド環境にインストールする(自分の環境はFedora 30)。
$ sudo dnf install libatomic
ダウンロード・レイヤーの追加
master環境を引っ張ってくる。
$ git clone git://git.yoctoproject.org/poky.git $ cd poky/ $ git clone git://git.openembedded.org/meta-openembedded $ git clone git://git.yoctoproject.org/meta-raspberrypi $ git clone https://github.com/NobuoTsukamoto/meta-tensorflow.git $ cd ../ $ source poky/oe-init-build-env rpi-build $ bitbake-layers add-layer ../poky/meta-openembedded/meta-oe/ $ bitbake-layers add-layer ../poky/meta-openembedded/meta-multimedia/ $ bitbake-layers add-layer ../poky/meta-openembedded/meta-python/ $ bitbake-layers add-layer ../poky/meta-openembedded/meta-networking/ $ bitbake-layers add-layer ../poky/meta-raspberrypi/ $ bitbake-layers add-layer ../poky/meta-tensorflow/
Bitbake
conf/local.confに以下を追加する。
(AArch64ビルドの指定と、TensorFlowの追加)
あとは、bitbakeコマンドでビルド
MACHINE ?= "raspberrypi3-64" IMAGE_INSTALL_append = " tensorflow"
あとは、bitbakeコマンドでビルド
Build Configuration: BB_VERSION = "1.43.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "fedora-30" TARGET_SYS = "aarch64-poky-linux" MACHINE = "raspberrypi3-64" DISTRO = "poky" DISTRO_VERSION = "2.7+snapshot-20190618" TUNE_FEATURES = "aarch64 cortexa53 crc" TARGET_FPU = "" meta meta-poky meta-yocto-bsp = "master:27d60c5a812774f0e5c43161e5b514c4aebdf301" meta-oe meta-multimedia meta-python meta-networking = "master:3b245e4fe85be62c309650e84d1aaacbcb0d5505" meta-raspberrypi = "master:40283f583b57d67798135ed4a94cb8b5288ea965" meta-tensorflow = "master:94dff656415a534cdfa899cca9e87bc01fe15341"
そういえば、TUNE_FEATURESが昔は"aarch64"だけだった気がする。
SDカード書き込みと起動確認
いつものようにSDカードに書き込みして起動。Python3からTensorFlowがimportできるか確認。
やった〜
0 件のコメント:
コメントを投稿