Greengrassを使ってラズパイに「機械学習のモデルをデプロイ&実行」するチュートリアルを試してみた

「greengrasssdk」、もっと使えるようになりたい
2018.11.19

概要

「AWS上で学習した機械学習モデル」をコンソール画面上から「ラズパイ上にデプロイ・実行」できたら楽しそうだな、と思いAWSのチュートリアルを参考に試してみました。

目次

1.やること

当初はSageMakerのビルトインアルゴリズムの学習結果を、コンソール画面上から「デプロイ・稼働」させてみたかったのですが、「まずはチュートリアルから」、ということで今回はあらかじめ用意されているサンプルのモデルをデプロイしました。

最終的には、下記のようにコンソール画面上からラズパイ上への「デプロイ・推論実行・結果の確認」ができるようになりました。
これは「画像分類」アルゴリズムのようですが、上位5位の検出結果が表示されています。
(チュートリアルのモデルを使っているので、精度はいまいちですが...)

ちなみに、Lambda実行時には、部屋のクローゼットやダンボール等が写っていたので、確信度は低いもののそれなりに推論してくれているようでした。
ラズパイは3B+を使いました。

2.手順

今回実施する手順は下記の4つのドキュメントに沿っています。

まずはモジュール 1: Greengrass の環境設定の通りにラズパイ環境を設定します。
続いてモジュール 2: Greengrass Coreソフトウェアをインストールするの設定をします。
最後にAWS マネジメントコンソール を使用して Machine Learning Inference を設定する方法の通りに実行します。

Machine Learning Inference を実行するも参考にしました。

3.注意点

基本的には、上記のドキュメントに書いてある順にコマンドを実行していくだけで準備できました。
下記に、注意点だけ書いておきます。

3-1.ssh接続

ラズパイへのssh接続設定がまだできていないようなら、設定しておきましょう。
手元のデスクトップから操作した方が楽だと思います。
私はこちらを参考にさせていただきました。

3-2.「mxnet_installer.sh」の実行が完了しない  

私は「scipy」のインストールで不具合がおきているようでした。
下記の部分で処理が終わらず、フリーズしてしまいました。

Running setup.py bdist_wheel for scipy ...

原因をググってみると私と同じような事象がすでにおきていたので、この回答内容に沿って対応しました。

swap領域を1GB確保して、

sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1

scipyを手動でインストール。結構時間がかかるので、ゆっくり待ちましょう。

sudo pip install --upgrade scipy

この後、再度下記の通りMXNetのインストールを再開したところ、うまくいきました。
ちょっと時間がかかるので、ゆっくり待ちましょう。

./mxnet_installer.sh

4.まとめ

とりあえず、機械学習のモデルをラズパイにデプロイ&実行するところまではできました。
ただ、まだまだやってみたいことはいくつかあるので、どこかでやっていきたいです。

  • SageMakerのビルトインアルゴリズムで同じことをする
  • パフォーマンス検証