今年のre:inventでもSageMakerのアップデートが多数ありました。SageMakerはクラウドで用意できる機械学習の開発環境で、モデルの管理・比較・モニタリングをする機能も用意されています。そんなSageMakerの機能で、今年はエッジデバイス向けの機能「Amazon SageMaker Edge Manager」が発表されました。Amazon SageMaker Edge Managerとはいったいどんあサービスなのでしょうか? ??
- Amazon SageMaker Edge Managerとは???
- Amazon SageMaker Edge Managerのコンポーネント
- Edge Manager Agent
- まとめ
- re:inventに参加しよう!
- 参考
Amazon SageMaker Edge Managerとは???
Amazon SageMaker Edge Managerは簡単に言うと、エッジデバイス向けのモデル管理ツールです。
これまではAmazon SageMaker Neoという機能があり、こちらでエッジデバイス向けにモデルを最適化することができました。このモデルの最適化の機能はあったわけですが、エッジにデプロイされたモデルのその後の管理・モニタリングする機能がなかったわけです。Amazon SageMaker Edge Managerの登場でそれが可能になったということです。
2020/12現在では、ドキュメントを見てもコンソールを見てもSageMaker自体にはモデルパッケージのデプロイの機能は提供されていないようです。現状、公式のサンプルノートブックでもAWS CLIを利用してモデルパッケージを配置しています。公式のページを見ると以下の記述があります。
モデルのレジストリとモデル系統 - 近日公開
間もなく、Amazon SageMaker Edge Manager でクラウドからエッジデバイスへのビルド・トレーニング・デプロイのワークフローを自動化し、各モデルのライフサイクルを追跡できるようになります。
「よくある質問」を確認するとAWS IoT Greengrassを利用する環境であれば、OTAデプロイ機能をつかったデプロイも可能なようです。
Amazon SageMaker Edge Managerのコンポーネント
Amazon SageMaker Edge Managerを利用するために必要なAWSリソースやコンポーネントはだいたい以下になります
- Amazon SageMaker Neo
- Amazon SageMaker Edge Manager
- Fleet
- Device
- Edge Manager Agent
- AWS IoT
- S3
- IAM Role
- モデルをデプロイするエッジデバイス
そして利用の流れは以下のようになります。
- SageMakerもしくはその他の環境でトレーニングされたモデルがS3へ格納されています。
- SageMaker Neoのコンパイルジョブで利用するデバイス向けにコンパイル。
- Edge Managerのパッケージングジョブでモデルをパッケージ化。
- 何らかの仕組みでエッジデバイスへ格納。
上図にはAWS IoTがあります。またSageMakerに見慣れないFleetとデバイスがあります。
SageMakerのFleetはDeviceのグループだと思えばよいです。このFleetにIAM Roleがアタッチされています。図には表してないですが、FleetにS3への出力設定もあります。Edge ManagerでDeviceを作成してFleetに所属させます。エッジデバイスにインストールされたEdge Manager Agentのconfigで、このDeviceとFleetを指定しています。
先ほどS3への出力設定について触れましたが、AgentからS3への出力にAWS IoTで発行する証明書が使用されます。この証明書も同じくconfigで指定します。
configの例
{ "sagemaker_edge_core_device_uuid": "Device名", "sagemaker_edge_core_device_fleet_name": "Fleet名", "sagemaker_edge_core_capture_data_buffer_size": 30, "sagemaker_edge_core_capture_data_batch_size": 10, "sagemaker_edge_core_capture_data_push_period_seconds": 4, "sagemaker_edge_core_folder_prefix": "demo_capture", "sagemaker_edge_core_region": "us-east-1", "sagemaker_edge_core_root_certs_path": "/path/to/certificate", "sagemaker_edge_provider_aws_ca_cert_file": "/path/to/iot/rootca.pem", "sagemaker_edge_provider_aws_cert_file": "/path/to/iot/iot.pem.crt", "sagemaker_edge_provider_aws_cert_pk_file": "/path/to/iot/iot_key.pem.key", "sagemaker_edge_provider_aws_iot_cred_endpoint": "AWS IoTエンドポイント", "sagemaker_edge_provider_provider": "Aws", "sagemaker_edge_provider_s3_bucket_name": "S3バケット名", "sagemaker_edge_core_capture_data_destination": "Cloud" }
AWS IoTを使うので、すでに使ってる環境だと証明書は共用できるのか?
Edge Manager Agent
デプロイされたモデルパッケージはEdge Manager Agentでロード・アンロード、またデータのキャプチャも可能です。そして、エッジデバイスで実行されるアプリケーションはAgentが提供するAPIでこれらの操作を実行できます、もちろん推論も。
「よくある質問」を確認すると SageMaker Edge Manager SDK
なるものがあるようですが、ググっても見当たらない???まだリリースされてないのでしょうか?
まとめ
というわけで、Edge Managerとはこんな感じの機能です。Neoの拡張版のような機能で、デバイスにデプロイされたモデルの管理機能があり、大規模なプロジェクトでも使えるようになったのでしょうか?
re:inventに参加しよう!
2021/01/12 -14 にもセッションがあるのでぜひ参加しましょう!!!!!!
参考
Yusuke Mine(書いた記事を見る)
I get drunk but it's not enough 'Cause the morning comes and you're not my baby.