サーバーレスエンドポイントを作成する - Amazon SageMaker

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

サーバーレスエンドポイントを作成する

重要

Amazon SageMaker Studio または Amazon Studio Classic に Amazon SageMaker リソースの作成を許可するカスタム IAM ポリシーでは、 SageMakerそれらのリソースにタグを追加するためのアクセス権限も付与する必要があります。Studio と Studio Classic は作成したリソースに自動的にタグを付けるため、リソースにタグを追加する権限が必要です。IAM ポリシーで Studio と Studio Classic によるリソースの作成は許可されているが、タグ付けは許可されていない場合、リソースを作成しようとしたときに AccessDenied "" エラーが発生する可能性があります。詳細については、「リソースにタグ付けするための SageMakerアクセス許可を提供する」を参照してください。

AWS Amazon の マネージドポリシー SageMaker SageMaker リソースを作成する権限を付与するものには、リソースの作成時にタグを追加する権限が既に含まれています。

サーバーレスエンドポイントを作成するには、Amazon SageMaker コンソール、API、またはを使用できます。 AWS CLIサーバーレスエンドポイントは、リアルタイムエンドポイントに似たプロセスを使用して作成できます。

モデルを作成する

モデルを作成するには、モデルのアーティファクトとコンテナイメージの場所を指定する必要があります。モデルレジストリのモデルバージョンを使用することもできます。SageMaker 以下のセクションの例は、CreateModelAPI、モデルレジストリ、Amazon SageMaker コンソールを使用してモデルを作成する方法を示しています

モデルを作成するには (モデルレジストリを使用)

モデルレジストリは、ML SageMaker パイプラインで使用するモデルのバージョンをカタログ化および管理するのに役立つ機能です。サーバーレス推論でモデルレジストリを使用するには、最初にモデルレジストリのモデルグループにモデルのバージョンを登録する必要があります。モデルレジストリにモデルを登録する方法については、「モデルグループを作成する」および「モデルバージョンを登録する」の手順に従ってください。

次の例では、登録されたモデルバージョンの ARN が必要で、AWS SDK for Python (Boto3) を使用して API を呼び出します。CreateModelサーバーレス推論の場合、モデルレジストリは現在 AWS SDK for Python (Boto3) でのみサポートされています。サンプルについては、次の値を指定します。

  • model_name に、モデルの名前を入力します。

  • にはsagemaker_role、 SageMakerデフォルトで作成されたロール、またはセクションのステップ 4 でカスタマイズした SageMaker IAM ロールを使用できます。前提条件

  • ModelPackageName には、モデルのバージョンの ARN を指定します。モデルレジストリのモデルグループに登録されている必要があります。

#Setup import boto3 import sagemaker region = boto3.Session().region_name client = boto3.client("sagemaker", region_name=region) #Role to give SageMaker permission to access AWS services. sagemaker_role = sagemaker.get_execution_role() #Specify a name for the model model_name = "<name-for-model>" #Specify a Model Registry model version container_list = [ { "ModelPackageName": <model-version-arn> } ] #Create the model response = client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, container_list )

モデルを作成するには (API を使用)

次の例では、AWS SDK for Python (Boto3) を使用して API を呼び出しています。CreateModel次の値を指定します。

  • sagemaker_role, SageMakerデフォルトで作ったロールか、セクションのステップ 4 でカスタマイズした SageMaker IAM ロールを使用できます。前提条件

  • model_url には、Amazon S3 URI をモデルに指定します。

  • container には、Amazon ECR パスで使用するコンテナを取得します。この例では、 SageMaker提供されている XGBoost コンテナを使用しています。コンテナを選択していない、 SageMakerまたは自分でコンテナを持参していない場合は、前提条件セクションのステップ 6 で詳細を確認してください。

  • model_name に、モデルの名前を入力します。

#Setup import boto3 import sagemaker region = boto3.Session().region_name client = boto3.client("sagemaker", region_name=region) #Role to give SageMaker permission to access AWS services. sagemaker_role = sagemaker.get_execution_role() #Get model from S3 model_url = "s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz" #Get container image (prebuilt example) from sagemaker import image_uris container = image_uris.retrieve("xgboost", region, "0.90-1") #Create model model_name = "<name-for-model>" response = client.create_model( ModelName = model_name, ExecutionRoleArn = sagemaker_role, Containers = [{ "Image": container, "Mode": "SingleModel", "ModelDataUrl": model_url, }] )

