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