サーバーレスエンドポイントのプロビジョニングされた同時実行の自動スケール - Amazon SageMaker

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

サーバーレスエンドポイントのプロビジョニングされた同時実行の自動スケール

Amazon は、オンデマンドのサーバーレスエンドポイント SageMaker を自動的にスケールインまたはスケールアウトします。プロビジョニングされた同時実行を使用するサーバーレスエンドポイントでは、Application Auto Scaling を使用して、トラフィックプロファイルに基づいてプロビジョニングされた同時実行をスケールアップまたはスケールダウンできるため、コストを最適化できます。

サーバーレスエンドポイントでプロビジョニングされた同時実行を自動スケールするための前提条件は次のとおりです。

自動スケーリングを使用する前に、プロビジョニングされた同時実行を使用してサーバーレスエンドポイントにモデルをデプロイしておく必要があります。デプロイされたモデルは、本番稼動用バリアントと呼ばれます。プロビジョ二ングされた同時実行を使用したサーバーレスエンドポイントにモデルをデプロイする方法の詳細については、「エンドポイント設定を作成する」および「エンドポイントを作成する」を参照してください。スケーリングポリシーのメトリクスとターゲット値を指定するには、スケーリングポリシーを設定する必要があります。スケーリングポリシーを定義する方法の詳細については、「スケーリングポリシーを定義する」を参照してください。モデルを登録してスケーリングポリシーを定義した後に、そのスケーリングポリシーを登録されたモデルに適用します。スケーリングポリシーを適用する方法の詳細については、「スケーリングポリシーを適用する」を参照してください。

自動スケーリングで使用されるその他の前提条件とコンポーネントの詳細については、SageMaker 「自動スケーリングドキュメント」の自動スケーリングの前提条件「」セクションを参照してください。

モデルの登録

プロビジョニングされた同時実行を使用してサーバーレスエンドポイントに自動スケーリングを追加するには、まず AWS CLI または Application Auto Scaling を使用してモデル (本番稼働用バリアント) を登録する必要がありますAPI。

モデルの登録 (AWS CLI)

モデルを登録するには、次のパラメータで register-scalable-target AWS CLI コマンドを使用します。

  • --service-namespace – この値を sagemaker に設定します。

  • --resource-id – モデルのリソース識別子 (具体的には本番稼働用バリアント)。このパラメータでは、リソースタイプは endpoint で、一意の識別子は本番稼働用バリアントの名前です。例えば、 endpoint/MyEndpoint/variant/MyVariantです。

  • --scalable-dimension – この値を sagemaker:variant:DesiredProvisionedConcurrency に設定します。

  • --min-capacity – モデルのプロビジョニングされた同時実行の最小数。--min-capacity を 1 以上に設定します。--max-capacity で指定した値以下にする必要があります。

  • --max-capacity – Application Auto Scaling を通じて有効にする必要があるプロビジョニングされた同時実行の最大数。--max-capacity の最小数を 1 に設定します。この値は、--min-capacity で指定した値以上にする必要があります。

次の例は、プロビジョニングされた同時実行の値が 1~10 になるように動的にスケールされる、MyVariant という名前のモデルを登録する方法を示します。

aws application-autoscaling register-scalable-target \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --min-capacity 1 \ --max-capacity 10

モデルを登録する (Application Auto Scaling API)

モデルを登録するには、次のパラメータで RegisterScalableTarget Application Auto Scaling APIアクションを使用します。

  • ServiceNamespace – この値を sagemaker に設定します。

  • ResourceId – モデルのリソース識別子 (具体的には本番稼働用バリアント)。このパラメータでは、リソースタイプは endpoint で、一意の識別子は本番稼働用バリアントの名前です。例えば、 endpoint/MyEndpoint/variant/MyVariantです。

  • ScalableDimension – この値を sagemaker:variant:DesiredProvisionedConcurrency に設定します。

  • MinCapacity – モデルのプロビジョニングされた同時実行の最小数。MinCapacity を 1 以上に設定します。MaxCapacity で指定した値以下にする必要があります。

  • MaxCapacity – Application Auto Scaling を通じて有効にする必要があるプロビジョニングされた同時実行の最大数。MaxCapacity の最小数を 1 に設定します。この値は、MinCapacity で指定した値以上にする必要があります。

次の例は、プロビジョニングされた同時実行の値が 1~10 になるように動的にスケールされる、MyVariant という名前のモデルを登録する方法を示します。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.RegisterScalableTarget X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndPoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "MinCapacity": 1, "MaxCapacity": 10 }

スケーリングポリシーを定義する

スケーリングポリシーのメトリクスとターゲット値を指定するには、ターゲット追跡スケーリングポリシーを設定できます。スケーリングポリシーをテキストファイルのJSONブロックとして定義します。その後、 AWS CLI または Application Auto Scaling を呼び出すときに、そのテキストファイルを使用できますAPI。サーバーレスエンドポイントのターゲット追跡スケーリングポリシーを時間をかけずに定義するには、事前定義された SageMakerVariantProvisionedConcurrencyUtilization メトリクスを使用します。

