翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マルチモデルエンドポイントを作成する
SageMaker コンソールまたは を使用して AWS SDK for Python (Boto) 、マルチモデルエンドポイントを作成できます。コンソールを使用して CPUまたはGPUバックアップされたエンドポイントを作成するには、以下のセクションのコンソールの手順を参照してください。でマルチモデルエンドポイントを作成する場合は AWS SDK for Python (Boto)、以下のセクションの CPUまたは GPUの手順を使用します。CPU とGPUワークフローは似ていますが、コンテナの要件など、いくつかの違いがあります。
トピック
マルチモデルエンドポイントを作成する (コンソール)
コンソールを使用して、 CPU とGPUバックアップされたマルチモデルエンドポイントの両方を作成できます。 SageMaker コンソールを使用してマルチモデルエンドポイントを作成するには、次の手順に従います。
マルチモデルエンドポイントを作成するには (コンソール)
-
で Amazon SageMaker コンソールを開きますhttps://console.aws.amazon.com/sagemaker/
。 -
[モデル] を選択し、[推論] グループから [モデルの作成] を選択します。
-
[モデル名] に名前を入力します。
-
IAM ロール では、
AmazonSageMakerFullAccess
IAMポリシーがアタッチされたIAMロールを選択または作成します。 -
[コンテナの定義] セクションの、[モデルアーティファクトと推論イメージオプションの提供] で [複数のモデルの使用] を選択します。
-
推論コンテナイメージ には、目的のコンテナイメージの Amazon ECRパスを入力します。
GPU モデルでは、NVIDIATriton 推論サーバーでバックアップされたコンテナを使用する必要があります。GPU サポートされているエンドポイントで動作するコンテナイメージのリストについては、NVIDIATriton 推論コンテナ (SM サポートのみ)
を参照してください。NVIDIA Triton 推論サーバーの詳細については、「 で Triton 推論サーバーを使用する SageMaker」を参照してください。 -
[モデルの作成] を選択します。
-
単一モデルエンドポイントの場合と同様に、マルチモデルエンドポイントをデプロイします。手順については、 SageMaker ホスティングサービスにモデルをデプロイする を参照してください。
CPUs を使用してマルチモデルエンドポイントを作成する AWS SDK for Python (Boto3)
次のセクションを使用して、CPUインスタンスにバックアップされたマルチモデルエンドポイントを作成します。Amazon SageMaker create_model
create_endpoint_config
create_endpoint
Mode
パラメータ値 MultiModel
を渡す必要があります。また、1 つのモデルをデプロイするときは 1 つのモデルアーティファクトへのパスを渡しますが、代わりに、モデルアーティファクトが配置される Amazon S3 のプレフィックスを指定する ModelDataUrl
フィールドを渡す必要があります。
を使用して複数のXGBoostモデルをエンドポイント SageMaker にデプロイするサンプルノートブックについては、「マルチモデルエンドポイントXGBoostサンプルノートブック
次の手順では、そのサンプルでCPUバックアップされたマルチモデルエンドポイントを作成するために使用する主要なステップの概要を示します。
モデルをデプロイするには (AWS SDK for Python (Boto 3))
-
マルチモデルエンドポイントのデプロイをサポートするイメージを含んだコンテナを取得します。マルチモデルエンドポイントをサポートする組み込みアルゴリズムとフレームワークコンテナのリストについては、「マルチモデルエンドポイントでサポートされているアルゴリズム、フレームワーク、インスタンス」を参照してください。この例では、組み込みのアルゴリズムの K 最近傍 (k-NN) アルゴリズム を使います。SageMaker Python SDK
ユーティリティ関数を呼び出し image_uris.retrieve()
て、K-Nearest Neighbors 組み込みアルゴリズムイメージのアドレスを取得します。import sagemaker region = sagemaker_session.boto_region_name image = sagemaker.image_uris.retrieve("knn",region=region) container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } -
AWS SDK for Python (Boto3) SageMaker クライアントを取得し、このコンテナを使用するモデルを作成します。
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(オプション) シリアル推論パイプラインを使用している場合、パイプラインに含める追加のコンテナを取得し、
CreateModel
のContainers
引数に含めます。preprocessor_container = { 'Image': '
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<PREPROCESSOR_IMAGE>
:<TAG>
' } multi_model_container = { 'Image': '<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<IMAGE>
:<TAG>
', 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )注記
シリアル推論パイプラインで使用できるエンドポイントは 1 multi-model-enabled つだけです。
-
(オプション) モデルのキャッシュによる利点がないユースケースの場合は、
MultiModelConfig
パラメータのModelCacheSetting
フィールドの値をDisabled
に設定し、create_model
呼び出しのContainer
引数に含めます。デフォルトでは、ModelCacheSetting
フィールドの値はEnabled
です。container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container] ) -
モデルのマルチモデルエンドポイントを設定します。少なくとも 2 つのインスタンスでエンドポイントを設定することをお勧めします。これにより SageMaker 、モデルに対して複数のアベイラビリティーゾーンにわたって高可用性の予測セットを提供できます。
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] )注記
シリアル推論パイプラインで使用できるエンドポイントは 1 multi-model-enabled つだけです。
-
EndpointName
およびEndpointConfigName
パラメータを使用してマルチモデルエンドポイントを作成します。response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)
GPUs を使用してマルチモデルエンドポイントを作成する AWS SDK for Python (Boto3)
次のセクションを使用して、GPUバックアップされたマルチモデルエンドポイントを作成します。Amazon SageMaker create_model
create_endpoint_config
create_endpoint
Mode
パラメータ値 MultiModel
を渡す必要があります。また、1 つのモデルをデプロイするときは 1 つのモデルアーティファクトへのパスを渡しますが、代わりに、モデルアーティファクトが配置される Amazon S3 のプレフィックスを指定する ModelDataUrl
フィールドを渡す必要があります。GPU バックアップされたマルチモデルエンドポイントの場合、GPUインスタンスでの実行に最適化された NVIDIA Triton 推論サーバーでコンテナを使用する必要があります。GPU サポートされているエンドポイントで動作するコンテナイメージのリストについては、NVIDIATriton 推論コンテナ (SM サポートのみ)
でバックアップされたマルチモデルエンドポイントを作成する方法を示すノートブックの例についてはGPUs、「Amazon SageMaker マルチモデルエンドポイントGPUsで複数の深層学習モデルを実行する (MME)
以下の手順では、GPUバックアップされたマルチモデルエンドポイントを作成する主要なステップの概要を説明します。
モデルをデプロイするには (AWS SDK for Python (Boto 3))
-
コンテナイメージを定義します。モデルGPUをサポートするマルチ ResNet モデルエンドポイントを作成するには、NVIDIATriton Server イメージ を使用するコンテナを定義します。このコンテナは、マルチモデルエンドポイントをサポートし、GPUインスタンスで実行するために最適化されています。SageMaker Python SDK
ユーティリティ関数を呼び出し image_uris.retrieve()
て、イメージのアドレスを取得します。例:import sagemaker region = sagemaker_session.boto_region_name // Find the sagemaker-tritonserver image at // https://github.com/aws/amazon-sagemaker-examples/blob/main/sagemaker-triton/resnet50/triton_resnet50.ipynb // Find available tags at https://github.com/aws/deep-learning-containers/blob/master/available_images.md#nvidia-triton-inference-containers-sm-support-only image = "
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/sagemaker-tritonserver:<TAG>
".format( account_id=account_id_map[region], region=region ) container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel', "Environment": {"SAGEMAKER_TRITON_DEFAULT_MODEL_NAME": "resnet"}, } -
AWS SDK for Python (Boto3) SageMaker クライアントを取得し、このコンテナを使用するモデルを作成します。
import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_client.create_model( ModelName =
'<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container]) -
(オプション) シリアル推論パイプラインを使用している場合、パイプラインに含める追加のコンテナを取得し、
CreateModel
のContainers
引数に含めます。preprocessor_container = { 'Image': '
<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<PREPROCESSOR_IMAGE>
:<TAG>
' } multi_model_container = { 'Image': '<ACCOUNT_ID>
.dkr.ecr.<REGION_NAME>
.amazonaws.com/<IMAGE>
:<TAG>
', 'ModelDataUrl': 's3://<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )注記
シリアル推論パイプラインで使用できるエンドポイントは 1 multi-model-enabled つだけです。
-
(オプション) モデルのキャッシュによる利点がないユースケースの場合は、
MultiModelConfig
パラメータのModelCacheSetting
フィールドの値をDisabled
に設定し、create_model
呼び出しのContainer
引数に含めます。デフォルトでは、ModelCacheSetting
フィールドの値はEnabled
です。container = { 'Image': image, 'ModelDataUrl': 's3://
<BUCKET_NAME>
/<PATH_TO_ARTIFACTS>
', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sagemaker_client.create_model( ModelName ='<MODEL_NAME>'
, ExecutionRoleArn = role, Containers = [container] ) -
モデルのGPUバックアップされたインスタンスを使用してマルチモデルエンドポイントを設定します。可用性を高め、キャッシュヒット率を高めるために、エンドポイントに複数のインスタンスを設定することをお勧めします。
response = sagemaker_client.create_endpoint_config( EndpointConfigName =
'<ENDPOINT_CONFIG_NAME>'
, ProductionVariants=[ { 'InstanceType': 'ml.g4dn.4xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName':'<MODEL_NAME>'
, 'VariantName': 'AllTraffic' } ] ) -
EndpointName
およびEndpointConfigName
パラメータを使用してマルチモデルエンドポイントを作成します。response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)