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

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

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

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

重要

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

SageMaker プロジェクトテンプレートには、次のコードリポジトリ、ワークフロー自動化ツール、パイプラインステージがあります。

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

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

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

以下の説明では、 SageMaker プロジェクトの作成時に選択できる各テンプレートの概要を説明します。Studio (または Studio Classic) で使用可能なテンプレートを表示するには、「プロジェクトチュートリアル」の「ステップ 1: プロジェクトを作成する」に従います。

実際のプロジェクトを作成する step-by-step 方法については、プロジェクトのチュートリアルのいずれかに従います。

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

このテンプレートは、次の 2 つのテンプレートを組み合わせたものであり、それぞれ個別に使用でき、それらのテンプレートで提供されるすべてのリソースが含まれています。

  • コードリポジトリ: AWS CodeCommit

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

MLOps モデルの構築とトレーニング用の テンプレート

このテンプレートは、 MLOpsソリューションでデータの処理、特徴の抽出、モデルのトレーニングとテスト、モデルレジストリへの SageMaker モデルの登録を行う場合に使用します。

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

  • Python コードで Amazon SageMaker パイプラインを作成するサンプルコードを含み、 SageMaker パイプラインを作成および更新する方法を示す AWS CodeCommit リポジトリ。このリポジトリには、Studio (または Studio Classic) で開いて実行できるサンプル Python ノートブックもあります。

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

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

次の図は、モデルの構築とトレーニングに役立つこのテンプレートで使用されるワークフローと AWS リソースを示しています。

モデルの構築とトレーニング用のプロジェクトテンプレートを使用して構築されたパイプラインのワークフロー。
MLOps モデルデプロイ用の テンプレート

このテンプレートを使用して、リアルタイム推論のためにモデルレジストリ内の SageMaker モデルを SageMaker エンドポイントにデプロイします。このテンプレートは、モデルレジストリの変更を認識します。新しいモデルバージョンが登録および承認されると、デプロイが自動的に開始されます。

テンプレートは、モデルデプロイステップを指定する設定ファイル、エンドポイントをインフラストラクチャとして定義する AWS CloudFormation テンプレート、エンドポイントをテストするためのシードコードを含む CodeCommit リポジトリをプロビジョニングします。

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

  • ステージング環境と本番環境のエンドポイントにモデルをデプロイするサンプルコードを含む AWS CodeCommit リポジトリ。

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

    CodeCommit リポジトリのサンプルコードには、プレースホルダーテストを含むプログラムによる承認ステップもあります。プレースホルダーテストを置き換えるためのテストを追加できます。

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

  • モデルパッケージバージョンが承認または拒否されたときにパイプラインを開始する CloudWatch イベント。

次の図は、モデルのデプロイに役立つこのテンプレートで使用されるワークフローと AWS リソースを示しています。

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

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

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

このテンプレートは、モデルの構築、トレーニング、デプロイ用の MLOps テンプレートの拡張です。これには、テンプレートのモデル構築、トレーニング、デプロイコンポーネントと、次のタイプのモニタリングを提供する追加の Amazon SageMaker Model Monitor テンプレートの両方が含まれます。

  • Data Quality (データ品質) - データ品質のドリフトをモニタリングします。

  • Model Quality (モデル品質) - 精度などのモデル品質メトリクスのドリフトをモニタリングします。

  • Bias Drift for Models in Production (本番環境のモデルのバイアスドリフト) - モデルの予測におけるバイアスをモニタリングします。

  • コードリポジトリ: AWS CodeCommit

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

MLOps Amazon SageMaker Model Monitor の テンプレート

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

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

  • SageMaker Model AWS CodeCommit Registry からモニターが使用するベースラインを取得し、ステージング環境と本番環境のテンプレートのパラメータを更新するサンプル Python コードを含むリポジトリ。また、Amazon SageMaker Model Monitor を作成するための AWS CloudFormation テンプレートも含まれています。

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

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

  • ステージング SageMaker エンドポイントが更新されるたびに、またはコード変更がリポジトリにコミットされる AWS CodePipeline たびに、2 つの Amazon EventBridge イベントルールによって Amazon SageMaker Model Monitor が開始されます CodePipeline。

MLOps イメージ構築、モデル構築、モデルデプロイ用の テンプレート

このテンプレートは、MLOps モデルの構築、トレーニング、デプロイ用の テンプレート の拡張機能です。該当するテンプレートのモデルの構築、トレーニング、デプロイのコンポーネントと、以下のオプションの両方が含まれます。

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

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

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

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

  • Amazon ECRリポジトリ

  • SageMakerイメージ

  • カスタマイズできる Dockerfile を含む CodeCommit リポジトリ

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

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

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

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

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

