マルチモデルエンドポイントデプロイの自動スケーリングポリシーの設定 - Amazon SageMaker

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

マルチモデルエンドポイントデプロイの自動スケーリングポリシーの設定

SageMaker マルチモデルエンドポイントは、モデルのレプリカを管理し、トラフィックパターンに基づいてモデルがスケーリングされるようにする自動スケーリングを完全にサポートします。マルチモデルエンドポイントのデプロイのためのインスタンスの推奨事項 に基づいてマルチモデルエンドポイントとインスタンスのサイズを設定し、さらに、エンドポイントのインスタンスベースの自動スケーリングも設定することをお勧めします。自動スケーリングイベントのトリガーに使用される呼び出し率は、エンドポイントが提供するすべてのモデルのセットのすべての予測のセットに基づいています。エンドポイントの自動スケーリングの設定の詳細については、「Amazon SageMaker モデルの自動スケーリング」を参照してください。

自動スケーリングポリシーは、 とGPUバックアップされたマルチモデルエンドポイントの両方で、事前定義されたメトリクスCPUとカスタムメトリクスを使用して設定できます。

注記

SageMaker マルチモデルエンドポイントメトリクスは、1 分単位で利用できます。

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

スケーリングポリシーのメトリクスとターゲット値を指定するには、ターゲット追跡スケーリングポリシーを設定します。事前定義されたメトリクスまたはカスタムメトリクスのいずれかを使用できます。

スケーリングポリシー設定は、 JSON ブロックで表されます。スケーリングポリシー設定をJSONブロックとしてテキストファイルに保存します。 AWS CLI または Application Auto Scaling を呼び出すときに、そのテキストファイルを使用しますAPI。ポリシー設定構文の詳細については、「Application Auto Scaling APIリファレンスTargetTrackingScalingPolicyConfiguration」の「」を参照してください。

ターゲット追跡スケーリングポリシー設定を定義するには、次のオプションを使用できます。

事前定義メトリクスを使用する

バリアントのターゲット追跡スケーリングポリシーを時間をかけずに定義するには、事前定義された SageMakerVariantInvocationsPerInstance メトリクスを使用します。SageMakerVariantInvocationsPerInstance は、バリアントの各インスタンスの 1 分あたりの呼び出しの平均回数です。このメトリクスを使用することを強く推奨します。

スケーリングポリシーで事前定義されたメトリクスを使用するには、スケーリングポリシーのターゲット追跡設定を作成します。ターゲット追跡設定に、事前定義されたメトリクスの PredefinedMetricSpecification と、そのメトリクスのターゲット値の TargetValue が含まれている必要があります。

次の例では、バリアントのターゲット追跡スケーリングの一般的なポリシー設定について説明します。この設定では、事前定義された SageMakerVariantInvocationsPerInstance メトリクスを使用してバリアントのインスタンス数を調整し、各インスタンスの InvocationsPerInstance メトリクスが 70 になるようにします。

{"TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "InvocationsPerInstance" } }
注記

マルチモデルエンドポイントを使用する際には InvocationsPerInstance を使用することをお勧めします。このメトリクスの TargetValue は、アプリケーションのレイテンシー要件によって異なります。また、エンドポイントの負荷テストを行い、適切なスケーリングパラメータ値を設定することをお勧めします。エンドポイントのロードテストと自動スケーリングの設定の詳細については、ブログ「Amazon での自動スケーリング推論エンドポイントの設定 SageMaker」を参照してください。

カスタムメトリクスを使用する

カスタム要件を満たすようにターゲット追跡スケーリングポリシーを定義する必要がある場合は、カスタムメトリクスを定義します。スケーリングに比例して変動する本番稼働用バリアントのメトリクスに基づいて、カスタムメトリクスを定義することができます。

すべての SageMaker メトリクスがターゲット追跡に機能するわけではありません。メトリクスは、有効な使用率メトリクスで、インスタンスの使用頻度を示す必要があります。バリアントのインスタンス数に反比例してメトリクスの値を増減する必要があります。つまり、インスタンス数が増えるときはメトリクスの値が減る必要があります。

重要

自動スケーリングを本稼働環境にデプロイする前に、カスタムメトリクスを使用して自動スケーリングをテストする必要があります。

CPU バックアップされたマルチモデルエンドポイントのカスタムメトリクスの例

次の例は、スケーリングポリシーのターゲット追跡設定を示します。この設定では、 という名前のモデルの場合my-model、 のカスタムメトリクスは、すべてのインスタンスの平均CPU使用率が 50% に基づいてエンドポイントのインスタンス数CPUUtilizationを調整します。

{"TargetValue": 50, "CustomizedMetricSpecification": {"MetricName": "CPUUtilization", "Namespace": "/aws/sagemaker/Endpoints", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "ModelName","Value": "my-model"} ], "Statistic": "Average", "Unit": "Percent" } }

GPU バックアップされたマルチモデルエンドポイントのカスタムメトリクスの例

次の例は、スケーリングポリシーのターゲット追跡設定を示します。この設定では、 という名前のモデルの場合my-model、 のカスタムメトリクスは、すべてのインスタンスの平均GPU使用率が 50% に基づいてエンドポイントのインスタンス数GPUUtilizationを調整します。

{"TargetValue": 50, "CustomizedMetricSpecification": {"MetricName": "GPUUtilization", "Namespace": "/aws/sagemaker/Endpoints", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "ModelName","Value": "my-model"} ], "Statistic": "Average", "Unit": "Percent" } }

クールダウン期間を追加する

エンドポイントのスケールアウトのクールダウン期間を追加するには、ScaleOutCooldown の値を秒単位で指定します。同様に、モデルのスケールインのクールダウン期間を追加するには、ScaleInCooldown の値を秒単位で指定します。ScaleInCooldown と の詳細についてはScaleOutCooldownApplication Auto Scaling APIリファレンスTargetTrackingScalingPolicyConfigurationの「」を参照してください。

次に、スケーリングポリシーのターゲット追跡設定の例を示します。この設定では、事前定義された SageMakerVariantInvocationsPerInstance メトリクスを使用して、バリアントの全インスタンスの平均 70 に基づいてそのスケーリングを調整します。この構成では、10 分間のスケールインのクールダウン期間と 5 分間のスケールアウトのクールダウン期間が提供されます。

{"TargetValue": 70.0, "PredefinedMetricSpecification": {"PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" }, "ScaleInCooldown": 600, "ScaleOutCooldown": 300 }