マルチモデルエンドポイントを作成する - Amazon SageMaker

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

マルチモデルエンドポイントを作成する

「」を使用できますAWS SDK for Python (Boto)または Amazon SageMaker を使用して、マルチモデルエンドポイントを作成します。

マルチモデルエンドポイントを作成する (コンソール)

マルチモデルエンドポイントを作成するには (コンソール)

  1. https://console.aws.amazon.com/sagemaker/ で Amazon SageMaker コンソールを開きます。

  2. [モデル] を選択し、[推論] グループから [モデルの作成] を選択します。

  3. [モデル名] に名前を入力します。

  4. を使用する場合IAM ロールで、AmazonSageMakerFullAccess IAM ポリシーがアタッチされている IAM ロールを選択または作成します。

  5. [Container definition (コンテナの定義)] セクションで、[Provide model artifacts and inference image options (モデルアーティファクトと推論イメージオプションの提供)] で [Use multiple models (複数のモデルの使用)] を選択します。

    
              [モデルの作成] ページのセクション。ここでは、複数のモデルを使用するを使用して、1 つのエンドポイントで複数のモデルをホストできます。
  6. [モデルの作成] を選択します。

  7. 単一モデルエンドポイントの場合と同様に、マルチモデルエンドポイントをデプロイします。手順については、「SageMaker ホスティングサービスにモデルをデプロイする」を参照してください。

マルチモデルエンドポイントを作成する (AWS SDK for Python (Boto))

マルチモデルエンドポイントを作成するには、Amazon SageMaker create_model, create_endpoint_config, および create_endpointAPI は、単一のモデルエンドポイントを作成するのと同様に、異なる点が 2 つあります。モデルコンテナを定義するときに、新しいModeパラメータ値、MultiModel。また、ModelDataUrlフィールドには、1 つのモデルをデプロイするときのように 1 つのモデルアーティファクトへのパスではなく、モデルアーティファクトが配置されている Amazon S3 のプレフィックスを指定します。

SageMaker を使用して、複数の XGBoost モデルをエンドポイントにデプロイするサンプルノートブックについては、マルチモデルエンドポイントのXGBoost サンプルノートブック

ここでは、マルチモデルエンドポイントを作成するためにそのサンプルで使用される主要な手順について概説しています。

モデルをデプロイするには (AWSSDK for Python (Boto3)

  1. マルチモデルエンドポイントのデプロイをサポートするイメージを含むコンテナーを取得します。マルチモデルエンドポイントをサポートする組み込みアルゴリズムとフレームワークコンテナーの一覧については、サポートされるアルゴリズムとフレームワーク。この例では、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' }
  2. Boto 3 SageMaker クライアントを取得し、このコンテナを使用するモデルを作成します。

    import boto3 sm_client = boto3.client('sagemaker') response = sm_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container])
  3. (オプション) シリアル推論パイプラインを使用している場合、パイプラインに含める追加のコンテナを取得し、CreateModelContainers 引数に含めます。

    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 = sm_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container])
  4. (オプション) ユースケースがモデルキャッシュの恩恵を受けない場合は、ModelCacheSettingフィールドのMultiModelConfigパラメータをDisabledに追加し、それをContainerへの呼び出しの引数create_model。値ModelCacheSettingフィールドはEnabledデフォルトでは、です。

    container = { 'Image': image, 'ModelDataUrl': 's3://<BUCKET_NAME>/<PATH_TO_ARTIFACTS>', 'Mode': 'MultiModel' 'MultiModelConfig': { // Default value is 'Enabled' 'ModelCacheSetting': 'Disabled' } } response = sm_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [container])
  5. モデルのマルチモデルエンドポイントを設定します。少なくとも 2 つのインスタンスでエンドポイントを設定することをお勧めします。これにより、SageMaker は、モデルの複数のアベイラビリティーゾーン間で可用性の高い予測のセットを提供できます。

    response = sm_client.create_endpoint_config( EndpointConfigName = '<ENDPOINT_CONFIG_NAME>', ProductionVariants=[{ 'InstanceType': 'ml.m4.xlarge', 'InitialInstanceCount': 2, 'InitialVariantWeight': 1, 'ModelName': '<MODEL_NAME>', 'VariantName': 'AllTraffic'}])
    注記

    シリアル推論パイプラインで使用できるマルチモデル対応エンドポイントは 1 つだけです。

  6. EndpointName および EndpointConfigName パラメータを使用してマルチモデルエンドポイントを作成します。

    response = sm_client.create_endpoint( EndpointName = '<ENDPOINT_NAME>', EndpointConfigName = '<ENDPOINT_CONFIG_NAME>',)