翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マルチモデルエンドポイントを作成する
AWS SDK for Python (Boto) または Amazon SageMaker を使って、マルチモデルエンドポイントを作成します。
マルチモデルエンドポイントを作成する (コンソール)
マルチモデルエンドポイントを作成するには (コンソール)
-
https://console.aws.amazon.com/sagemaker/
で Amazon SageMaker コンソールを開きます。 -
[モデル] を選択し、[推論] グループから [モデルの作成] を選択します。
-
[モデル名] に名前を入力します。
-
[IAM role] (IAM ロール) には、AmazonSageMakerFullAccess IAM ポリシーがアタッチされている IAM ロールを選択または作成します。
-
[Container definition (コンテナの定義)] セクションで、[Provide model artifacts and inference image options (モデルアーティファクトと推論イメージオプションの提供)] で [Use multiple models (複数のモデルの使用)] を選択します。
-
[モデルの作成] を選択します。
-
単一モデルエンドポイントの場合と同様に、マルチモデルエンドポイントをデプロイします。手順については、モデルをにデプロイする SageMaker ホスティングサービス を参照してください。
マルチモデルエンドポイントを作成する (AWS SDK for Python (Boto3))
Amazon SageMaker を使用してマルチモデルエンドポイントを作成します。create_model
create_endpoint_config
create_endpoint
Mode
パラメータ値 MultiModel
を渡す必要があります。また、1 つのモデルをデプロイするときは 1 つのモデルアーティファクトへのパスを渡しますが、代わりに、モデルアーティファクトが配置される Amazon S3 のプレフィックスを指定する ModelDataUrl
フィールドを渡す必要があります。
SageMaker を使って複数の XGBoost モデルをエンドポイントにデプロイするサンプルノートブックについては、「マルチモデルエンドポイント (XGBoost) のサンプルノートブック
ここでは、マルチモデルエンドポイントを作成するためにそのサンプルで使用される主要な手順について概説しています。
モデルをデプロイするには (AWS SDK for Python (Boto3))
-
マルチモデルエンドポイントのデプロイをサポートするイメージを含んだコンテナを取得します。マルチモデルエンドポイントをサポートする組み込みアルゴリズムとフレームワークコンテナのリストについては、「サポートされるアルゴリズムとフレームワーク」を参照してください。この例では、組み込みのアルゴリズムの 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' } -
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] ) -
(オプション) モデルのキャッシュによる利点がないユースケースの場合は、
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 つだけです。
-
EndpointName
およびEndpointConfigName
パラメータを使用してマルチモデルエンドポイントを作成します。response = sagemaker_client.create_endpoint( EndpointName =
'<ENDPOINT_NAME>'
, EndpointConfigName ='<ENDPOINT_CONFIG_NAME>'
)