SageMaker AI 提供のプロジェクトテンプレートを使用する - Amazon SageMaker AI

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

SageMaker AI 提供のプロジェクトテンプレートを使用する

重要

2024 年 10 月 28 日現在、AWS CodeCommitテンプレートは削除されました。新しいプロジェクトでは、サードパーティーの Git リポジトリを使用する、利用可能なプロジェクトテンプレートから選択します。

Amazon SageMaker AI は、ML モデルの継続的インテグレーションと継続的デプロイ (CI/CD) のための MLOps ソリューションを作成するのに必要なインフラストラクチャを作成するプロジェクトテンプレートを提供しています。これらのテンプレートを使用して、データの処理、特徴の抽出、モデルのトレーニングとテスト、SageMaker モデルレジストリへのモデルの登録、推論用のモデルのデプロイを行います。シードコードと設定ファイルは、要件に合わせてカスタマイズできます。

注記

プロジェクトテンプレートを使用するには、追加のロールが必要です。必要なロールの全リストと作成方法については、「プロジェクトを使用するために必要な SageMaker Studio のアクセス許可の付与」を参照してください。新しいロールがない場合は、新しいプロジェクトを作成しようとして続行できないときに、「CodePipeline is not authorized to perform AssumeRole on role arn:aws:iam::xxx:role/service-role/AmazonSageMakerServiceCatalogProductsCodePipelineRole」というエラーメッセージが表示されます。

SageMaker AI プロジェクト テンプレートでは、次のコードリポジトリ、ワークフロー自動化ツール、パイプラインステージを選択できます。

  • コードリポジトリ: GitHubや Bitbucket などのサードパーティーの Git リポジトリ

  • CI/CD ワークフローの自動化: AWS CodePipelineまたは Jenkins

  • Pipeline stages (パイプラインステージ): モデルの構築とトレーニング、モデルのデプロイ、またはその両方

以下では、SageMaker AI プロジェクトを作成する際に選択できる各テンプレートの概要を説明します。「プロジェクトのウォークスルー」の「プロジェクトを作成する」のチュートリアルに従って、Studio (または Studio Classic) で使用可能なテンプレートを表示することもできます。

実際のプロジェクトを作成するステップバイステップの手順については、以下のプロジェクトチュートリアルのいずれかを実行できます。