{ "TargetValue": 0.5, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization" }, "ScaleOutCooldown": 1, "ScaleInCooldown": 1 }

スケーリングポリシーを適用する

モデルを登録した後、プロビジョニングされた同時実行を使用してサーバーレスエンドポイントにスケーリングポリシーを適用できます。定義したターゲット追跡スケーリングポリシーを適用するには、「ターゲット追跡スケーリングポリシーの適用」を参照してください。サーバーレスエンドポイントへのトラフィックフローに予測可能なルーチンがある場合は、ターゲット追跡スケーリングポリシーを適用する代わりに、特定の時間にスケーリングアクションをスケジュールすることもできます。スケーリングアクションのスケジュールに関する詳細については、「スケジュールされたスケーリング」を参照してください。

ターゲット追跡スケーリングポリシーの適用

AWS Management Console、 AWS CLI または Application Auto Scaling を使用して、プロビジョンド同時実行でサーバーレスエンドポイントにターゲット追跡スケーリングポリシーAPIを適用できます。

ターゲット追跡スケーリングポリシーの適用 (AWS CLI)

スケーリングポリシーをモデルに適用するには、次のパラメータで put-scaling-policy AWS CLI; コマンドを使用します。

  • --policy-name – スケーリングポリシーの名前。

  • --policy-type この値は に設定します。TargetTrackingScaling

  • --resource-id – バリアントのリソース識別子。このパラメータでは、リソースタイプは endpoint で、一意の識別子はバリアントの名前です。例えば、 endpoint/MyEndpoint/variant/MyVariantです。

  • --service-namespace この値は に設定します。sagemaker

  • --scalable-dimension この値は に設定します。sagemaker:variant:DesiredProvisionedConcurrency

  • --target-tracking-scaling-policy-configuration – モデルに使用するターゲット追跡スケーリングポリシー設定。

次の例では、MyScalingPolicy というターゲット追跡スケーリングポリシーを MyVariant という名前のモデルに適用する方法を示します。ポリシー設定は scaling-policy.json という名前のファイルに保存されます。

aws application-autoscaling put-scaling-policy \ --policy-name MyScalingPolicy \ --policy-type TargetTrackingScaling \ --service-namespace sagemaker \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --target-tracking-scaling-policy-configuration file://[file-localtion]/scaling-policy.json

ターゲット追跡スケーリングポリシーを適用する (Application Auto Scaling API)

スケーリングポリシーをモデルに適用するには、次のパラメータで PutScalingPolicy Application Auto Scaling APIアクションを使用します。

  • PolicyName – スケーリングポリシーの名前。

  • PolicyType この値は に設定します。TargetTrackingScaling

  • ResourceId – バリアントのリソース識別子。このパラメータでは、リソースタイプは endpoint で、一意の識別子はバリアントの名前です。例えば、 endpoint/MyEndpoint/variant/MyVariantです。

  • ServiceNamespace この値は に設定します。sagemaker

  • ScalableDimension この値は に設定します。sagemaker:variant:DesiredProvisionedConcurrency

  • TargetTrackingScalingPolicyConfiguration – モデルに使用するターゲット追跡スケーリングポリシー設定。

次の例では、MyScalingPolicy というターゲット追跡スケーリングポリシーを MyVariant という名前のモデルに適用する方法を示します。ポリシー設定は scaling-policy.json という名前のファイルに保存されます。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.PutScalingPolicy X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "PolicyName": "MyScalingPolicy", "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndpoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "PolicyType": "TargetTrackingScaling", "TargetTrackingScalingPolicyConfiguration": { "TargetValue": 0.5, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization" } } }

ターゲット追跡スケーリングポリシーの適用 (AWS Management Console)

でターゲット追跡スケーリングポリシーを適用するには AWS Management Console:

  1. Amazon SageMaker コンソール にサインインします。

  2. ナビゲーションタブで、[推論] を選択します。

  3. [エンドポイント] を選択し、すべてのエンドポイントのリストを表示します。

  4. スケーリングポリシーを適用するエンドポイントを選択します。エンドポイントの設定を含むページが表示され、モデル (本番稼働用バリアント) が [エンドポイントランタイム設定セクション] に一覧表示されます。

  5. スケーリングポリシーを適用する本番稼働用バリアントを選択し、[自動スケーリングの設定] を選択します。[バリアントの自動スケーリングの設定] ダイアログボックスが表示されます。

    コンソールのバリアントの自動スケーリングの設定ダイアログボックスのスクリーンショット。
  6. プロビジョニングされた同時実行の最小値と最大値を、[バリアントの自動スケーリング] セクションの [プロビジョニングされた同時実行の最小値] フィールドと [プロビジョニングされた同時実行の最大値] フィールドに、それぞれ入力します。プロビジョニングされた同時実行の最小値は、プロビジョニングされた同時実行の最大値以下である必要があります。

  7. ターゲットメトリクス SageMakerVariantProvisionedConcurrencyUtilization[ターゲット値] フィールドに、ターゲット値を入力します。

  8. (オプション) [スケールインクールダウン] フィールドと [スケールアウトクールダウン] フィールドに、スケールインクールダウンとスケールアウトクールダウンの値 (秒) をそれぞれ入力します。

  9. (オプション) トラフィックが減少したときに自動スケーリングでインスタンスが削除されないようにするには、[スケールインを無効にする] を選択します。

  10. [Save] を選択します。