モデルを作成するには (コンソールを使用)

  1. Amazon SageMaker コンソールにサインインします

  2. [ナビゲーション] タブで、[Inference] (推論) を選択します。

  3. 次に、[Models] (モデル) を選択します。

  4. [モデルの作成] を選択します。

  5. [モデル名] には、アカウント固有のモデル名を入力し、 AWS リージョン

  6. IAM ロールには、作成済みの IAM ロールを選択するか (「」を参照前提条件)、 SageMaker 自動的に作成を許可します。

  7. [Container input option] (コンテナ入力オプション) の [Container definition 1] (コンテナの定義 1) で、[Provide model artifacts and input location] (モデルのアーティファクトと入力場所を指定する) を選択します。

  8. [Provide model artifacts and inference image options] (モデルアーティファクトと推論イメージオプションを指定する) で、[Use a single model] (単一のモデルを使用する) を選択します。

  9. [Location of inference code image] (推論コードイメージの場所) に、コンテナへの Amazon ECR パスを入力します。イメージは、 SageMaker提供したファーストパーティイメージ (XGBoost など) か TensorFlow、エンドポイントを作成しているのと同じアカウント内の Amazon ECR リポジトリにあるイメージである必要があります。コンテナがない場合は、「前提条件」セクションのステップ 6 に戻り、詳細を参照してください。

  10. [Location of model artifacts] (モデルアーティファクトの場所) に、ML モデルへの Amazon S3 URI を入力します。例えば s3://DOC-EXAMPLE-BUCKET/models/model.tar.gz です。

  11. (オプション) [Tags] (タグ) では、キーバリューペアを追加して、モデルのメタデータを作成します。

  12. [モデルの作成] を選択します。

エンドポイント設定を作成する

モデルを作成したら、エンドポイント設定を作成します。その後、エンドポイント設定の仕様を使用してモデルをデプロイできます。設定では、リアルタイムエンドポイントとサーバーレスエンドポイントのどちらを使用するかを指定します。サーバーレスエンドポイント設定を作成するには、Amazon SageMaker コンソールCreateEndpointConfigAPI、またはを使用できます。 AWS CLI API とコンソールのアプローチについては、次のセクションで説明します。

エンドポイント設定を作成するには (API を使用)

次の例では、AWS SDK for Python (Boto3) を使用して API を呼び出しています。CreateEndpointConfig次の値を指定します。

  • EndpointConfigName では、エンドポイント設定の名前を選択します。名前は、リージョンのアカウント内で一意である必要があります。

  • (オプション) にはKmsKeyId、使用するキーのキー ID、キー ARN、エイリアス名、またはエイリアス ARN を使用します。 AWS KMS SageMaker このキーを使用して Amazon ECR イメージを暗号化します。

  • ModelName では、デプロイするモデルの名前を使用します。これは、「モデルを作成する」ステップで使用したものと同じモデルである必要があります。

  • ServerlessConfig では

    • MemorySizeInMB2048 に設定します。この例では、メモリサイズを 2048 MB に設定しますが、メモリサイズには 1024 MB、2048 MB、3072 MB、4096 MB、5120 MB、または 6144 MB のいずれかの値を選択できます。

    • MaxConcurrency20 に設定します。この例では、最大同時実行数を 20 に設定します。サーバーレスエンドポイントに設定できる同時呼び出しの最大数は 200 で、選択できる最小値は 1 です。

    • (オプション) プロビジョニングされた同時実行性を使用するには、ProvisionedConcurrency を 10 に設定します。この例では、プロビジョニングされた同時実行数を 10 に設定します。サーバーレスエンドポイントの ProvisionedConcurrency の数は、MaxConcurrency 以下である必要があります。オンデマンドのサーバーレス推論エンドポイントを使用する場合は、空のままにしておきます。プロビジョニング同時実行数は動的にスケーリングできます。詳細については、「サーバーレスエンドポイントのプロビジョニングされた同時実行の自動スケール」を参照してください。

