見出し画像

【Part9】DLR(Deep Learning Runtime)を使ってラズパイでディープラーニング

AWSでエッジコンピューティング環境を作る Part9です。

さて、いよいよPart8で作ったコンパイル済みモデルをGreengrassにデプロイしていきます。実際にラズパイで写真を撮って分類までできたら成功です。

※なお、自分で学習モデルを作らず、既存モデルを取ってきてラズパイにデプロイする場合はこの記事が大変参考になります。私も自前モデルをデプロイする際にめちゃくちゃ参考にしました。

REF : SageMaker NeoでコンパイルしたモデルをラズパイにGreenGrassを使ってデプロイして推論処理パフォーマンスを計測した

DLRとは

DLR is a compact, common runtime for deep learning models and decision tree models compiled by AWS SageMaker Neo, [githubより]

AWS SageMaker Neoでコンパイルしたモデルを実行するためライブラリです。対象ハードウェアにこれを仕込むことで、ディープラーニングでの推論処理を行うことができるわけです。

API。めちゃめちゃシンプル...推論オンリーなのでね。

get_input_names()
get_output_names()
run(input_values)

Raspiのセットアップ

ラズパイに対象ソフトウェアをダウンロード、インストールします。

# DL
$ wget https://d1onfpft10uf5o.cloudfront.net/greengrass-ml-installers/dlr/dlr-1.0-py2-armv7l.tar.gz

# 解凍
$ tar -zxvf dlr-1.0-py2-armv7l.tar.gz
$ cd dlr-1.0-py2-armv7l

# インストール
$ sudo ./install-dlr.sh

Testing dlr using python...
All tests PASSED!
dlr was installed successfully!

実行するLambda関数の作成とサブスクリプションの設定

推論用にLamdba関数を作りします。コードをgithubに上げていますので、適宜参考にしてください
※実際に使う場合は、zipで固めてアップロードし、ハンドラをinference.handlerにして実行してください。

中身で気をつけるのはここ

model_resource_path = os.environ.get('MODEL_PATH', '/pytorch-compiled')

次節で書きますが、モデルのラズパイ上でのパスをここで指定しています。実際に配置するのはGreengrassのデプロイ時に行います。

次に、サブスクリプションを設定します。Part4で行ったように、Lambdaをキックし、Lambdaの結果が受け取れるようにGreengrassにて設定を行いましょう。

【サブスクリプション設定例】
Lambda ⇨ AWS IoT : /cifar10/predictions (lambdaに記述)
Lambda ⇨ AWS IoT : /GG_img2S3/result (S3にデータを投げる用)
AWS IoT ⇨ Lambda : /cifar10/test

Greengrassのリソース設定、デプロイ

Lambdaとサブスクリプションの設定が終われば、Greengrassのリソース設定を行っていきます。

まず、ラズパイにS3上に格納された機械学習モデルを配置しなければいけません。Greengrass Groupのリソース⇨Machine Learningを用いて、コンパイルモデルを配置しましょう。

画像1

さて、このままではデプロイでエラーが出てしまいます。GreengrassからS3へのアクセス権限をまだ与えていないためです。Greengrass Groupの設定でIAMロールを確認し、S3へのアクセス権限を与えましょう。

画像2

設定が完了したら、デプロイしましょう。AWS IoTのテストでトピックのやり取りができれば成功です!実際に写してみたものはこちら

画像4

推論結果は...?

画像3

ちゃんと推論が機能していますね。素晴らしい!!!😃

まとめ

ついにエッジで推論を行い結果を返すところまで実装できました!
エッジコンピューティングの準備がほぼほぼ整ったことになります。

さて長かったAWSでエッジコンピューティングも次回、最終回とします。今回行ったことを全体としてまとめて、今後やりたいことなどもちょろっと書いていけたらなと思います。ではではっ。

8. 学習モデルをハードウェアに最適化したコンパイル(Amazon SageMaker Neo)
10. まとめ

サポートいただけると励みになります! よろしくおねがいします!!