この記事でわかること
- 大量のエッジデバイス(カメラ)ごとに異なる環境に適応したモデル管理の仕組み
- SageMaker SDK v3を用いた、学習からエッジ最適化までの自動化パイプライン
- 品質ゲート(Quality Gate)による、低品質なモデルのデプロイ防止策
何が発表されたか
Amazon SageMaker Python SDK v3 を活用し、エッジデバイスにおけるコンピュータビジョン(CV)モデルのライフサイクルを、フリート(大量のデバイス群)全体で管理するための新しいパターンが紹介されました。
従来、工場などの現場ではカメラごとに照明や角度が異なるため、単一のモデルでは精度が不足し、カメラごとに個別の微調整(Fine-tuning)が必要になる課題がありました。本手法では、SageMaker Pipeline を用いて、カメラごとの「異常検知モデル」と「欠陥分類モデル」の学習、評価、バージョン管理、そしてエッジ向け最適化(SageMaker Neo によるコンパイル)までを、人間を介さずに自動実行する仕組みを構築します。
何がうれしいのか
- 個別最適化の自動化: カメラごとの特性(光の反射や角度の違いなど)に合わせたモデルを、大量のデバイスに対して個別に、かつ自動で作成・配布できます。
- デプロイ品質の担保: モデルの評価指標(AUROCや、不均衡データに対応したBalanced Accuracyなど)に基づいた「品質ゲート」を設けることで、基準を満たさないモデルがエッジに送られるのを防ぎます。
- エッジへの最適化をパイプラインに統合: SageMaker Neo をパイプライン内に組み込むことで、学習後に必ず対象デバイスへ最適化された形式(Compiled artifact)で登録されるため、デバイスで動かないモデルが混入するリスクを排除できます。
- 効率的なリソース管理: AWS Step Functions によるオーケストレーションにより、大量の再学習リクエストが同時に発生しても、実行ペースを制御してリソースの枯渇を防ぎます。
- 低コストな検証: 合成データを用いたフルパイプラインの実行コストは約0.07ドルです。
使い始めるには
本手法の完全なサンプルコードは、aws-samples GitHub repository で公開されています。
デプロイには以下の準備が必要です:
- IAM ロールの作成権限を持つ AWS アカウント
- Amazon S3 バケット、Amazon ECR リポジトリ
- AWS Step Functions, AWS Lambda, Amazon SQS, Amazon SNS, Amazon EventBridge, Amazon DynamoDB のリソース(スタック内に含まれます)
- Python 3.10, 3.11, 3.12 および Docker
- AWS CDK CLI バージョン 2.1131.0 以降
注意点・制約
-
SDK v3 の仕様変更: SDK v3 ではパッケージがモジュール化されており、
sagemaker-core、sagemaker-train、sagemaker-serve、sagemaker-mlopsが個別のパッケージとして提供されます。 - IAM ロールの検証タイミング: SDK v3 では、パイプラインの定義(Synthesis)時に IAM ロールの検証が行われます。そのため、CDK 等でロールの作成とパイプラインの作成を同一のデプロイで行おうとすると、ロールが存在しないために検証エラーになる場合があります。サンプルでは、コンテキストフラグを用いた2段階のデプロイによってこれを解決しています。
- コンパイルの要件: 各ブランチはモデルを ONNX にエクスポートし、そのエクスポートされたアーティファクトを評価した上で、SageMaker Neo でコンパイルします。
参考
Fleet-wide computer vision lifecycle at the edge with SageMaker SDK v3
https://aws.amazon.com/blogs/machine-learning/fleet-wide-computer-vision-lifecycle-at-the-edge-with-sagemaker-sdk-v3/
※本記事は筆者のメモ・公開情報をもとに、ローカルLLMの支援で作成しています。