response = client.create_endpoint_config( EndpointConfigName="<your-endpoint-configuration>", KmsKeyId="arn:aws:kms:us-east-1:123456789012:key/143ef68f-76fd-45e3-abba-ed28fc8d3d5e", ProductionVariants=[ { "ModelName": "<your-model-name>", "VariantName": "AllTraffic", "ServerlessConfig": { "MemorySizeInMB": 2048, "MaxConcurrency": 20, "ProvisionedConcurrency": 10, } } ] )

エンドポイント設定を作成するには (コンソールを使用)

  1. Amazon SageMaker コンソールにサインインします

  2. [ナビゲーション] タブで、[Inference] (推論) を選択します。

  3. 次に、[Endpoint configurations] (エンドポイント設定) を選択します。

  4. [Create endpoint configuration] (エンドポイント設定を作成) を選択します。

  5. [Endpoint configuration name] (エンドポイント設定名) に、リージョンのアカウント内で一意の名前を入力します。

  6. [エンドポイントのタイプ] で、[サーバーレス] を選択します。

    コンソールのエンドポイントタイプオプションのスクリーンショット。
  7. [Production variants] (本番稼働用バリアント) で、[Add model] (モデルの追加) を選択します。

  8. [Add model] (モデルの追加) で、モデルのリストから使用するモデルを選択し、[Save] (保存) を選択します。

  9. モデルを追加したら、[Actions] (アクション)で、[Edit] (編集) を選択します。

  10. [Memory size] (メモリサイズ)で、必要なメモリサイズを GB 単位で選択します。

    コンソールのメモリサイズオプションのスクリーンショット。
  11. [Max Concurrency] (最大同時実行数)に、エンドポイントの目的とする最大同時呼び出し数を入力します。入力できる最大値は 200、最小値は 1 です。

  12. (オプション) プロビジョニングされた同時実行性を使用するには、[プロビジョニングされた同時実行数の設定] フィールドに必要な同時呼び出し数を入力します。プロビジョニングされた同時呼び出しの数は、最大同時呼び出し数以下である必要があります。

  13. [保存] を選択します。

  14. (オプション) エンドポイント設定のメタデータを作成する場合は、[Tags] (タグ) にキーバリューペアを入力します。

  15. [Create endpoint configuration] (エンドポイント設定を作成) を選択します。

エンドポイントを作成する

サーバーレスエンドポイントを作成するには、Amazon SageMaker コンソールCreateEndpointAPI、またはを使用できます。 AWS CLI API とコンソールのアプローチについては、次のセクションで説明します。エンドポイントを作成すると、エンドポイントが使用可能になるまでに数分かかる場合があります。

エンドポイントを作成するには (API を使用)

次の例では、AWS SDK for Python (Boto3) を使用して API を呼び出しています。CreateEndpoint次の値を指定します。

  • EndpointName に、アカウントのリージョン内で一意のエンドポイントの名前を入力します。

  • EndpointConfigName には、前のセクションで作成したエンドポイント設定の名前を使用します。

response = client.create_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-endpoint-config>" )

エンドポイントを作成するには (コンソールを使用)

  1. Amazon SageMaker コンソールにサインインします

  2. [ナビゲーション] タブで、[Inference] (推論) を選択します。

  3. 次に [Endpoints] (エンドポイント) を選択します。

  4. [エンドポイントの作成] を選択します。

  5. [Endpoint name] (エンドポイント名) に、アカウントのリージョン内で一意の名前を入力します。

  6. [Attach endpoint configuration] (エンドポイント設定のアタッチ) で、[Use an existing endpoint configuration] (既存のエンドポイント設定の使用) を選択します。

  7. [Endpoint configuration] (エンドポイント設定) で、前のセクションで作成したエンドポイント設定の名前を選択し、[Select endpoint configuration] (エンドポイント設定の選択) を選択します。

  8. (オプション) エンドポイントのメタデータを作成する場合は、[Tags] (タグ) にキーバリューペアを入力します。

  9. [エンドポイントの作成] を選択します。

    コンソールのエンドポイントの作成と設定ページのスクリーンショット。