スケジュールされたスケーリング

プロビジョニングされた同時実行を使用するサーバーレスエンドポイントへのトラフィックがルーチンパターンに従っている場合は、特定の時間にスケーリングアクションをスケジュールして、プロビジョニングされた同時実行をスケールインまたはスケールアウトする場合があります。 AWS CLI または Application Auto Scaling を使用してスケーリングアクションをスケジュールできます。

スケジュールされたスケーリング (AWS CLI)

モデルにスケーリングポリシーを適用するには、 put-scheduled-action AWS CLI; コマンドを次のパラメータとともに使用します。

  • --schedule-action-name – スケーリングアクションの名前。

  • --schedule – スケーリングアクションの開始時間と終了時間を定期的なスケジュールで指定する cron 式。

  • --resource-id – バリアントのリソース識別子。このパラメータでは、リソースタイプは endpoint で、一意の識別子はバリアントの名前です。例えば、 endpoint/MyEndpoint/variant/MyVariantです。

  • --service-namespace この値は に設定します。sagemaker

  • --scalable-dimension この値は に設定します。sagemaker:variant:DesiredProvisionedConcurrency

  • --scalable-target-action – スケーリングアクションのターゲット。

次の例は、MyVariant という名前のモデルに MyScalingAction という名前のスケーリングアクションを定期的なスケジュールで追加する方法を示しています。現在のプロビジョニングされた同時実行数が に指定された値を下回る場合、指定されたスケジュール (毎日 12:15 PM UTC)MinCapacity。Application Auto Scaling は、プロビジョニングされた同時実行を MinCapacity で指定された値にスケールアウトします。

aws application-autoscaling put-scheduled-action \ --scheduled-action-name 'MyScalingAction' \ --schedule 'cron(15 12 * * ? *)' \ --service-namespace sagemaker \ --resource-id endpoint/MyEndpoint/variant/MyVariant \ --scalable-dimension sagemaker:variant:DesiredProvisionedConcurrency \ --scalable-target-action 'MinCapacity=10'

スケジュールされたスケーリング (Application Auto Scaling API)

スケーリングポリシーをモデルに適用するには、次のパラメータで PutScheduledAction Application Auto Scaling APIアクションを使用します。

  • ScheduleActionName – スケーリングアクションの名前。

  • Schedule – スケーリングアクションの開始時間と終了時間を定期的なスケジュールで指定する cron 式。

  • ResourceId – バリアントのリソース識別子。このパラメータでは、リソースタイプは endpoint で、一意の識別子はバリアントの名前です。例えば、 endpoint/MyEndpoint/variant/MyVariantです。

  • ServiceNamespace この値は に設定します。sagemaker

  • ScalableDimension この値は に設定します。sagemaker:variant:DesiredProvisionedConcurrency

  • ScalableTargetAction – スケーリングアクションのターゲット。

次の例は、MyVariant という名前のモデルに MyScalingAction という名前のスケーリングアクションを定期的なスケジュールで追加する方法を示しています。現在のプロビジョニングされた同時実行数が に指定された値を下回る場合、指定されたスケジュール (毎日 12:15 PM UTC)MinCapacity。Application Auto Scaling は、プロビジョニングされた同時実行を MinCapacity で指定された値にスケールアウトします。

POST / HTTP/1.1 Host: autoscaling.us-east-2.amazonaws.com Accept-Encoding: identity X-Amz-Target: AnyScaleFrontendService.PutScheduledAction X-Amz-Date: 20160506T182145Z User-Agent: aws-cli/1.10.23 Python/2.7.11 Darwin/15.4.0 botocore/1.4.8 Content-Type: application/x-amz-json-1.1 Authorization: AUTHPARAMS { "ScheduledActionName": "MyScalingAction", "Schedule": "cron(15 12 * * ? *)", "ServiceNamespace": "sagemaker", "ResourceId": "endpoint/MyEndpoint/variant/MyVariant", "ScalableDimension": "sagemaker:variant:DesiredProvisionedConcurrency", "ScalableTargetAction": "MinCapacity=10" } } }