トピック
    • Code repository (コードリポジトリ): サードパーティー Git

      注記

      AWSアカウントAWS CodeStarから GitHub ユーザーまたは組織への接続を確立します。true このAWS CodeStar接続にキーsagemakerと値を持つタグを追加します。

    • CI/CD ワークフローの自動化:AWS CodePipeline

    モデルの構築とトレーニング

    このテンプレートでは以下のリソースが提供されます。

    • カスタマー指定の 1 つ以上の Git リポジトリとの関連付け。リポジトリには、Python コードで Amazon SageMaker AI パイプラインを作成し、SageMaker AI パイプラインを作成したり更新したりする方法を説明するサンプルコードが含まれています。このリポジトリは、Studio で開いて実行できる Python Notebook も提供しています。

    • ソースステップとビルドステップがあるAWS CodePipelineパイプライン。ソースステップは、サードパーティーの Git リポジトリを指します。ビルドステップでは、そのリポジトリからコードを取得して、SageMaker AI パイプラインを作成または更新し、パイプラインの実行を開始して、パイプラインの実行が完了するまで待機します。

    • Git リポジトリにシードコード情報を入力するAWS CodeBuildプロジェクト。これには、 AWS CodeStarから Git リポジトリホストの アカウントAWS アカウントへの接続が必要です。

    • CodePipeline および CodeBuild アーティファクト、SageMaker AI パイプライン実行から生成されたすべてのアーティファクトを含むアーティファクトを保存するための Amazon S3 バケット。

    モデルのデプロイ

    このテンプレートでは以下のリソースが提供されます。

    • カスタマー指定の 1 つ以上の Git リポジトリとの関連付け。リポジトリには、ステージング環境と本番環境のエンドポイントにモデルをデプロイするサンプルコードが含まれています。

    • ソース、ビルド、deploy-to-staging、deploy-to-production稼働までのステップがあるAWS CodePipelineパイプライン。ソースステップはサードパーティーの Git リポジトリを指し、ビルドステップはそのリポジトリからコードを取得し、デプロイするCloudFormationスタックを生成します。deploy-to-stagingとdeploy-to-productionのステップでは、CloudFormationスタックをそれぞれの環境にデプロイします。ステージングステップと本番ビルドステップの間には手動の承認ステップがあるため、MLOps エンジニアは本番環境へのデプロイ前にモデルを承認する必要があります。

    • Git リポジトリにシードコード情報を入力するAWS CodeBuildプロジェクト。これには、 AWS CodeStarから Git リポジトリホストの アカウントAWS アカウントへの接続が必要です。

    • CodePipeline および CodeBuild アーティファクト、SageMaker AI パイプライン実行から生成されたすべてのアーティファクトを含むアーティファクトを保存するための Amazon S3 バケット。

    モデルの構築、トレーニング、デプロイ

    このテンプレートでは以下のリソースが提供されます。

    • カスタマー指定の 1 つ以上の Git リポジトリとの関連付け。

    • ソース、ビルド、deploy-to-staging、deploy-to-production稼働までのステップがあるAWS CodePipelineパイプライン。ソースステップはサードパーティー Git リポジトリを指し、ビルドステップはそのリポジトリからコードを取得して、デプロイするための CloudFormation スタックを生成します。デプロイからステージング、デプロイから本番のステップは、CloudFormation スタックをそれぞれの環境にデプロイします。ステージングステップと本番ビルドステップの間には手動の承認ステップがあるため、MLOps エンジニアは本番環境へのデプロイ前にモデルを承認する必要があります。

    • Git リポジトリにシードコード情報を入力するAWS CodeBuildプロジェクト。これには、 AWSアカウントAWS CodeStarから Git リポジトリホスト上の アカウントへの接続が必要です。

    • CodePipeline および CodeBuild アーティファクト、SageMaker AI パイプライン実行から生成されたすべてのアーティファクトを含むアーティファクトを保存するための Amazon S3 バケット。

    前述したように、このテンプレートを使用して実際のプロジェクトを作成する例については、プロジェクトチュートリアル: サードパーティーの Git リポジトリの使用を参照してください。

    • Code repository (コードリポジトリ): サードパーティー Git

      注記

      AWSアカウントAWS CodeStarから GitHub ユーザーまたは組織への接続を確立します。true このAWS CodeStar接続にキーsagemakerと値を持つタグを追加します。

    • CI/CD ワークフローの自動化:AWS CodePipeline

    次のテンプレートには、次のタイプのモニタリングを提供する追加の Amazon SageMaker Model Monitor テンプレートが含まれています。

    モデルの構築、トレーニング、デプロイ、Amazon SageMaker Model Monitor

    このテンプレートは、CodePipeline を使用して Git リポジトリでモデルを構築、トレーニング、デプロイするための MLOps テンプレートの拡張です。モデルの構築、トレーニング、デプロイのコンポーネントと、以下のタイプのモニタリングを提供する追加の Amazon SageMaker Model Monitor テンプレートが含まれています。

    デプロイされたモデルをモニタリングする

    Amazon SageMaker AI データ品質、モデル品質、モデルバイアス、モデル説明可能性モニターの 1 つ以上をデプロイして、SageMaker AI 推論エンドポイントにデプロイされたモデルを監視する MLOps ソリューションの、このテンプレートを使用できます。このテンプレートでは以下のリソースが提供されます。

    • カスタマー指定の 1 つ以上の Git リポジトリとの関連付け。リポジトリには、Amazon SageMaker モデルレジストリからモニターが使用するベースラインを取得し、ステージング環境と本番環境のテンプレートのパラメータを更新するサンプル Python コードが含まれています。また、Amazon SageMaker Model Monitors を作成するためのCloudFormationテンプレートも含まれています。

    • ソース、ビルド、デプロイの各ステップを含むAWS CodePipelineパイプライン。ソースステップは、CodePipeline リポジトリを指します。ビルドステップは、そのリポジトリからコードを、モデルレジストリからベースラインを取得して、ステージング環境と本番環境のテンプレートパラメータを更新します。デプロイステップは、設定されたモニタをステージング環境と実稼働環境にデプロイします。DeployStaging ステージの手動の承認ステップでは、本番環境の SageMaker AI エンドポイントがInService であることを確認してから、承認を実行し、DeployProd ステージに移る必要があります。

    • Git リポジトリにシードコード情報を入力するAWS CodeBuildプロジェクト。これには、 AWS CodeStarから Git リポジトリホストの アカウントAWS アカウントへの接続が必要です。

    • このテンプレートは、モデルの構築、トレーニング、デプロイ用に MLOps テンプレートによって作成されたものと同じ Amazon S3 バケットを使用して、モニターの出力を保存します。

    • ステージング SageMaker AI エンドポイントが更新されAWS CodePipelineるたびに、2 つの Amazon EventBridge イベントルールが Amazon SageMaker Model Monitor を開始します。 Amazon SageMaker

    • Code repository (コードリポジトリ): サードパーティー Git

      注記

      AWSアカウントAWS CodeStarから GitHub ユーザーまたは組織への接続を確立します。true このAWS CodeStar接続にキーsagemakerと値を持つタグを追加します。

    • CI/CD workflow automation (CI/CD ワークフローの自動化): Jenkins

    モデルの構築、トレーニング、デプロイ

    このテンプレートでは以下のリソースが提供されます。

    • カスタマー指定の 1 つ以上の Git リポジトリとの関連付け。

    • シードコード。ソース、ビルド、デプロイからステージング、デプロイから本番のステップが備わった Jenkins パイプラインを生成します。ソースステップは、ユーザーが指定した Git リポジトリを指します。ビルドステップは、そのリポジトリからコードを取得し、2 つの CloudFormation スタックを生成します。デプロイステップは、CloudFormation スタックをそれぞれの環境にデプロイします。ステージングステップと本番ステップの間には、承認ステップがあります。

    • Git リポジトリにシードコード情報を入力するAWS CodeBuildプロジェクト。これには、 AWSアカウントAWS CodeStarから Git リポジトリホスト上の アカウントへの接続が必要です。

    • Amazon S3 バケット。SageMaker AI プロジェクトと SageMaker AI パイプラインのアーティファクトを保存します。

    テンプレートはプロジェクトとソースコントロールリポジトリ間の関連付けを作成しますが、AWSアカウントと Jenkins 間の通信を確立するために追加の手動ステップを実行する必要があります。詳細な手順については、「サードパーティのソース管理と Jenkins を使用して Amazon SageMaker プロジェクトを作成する」を参照してください。

    この手順は、次の例に示すように、GitHub をソース管理リポジトリとして使用してアーキテクチャを構築するのに役立ちます。図のように、Git リポジトリをプロジェクトにアタッチして、コードバージョンをチェックインおよび管理します。Jenkins は、Git リポジトリ内のモデル構築コードへの変更を検出すると、モデル構築パイプラインを開始します。また、プロジェクトを Jenkins に接続してモデルのデプロイ手順を調整します。これは、モデルレジストリに登録されたモデルを承認したとき、または Jenkins がモデルデプロイコードへの変更を検出したときに開始されます。

    プロジェクトテンプレートを使用して構築されたパイプラインのワークフロー

    要約すると、以下のタスクを実行する手順は次のとおりです。

    1. AWSと GitHub アカウント間の接続を確立します。

    2. Jenkins アカウントを作成し、必要なプラグインをインポートします。

    3. Jenkins IAM ユーザーおよびアクセス許可ポリシーを作成します。

    4. Jenkins サーバーの Jenkins IAM ユーザーのAWS認証情報を設定します。

    5. Jenkins サーバーと通信するための API トークンを作成します。

    6. CloudFormation テンプレートを使用して、モデルレジストリの新しく承認されたモデルをモニタリングする EventBridge ルールを設定します。

    7. SageMaker AI プロジェクトを作成し、GitHub リポジトリにモデルの構築およびデプロイのコードをシードします。

    8. モデル構築のシードコードを使用して Jenkins モデル構築パイプラインを作成します。

    9. モデルデプロイのシードコードを使用して Jenkins モデルデプロイパイプラインを作成します。

    このテンプレートは、CodePipeline を使用してサードパーティーの Git でモデルを構築、トレーニング、デプロイするための MLOps テンプレート の拡張機能です。該当するテンプレートのモデルの構築、トレーニング、デプロイのコンポーネントと、以下のオプションの両方が含まれます。

    • イメージと構築の処理パイプラインを含める

    • イメージと構築のトレーニングパイプラインを含める

    • イメージと構築の推論パイプラインを含める

    プロジェクト作成時に選択した各コンポーネントに、テンプレートを使用して次のコンポーネントが作成されます。

    • Amazon ECR リポジトリ

    • SageMaker イメージ

    • カスタマイズ可能な Dockerfile を含む CodeCommit リポジトリ

    • CodePipeline リポジトリの変更によって開始される CodePipeline

    • Docker イメージを構築して Amazon ECR リポジトリに登録する CodeBuild プロジェクト

    • スケジュールに従って CodePipeline を開始する EventBridge ルール

    CodePipeline が開始されると、新しい Docker コンテナが構築され、Amazon ECR リポジトリに登録されます。新しいコンテナが Amazon ECR リポジトリに登録されると、新しい ImageVersion が SageMaker イメージに追加されます。これにより、モデル構築パイプラインが開始され、その後、デプロイパイプラインが開始されます。

    新しく作成されたイメージは、ワークフローのモデルの構築、トレーニング、デプロイのそれぞれの対象部分で使用されます。

    AmazonSageMakerServiceCatalogProductsUseRole ロールにアタッチされる管理ポリシーが 2021 年 7 月 27 日に更新され、サードパーティーの Git テンプレートで使用できるようになりました。この日以降に Amazon SageMaker Studio (または Studio Classic) にオンボードして、プロジェクトテンプレートを有効にしたユーザーは、新しいポリシーを使用することになります。この日より前にオンボードしたユーザーは、これらのテンプレートを使用するようにポリシーを更新する必要があります。次のいずれかのオプションを使用して、ポリシーを更新できます。

    • ロールを削除して Studio (または Studio Classic) の設定を切り替える

      1. IAM コンソールで、AmazonSageMakerServiceCatalogProductsUseRole を削除します。

      2. Studio (または Studio Classic) コントロールパネルで、[設定を編集] をクリックします。

      3. 両方の設定を切り替え、[Submit] (送信) を選択します。

    • IAM コンソールで、AmazonSageMakerServiceCatalogProductsUseRole に以下のアクセス許可を追加する

      { "Effect": "Allow", "Action": [ "codestar-connections:UseConnection" ], "Resource": "arn:aws:codestar-connections:*:*:connection/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/sagemaker": "true" } } }, { "Effect": "Allow", "Action": [ "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::sagemaker-*" ] }