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