こちらはさきほどのバルクアップロードパターンに異常検知のシナリオを追加したものになります。
バルクアップロードパターンで機械学習に必要な学習データが十分に集まったら、
Amazon SageMakerを用いてセンシングデータから異常検知を行うMLモデルを作成し、
Greengrass ML Inferenceの機能を用いてモデルをエッジデバイスにデプロイします。
エッジでは学習モデルを用いてリアルタイムに異常検知を行い、
異常を検知した際にはクラウドとエッジ側のアラートデバイスにリアルタイムにメッセージをpublishします。
コンプライアンス事情で画像や動画をネットワーク外に持ち出せないケースにおいてはマスキングパターンが有効です。
このケースでは画像をクラウドにアップロード出来ないため、画像をオフラインで学習し、モデルのみクラウドにアップロードして、
Greengrass ML Inferenceを用いてデバイスにそのモデルをデプロイします。
エッジデバイスは、カメラから取得した画像を解析し、その解析結果のみクラウドにアップロードすることで画像をクラウドに送信しません。
このケースでは学習をローカルで行う必要があり、ローカルPCに機械学習のFWをインストールしたり、学習用にGPUを用意したりと、
本来フォーカスすべきモデル開発以外の作業が発生してしまいます。
開発効率を最大化するため、本当にローカル側での解析が必要なデータか、確認のうえ実施することを推奨します。
続いて画像や動画をクラウドにアップロードしたいが、全てのデータをアップロードするとコスト効率が悪い、というようなユースケースにおいて有効なデザインパターンになります。
(例えば)人を検出するモデルをデプロイしておき、検出したらクラウドに画像もしくは動画をクラウドにアップロードする、というようなユースケースで利用できます。
画像のアップロード先としてはS3、動画のアップロード先としてはKinesis Video Streamが活用できます。
本ケースではエッジデバイス上にKinesis Video StreamsのProducer SDKを含むアプリケーションをデプロイしておき、このアプリケーションの動作を Lambdaから制御しています。
Kinesis Video Streamの詳細は3月に実施されたblackbeltを参照してみてください。