MLOps を使用したサードパーティーの Git リポジトリによるモデルの構築、トレーニング、デプロイ用の テンプレート CodePipeline

  • Code repository (コードリポジトリ): サードパーティー Git AWS アカウント AWS CodeStar から GitHub ユーザーまたは組織への接続を確立します。キーを sagemaker、値を true とするタグを、この AWS CodeStar 接続に追加します。

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

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

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

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

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

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

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

MLOps Jenkins を使用したサードパーティーの Git リポジトリによるモデル構築、トレーニング、デプロイ用の テンプレート

  • Code repository (コードリポジトリ): サードパーティー Git AWS アカウント AWS CodeStar から GitHub ユーザーまたは組織への接続を確立します。キーを sagemaker、値を true とするタグを、この AWS CodeStar 接続に追加します。

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

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

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

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

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

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

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

この手順は、次の図に示すアーキテクチャを構築するのに役立ちます。この例では、 をソースコントロールリポジトリ 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 プロジェクトを作成します。これにより、 GitHub リポジトリにモデル構築とデプロイのコードがシードされます。

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

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

Salesforce のモデルデプロイ

  • コードリポジトリ: AWS CodeCommit

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

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

  • Python コードで Amazon SageMaker パイプラインを作成し、パイプラインを作成および更新する方法を示すサンプルコードを含む AWS CodeCommit リポジトリ。このリポジトリには、Studio (または Studio Classic) で開いて実行できる Python Jupyter Notebook もあります。

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

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

管理者は、Salesforce Data Cloud から SageMaker Studio へのデータアクセスを有効にして AI/ML モデルを構築するために、追加のセットアップを実行する必要がある場合があります。詳細情報と手順については、ブログ記事「Amazon SageMaker と Salesforce Data Cloud の統合を使用して Salesforce アプリに AI/ML を提供する」でソリューションの概要を参照してください。

次の図は、このテンプレートで使用している、モデルの構築とトレーニングに役立つワークフローの概要を示しています。Salesforce Data Cloud と Data Wrangler 間の接続を設定し、データを前処理したら、[Salesforce モデルデプロイ] プロジェクトテンプレートを使用してモデルのトレーニングとデプロイを自動化します。テンプレートには、カスタマイズ可能なモデルデプロイコードと、モデルをトレーニングしてモデル SageMaker レジストリに登録 AWS CodePipeline するための のサンプルノートブックが用意されています。モデルを承認すると、エンドポイントはAPIゲートウェイAPIを介して として Salesforce に公開され、お客様は Salesforce 内からデプロイされたモデルを使用して予測を開始できます。

注記

このテンプレートは、APIゲートウェイのセットアップに Transport Layer Security (TLS) ポリシーバージョン 1.0 および 1.1 を許可します。カスタムドメイン名を使用すると、この設定の安全性を高めることができます。詳細については、「 のカスタムドメイン名の設定」を参照してくださいRESTAPIs

Salesforce プロジェクトテンプレートで使用されるステップを簡略化した図です。

ブログ記事「Amazon SageMaker と Salesforce Data Cloud の統合を使用して Salesforce アプリを AI/ML で強化する」では、次の手順を実行するための詳細な手順について説明しています。

  1. Salesforce のプロジェクトテンプレートの [Salesforce モデルのデプロイ] を選択し、シークレットマネージャーの名前を指定します。

  2. リポジトリをクローンして、カスタマイズ可能な SageMakerが提供するサンプルノートブックとモデルのデプロイコードを使用します。

  3. Data Wrangler を使用してデータを前処理します。

    1. Salesforce Data Cloud への接続を作成し、データを Data Wrangler にインポートします。

    2. Data Wrangler を使用して、いくつかの変換例を含むデータを準備します。

    3. Data Wrangler 設定を使用してデータを処理する処理ジョブを開始します。

  4. モデルをトレーニングします。

  5. モデルをモデルレジストリに登録します。

  6. モデルレジストリでモデルを承認します。

  7. SageMaker コンソールでエンドポイントを表示します。

  8. Salesforce Einstein Studio APIURLから を呼び出して、Einstein Studio でモデル推論を登録して使用します。

次の図は、Salesforce Data Cloud Integration で SageMaker プロジェクトテンプレートで使用されるワークフローと AWS リソースの詳細を示しています。

Salesforce プロジェクトテンプレートで使用されるステップとリソースの図です。

サードパーティーの Git リポジトリを使用するように 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-*" ] }