概要
機械学習オペレーション (MLOps) ワークロードオーケストレーターは、機械学習モデルのデプロイを効率化し、スケーラビリティ、信頼性、効率性に関するベストプラクティスを適用します。この AWS ソリューションは、AWS 機械学習とサードパーティサービス全体の機械学習パイプラインを管理するための標準インターフェイスを備えた拡張可能なフレームワークです。
このソリューションには、AWS CloudFormation テンプレートが含まれています。このテンプレートにより、モデルトレーニング、事前トレーニング済みモデルのアップロード (Bring Your Own Model、または BYOM とも呼ばれる)、パイプラインオーケストレーション構成、パイプライン運用の監視が可能になります。このソリューションを導入することで、チームは俊敏性と効率を高め、成功したプロセスを大規模に繰り返すことができます。
メリット
API コールまたは Amazon S3 バケットを使用して、事前設定されたパイプラインを開始します。
Amazon SageMaker BYOM を使用してモデルモニタリングを自動化し、ドリフト検出機能を備えたサーバーレス推論エンドポイントを提供します。
Amazon SageMaker Model Dashboard を使用して、モデル、エンドポイント、モデルカード、バッチ変換ジョブなど、すべての Amazon SageMaker リソースを表示、検索、調べることができます。
技術的な詳細情報
このアーキテクチャは、実装ガイドと付属する AWS CloudFormation テンプレートを使用して自動的にデプロイできます。さまざまなユースケースとビジネスニーズをサポートするために、このソリューションでは 2つの AWS CloudFormation テンプレートが提供されています:
- 単一のアカウントテンプレートを使用して、ソリューションのすべてのパイプラインを同じ AWS アカウントにデプロイします。このオプションは、実験、開発、または小規模の本番ワークロードに適しています。
- マルチアカウントテンプレートを使用して、異なる AWS アカウント間で複数の環境 (開発、ステージング、本番環境など) をプロビジョニングします。これにより、ガバナンスが改善され、ML パイプラインのデプロイのセキュリティと制御が向上し、安全な実験とより迅速なイノベーションが提供され、本番データとワークロードが安全かつ利用可能に保たれるだけでなく、ビジネスの継続性が確保されます。
-
オプション 1 - 単一アカウントのデプロイ
-
オプション 2 - マルチアカウントデプロイ
-
オプション 1 - 単一アカウントのデプロイ
-
ステップ 1
オーケストレーターは、DevOps エンジニアでも別のタイプのユーザーでもかまいませんが、自分の AWS アカウントでこのソリューションを起動し、希望するオプションを選択します。たとえば、Amazon SageMaker モデルレジストリや既存の Amazon Simple Storage Service (Amazon S3) バケットを使用できます。
ステップ 2
オーケストレーターは、モデルアーティファクト、トレーニングデータ、カスタムアルゴリズムの zip ファイルなどの必要なアセットを Amazon S3 アセットバケットにアップロードします。SageMaker モデルレジストリを使用している場合は、オーケストレーター(または自動化パイプライン) は、モデルをモデルレジストリに登録する必要があります。
ステップ 3a
単一アカウントの AWS CodePipeline インスタンスは、Amazon API Gateway に API コールを送信するか、mlops-config.json ファイルを設定の Amazon S3 バケットにアップロードすることによってプロビジョニングされます。
ステップ 3b
パイプラインタイプに応じて、AWS Lambda オーケストレーター 関数は API コールの本文または mlops-config.json ファイルを使用して、ターゲットの CloudFormation テンプレートとそのパラメーターおよび設定をパッケージ化します。その後、オーケストレーターは、このパッケージ化されたテンプレートと構成を CodePipeline インスタンスのソースステージとして使用します。
ステップ 4
DeployPipeline ステージは、パッケージ化された CloudFormation テンプレートとそのパラメータ/構成を取得し、ターゲットパイプラインを同じアカウントにデプロイします。
ステップ 5
ターゲットパイプラインがプロビジョニングされた後、ユーザーはその機能にアクセスできます。Amazon Simple Notification Service (Amazon SNS) 通知は、ソリューションの起動パラメータで提供される E メールに送信されます。 -
オプション 2 - マルチアカウントデプロイ
-
ステップ 1
オーケストレーターは、DevOps エンジニアでも、オーケストレーターアカウントへの管理者権限を持つ別のユーザーでもかまいませんが、開発、ステージング、プロダクションの組織単位 ID やアカウント番号などの AWS Organizations 情報を提供します。
また、SageMaker モデルレジストリの使用や既存の Amazon S3 バケットの提供など、必要なオプションを指定し、AWS アカウントでソリューションを起動します。
ステップ 2
オーケストレーターは、モデルアーティファクト、トレーニングデータ、カスタムアルゴリズムの zip ファイルなど、ターゲットパイプラインに必要なアセットを Orchestrator の AWS アカウントの Amazon S3 アセットバケットにアップロードします。SageMaker モデルレジストリを使用している場合は、オーケストレーター (または自動化パイプライン) は、モデルをモデルレジストリに登録する必要があります。
ステップ 3a
マルチアカウントの CodePipeline インスタンスは、API コールを API ゲートウェイに送信するか、mlops-config.json ファイルを設定の Amazon S3 バケットにアップロードすることによってプロビジョニングされます。ステップ 3b
パイプラインタイプに応じて、 Lambda オーケストレーター関数はターゲットをパッケージ化します。
API コールの本文または mlops-config.json ファイルを使用した CloudFormation テンプレートとそのパラメーターおよび構成。その後、オーケストレーターは、このパッケージ化されたテンプレートと構成を CodePipeline インスタンスのソースステージとして使用します。
ステップ 4
DeployDev ステージは、パッケージ化された CloudFormation テンプレートとそのパラメータ/構成を取得し、ターゲットパイプラインを開発アカウントにデプロイします。
ステップ 5
ターゲットパイプラインが開発アカウントにプロビジョニングされた後、デベロッパーはパイプラインを反復処理できます。ステップ 6
開発が完了すると、オーケストレーター (または別の権限のあるアカウント) が DeployStaging アクションを手動で承認して、次のステージである DeployStage に進みます。
ステップ 7
DeployStaging ステージは、ステージング構成を使用して、ターゲットパイプラインをステージングアカウントにデプロイします。ステップ 8
テスターは、デプロイされたパイプラインでさまざまなテストを実行します。ステップ 9
パイプラインが品質テストに合格した後、オーケストレーターは DeployProd アクションを承認できます。ステップ 10
DeployProd ステージは、ターゲットパイプライン (本番構成を含む) を本番アカウントにデプロイします。ステップ 11
ターゲットパイプラインは本番環境で稼働しています。Amazon SNS 通知は、ソリューションの起動パラメータで指定された電子メールに送信されます。
関連コンテンツ
Cognizant は、AWS パートナーソリューションアーキテクトと AWS ソリューションライブラリチームと協力し、MLOps ワークロードオーケストレーターソリューションの上に、MLOps Model Lifecycle Orchestrator ソリューションを構築しています。