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

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

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

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

CPU と GPU ベースのマルチモデルエンドポイントの両方に、事前定義済みのメトリクスとカスタムメトリクスを使用して自動スケーリングポリシーを設定できます。

注記

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 は、アプリケーションのレイテンシー要件によって異なります。また、エンドポイントの負荷テストを行い、適切なスケーリングパラメータ値を設定することをお勧めします。エンドポイントの負荷テストと自動スケーリングの設定の詳細については、ブログ記事「Configuring autoscaling inference endpoints in Amazon SageMaker 」を参照してください。

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

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

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

重要

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

CPU ベースのマルチモデルエンドポイントのカスタムメトリクスの例

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

{"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 という名前のモデルについて、カスタムメトリクス GPUUtilization が GPU 平均使用率 50% に基づいてエンドポイントのインスタンス数を全インスタンスにわたって調整します。

{"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 の値を秒単位で指定します。ScaleInCooldownScaleOutCooldown の詳細については、Application Auto Scaling API リファレンスの「TargetTrackingScalingPolicyConfiguration」を参照してください。

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

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