[レポート] エッジデバイス上での機械学習の活用 〜エッジコンピューティングを支える AWS の機械学習ソリューション〜 #AWSSummit
こんにちは、せーのです。
今日は2018/05/30より3日間に渡って東京、品川で開催されている「AWS Summit Tokyo 2018」からセッションリポートをいたします。
このレポートはTech上級 「エッジデバイス上での機械学習の活用 〜エッジコンピューティングを支える AWS の機械学習ソリューション〜」です。スピーカーはアマゾン ウェブ サービス ジャパン株式会社 技術統括本部 ソリューションアーキテクトの中田 光昭氏 / 園田 修平氏です。
レポート
- エッジコンピューティングとは
- クラウドと異なる場所にコンピューティングリソースと意思決定機能を備える力
- エッジコンピューティングが必要となるケース
- レイテンシー
- 異常が発生した時にすぐに止めたい
- 帯域幅
- カメラデバイスなどで画像を撮ってテストする場合すべての画像を送ると詰まってしまう
- 野外などで常時接続するとコストがかかる
- オフライン
- 自動運転の機能などでトンネルに入った時に動作しない、というのは通用しない
- セキュリティ
- 人の顔の写真をそのままあげるのはまずい場合、エッジ側で顔を検索してマスクする、など
- レイテンシー
エッジデバイス上での機械学習の活用シーン
- 自動運転
- 予兆保全
- 監視カメラ
- 画像認識
- Yanmar IoT Smart Greenhouse
- 音質をスマート化、写真などをエッジで処理する
エッジデバイス上での機械学習アーキテクチャ
- 機器側で集めたデータをクラウドに集めてトレーニングする
- 作成したモデルをエッジに展開する
- エッジ側で新しく入ってきたデータを推測してしょりをする
アーキテクチャ設計上の考慮点
- エッジで処理をするメリットは多くある
- デバイスのライフサイクル
- デバイスはライフサイクルが長くなることが多い
- 一度展開すると1年単位で同じものを使うことになる
- 最新のものを利用できるわけではない
- 5年後の技術が今のハードウェアで動くか
- 機能拡張が起きた時にクラウド側でサポートできるような仕組みを整える
- デバイスのHWスペック
- 実運用環境においては必ずしも高スペックなHWが利用できるとは限らない
- 高スペック=高い
- PoC上でハイスペックな物だと動いたとしても本番環境だと要件を満たすパフォーマンスが出ない場合がある
- モデルのライフサイクルの考慮点
- モデルのパフォーマンスのモニタリング
- 推論自体はエッジで行う場合でも、推論結果の精度のモニタリングは必要
- 予測の結果は継続的にモニタリングしたほうがいい
- 判別した結果があっていたかどうかを確認する手段を確保する
- 推論に利用したデータをクラウドに収集し、定期的に評価する
- モデルの配信
- 推論の結果が良くなかった場合モデルを作り直すことになる
- クラウドからエッジに効率よく配信する仕組みがないと古いモデルがエッジで動き続けることになる
- 推論で利用したデータをクラウドで収集し、モデルの精度をモニタリングする必要がある
AWSサービスの活用
- Sagemaker
- トレーニングを効率よく行うことができる
- Jupiter Notebook用に雛形が用意されている(画像分類など)
- フレームワークもMXNetやTensorFlowなどが用意されている
- ビルトインのアルゴリズムがあり、パラメータを入れて起動するだけでトレーニングされる
- 複数のパラメータを学習させて結果の良かったものを採用する(現在プレビュー)
- 学習するデプロイする => エンドポイントにホスティングしてリクエストに合わせて推論し、結果を返す機能
- Greengrass
- モデルとモデルを呼び出すスクリプトを配信する
- エッジデバイスを制御する
- クラウドで配布したLambda関数をエッジに配信して実行する
- ローカルリソースアクセス
- カメラデバイスなどでリソースをアクセスできる
- ローカルでML/DLの推論を実行(Greengrass ML Inference)
- 2018/04/04 リリース
- クラウド側で学習したモデルをデプロイする機能
- MXNet/TensorFlowをデバイスに簡単に組み込める
- Greengrass Coreをインストール
- エッジデバイスにインストールするソフトウェア
- 起動すると常駐するプロセスとして動作する
- 動作させるハードウェアがユーザーが要件に合わせて選択
- Lambdaをローカルで実行
- 振る舞いを定義するGreengrass Group
- サービスを定義するGreengrass Service
エッジデバイス機械学習を実行するための開発フロー
- エッジデバイスのセットアップ (ML Inference)
- データをクラウドに収集(AWS Not, Kinensis => S3)
- モデルを作成(Sagemaker)
- 推論を行うアプリの開発(Greengrass Core)
- アプリとモデルをエッジデバイスにデプロイ(ML Inferene)
- 事前ビルドしたmNet/TensorFlowの提供
- それ以外のフレームワークでも通常のビルドを行うことで利用可能
- HW アクセラレータへのアクセス
まとめ
いかがでしたでしょうか。開発段階で使っていたデバイスは価格が高くて本番で量産できないからパフォーマンスが落ちるなど、リアルな話が聞けました。すべてをエッジで行うのは理想的ではありますが、リソースやネットワークを考えて、どこまでをクラウドで行うか、という見分けが大事ですね。