翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マルチモデルエンドポイントを作成する
SageMaker コンソールまたは を使用して AWS SDK for Python (Boto) 、マルチモデルエンドポイントを作成できます。CPU または GPU ベースのエンドポイントをコンソールから作成するには、以下のセクションのコンソールの手順を参照してください。を使用してマルチモデルエンドポイントを作成する場合は AWS SDK for Python (Boto)、次のセクションの CPU または GPU の手順を使用します。CPU と GPU のワークフローは似ていますが、コンテナの要件など、いくつかの違いがあります。
トピック
マルチモデルエンドポイントを作成する (コンソール)
CPU と GPU ベースのマルチモデルエンドポイントの両方をコンソールから作成できます。 SageMaker コンソールを使用してマルチモデルエンドポイントを作成するには、次の手順に従います。
マルチモデルエンドポイントを作成するには (コンソール)
-
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker コンソールを開きます。 -
[モデル] を選択し、[推論] グループから [モデルの作成] を選択します。
-
[モデル名] に名前を入力します。
-
[IAM ロール] で、
AmazonSageMakerFullAccess
IAM ポリシーがアタッチされた IAM ロールを選択するか作成します。 -
[コンテナの定義] セクションの、[モデルアーティファクトと推論イメージオプションの提供] で [複数のモデルの使用] を選択します。
-
[推論コンテナイメージ] には、目的のコンテナイメージの Amazon ECR パスを入力します。
GPU モデルの場合は、NVIDIA Triton Inference Server を基盤とするコンテナを使用する必要があります。GPU ベースのエンドポイントで動作するコンテナイメージのリストについては、「NVIDIA Triton Inference Containers (SM support only)
」を参照してください。NVIDIA Triton 推論サーバーの詳細については、「 で Triton 推論サーバーを使用する SageMaker」を参照してください。 -
[モデルの作成] を選択します。
-
単一モデルエンドポイントの場合と同様に、マルチモデルエンドポイントをデプロイします。手順については、「 SageMaker ホスティングサービスにモデルをデプロイする」を参照してください。
で CPUs を使用してマルチモデルエンドポイントを作成する AWS SDK for Python (Boto3)
以下のセクションを使用して、CPU インスタンスベースのマルチモデルエンドポイントを作成します。マルチモデルエンドポイントは 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 最近傍の組み込みアルゴリズムイメージのアドレスを取得します。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] )注記
シリアル推論パイプラインで使用できる multi-model-enabled エンドポイントは 1 つだけです。
-
(オプション) モデルのキャッシュによる利点がないユースケースの場合は、
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' } ] )注記
シリアル推論パイプラインで使用できる multi-model-enabled エンドポイントは 1 つだけです。
-
EndpointName
およびEndpointConfigName
パラメータを使用してマルチモデルエンドポイントを作成します。response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)
で GPUs を使用してマルチモデルエンドポイントを作成する AWS SDK for Python (Boto3)
次のセクションを使用して、GPU ベースのマルチモデルエンドポイントを作成します。マルチモデルエンドポイントは SageMaker create_model
create_endpoint_config
create_endpoint
Mode
パラメータ値 MultiModel
を渡す必要があります。また、1 つのモデルをデプロイするときは 1 つのモデルアーティファクトへのパスを渡しますが、代わりに、モデルアーティファクトが配置される Amazon S3 のプレフィックスを指定する ModelDataUrl
フィールドを渡す必要があります。GPU ベースのマルチモデルエンドポイントでは、GPU インスタンスでの実行に最適化された NVIDIA Triton Inference Server のコンテナも使用する必要があります。GPU ベースのエンドポイントで動作するコンテナイメージのリストについては、「NVIDIA Triton Inference Containers (SM support only)
GPU ベースのマルチモデルエンドポイントを作成する方法を示すノートブックの例については、「Amazon SageMaker Multi-model endpoints (MME) を使用して GPUs
ここでは、GPU ベースのマルチモデルエンドポイントを作成するための主要な手順について概説しています。
モデルをデプロイするには (AWS SDK for Python (Boto 3))
-
コンテナイメージを定義します。モデルの GPU サポートを備えたマルチ ResNet モデルエンドポイントを作成するには、NVIDIA Triton サーバーイメージ を使用するコンテナを定義します。このコンテナはマルチモデルエンドポイントをサポートし、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] )注記
シリアル推論パイプラインで使用できる multi-model-enabled エンドポイントは 1 つだけです。
-
(オプション) モデルのキャッシュによる利点がないユースケースの場合は、
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>'
)