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

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

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

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

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

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

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

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

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

  4. [IAM role] (IAM ロール) には、AmazonSageMakerFullAccess IAM ポリシーがアタッチされている IAM ロールを選択または作成します。

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

    
              1 つのエンドポイントで複数のモデルをホストするために [Use multiple models] (複数のモデルを使用する) を選択できる、[Create model] (モデルの作成) ページのセクション。
  6. [モデルの作成] を選択します。

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

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

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

SageMaker を使って複数の XGBoost モデルをエンドポイントにデプロイするサンプルノートブックについては、「マルチモデルエンドポイント (XGBoost) のサンプルノートブック」を参照してください。

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

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

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

    import boto3 sagemaker_client = boto3.client('sagemaker') response = sagemaker_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 = sagemaker_client.create_model( ModelName = '<MODEL_NAME>', ExecutionRoleArn = role, Containers = [preprocessor_container, multi_model_container] )
  4. (オプション) モデルのキャッシュによる利点がないユースケースの場合は、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] )
  5. モデルのマルチモデルエンドポイントを設定します。少なくとも 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 つだけです。

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

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