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

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

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

モデルにスケーリングポリシーを追加する前に、ポリシー設定をJSONブロックとしてテキストファイルに保存します。 AWS Command Line Interface (AWS CLI) または Application Auto Scaling を呼び出すときに、そのテキストファイルを使用しますAPI。適切な CloudWatch メトリクスを選択することで、スケーリングを最適化できます。ただし、本番環境でカスタムメトリクスを使用する前に、カスタムメトリクスを使用して自動スケーリングをテストする必要があります。

このセクションでは、ターゲット追跡スケーリングポリシーのポリシー設定例を示します。

事前定義されたメトリクスを指定する (CloudWatch メトリクス: InvocationsPerInstance)

以下は、インスタンスあたりの平均呼び出し数を 70 に維持するバリアントのターゲット追跡ポリシー設定の例です。この設定を config.json という名前のファイルに保存してください。

{ "TargetValue": 70.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantInvocationsPerInstance" } }

詳細については、「Application Auto Scaling APIリファレンスTargetTrackingScalingPolicyConfiguration」の「」を参照してください。

高解像度の事前定義済みメトリクスを指定する (CloudWatch メトリクス: ConcurrentRequestsPerModel および ConcurrentRequestsPerCopy)

次の高解像度 CloudWatch メトリクスを使用すると、モデルが受信する同時リクエストの量に対してスケーリングポリシーを設定できます。

ConcurrentRequestsPerModel

モデルコンテナによって受信される同時リクエストの数。

ConcurrentRequestsPerCopy

推論コンポーネントによって受信される同時リクエストの数。

これらのメトリクスは、モデルコンテナが処理する同時リクエストの数を追跡します。これには、コンテナ内でキューに入れられたリクエストも含まれます。トークンのストリームとして推論レスポンスを送信するモデルの場合、これらのメトリクスは、モデルがリクエストの最後のトークンを送信するまで、各リクエストを追跡します。

高解像度メトリクスとして、標準 CloudWatchメトリクスよりも頻繁にデータを生成します。メトリクスなどの標準InvocationsPerInstanceメトリクスは、1 分に 1 回データを送信します。ただし、これらの高解像度メトリクスは 10 秒ごとにデータを送信します。したがって、モデルへの同時トラフィックが増加すると、ポリシーは標準メトリクスよりもはるかに迅速にスケールアウトすることで対応します。ただし、モデルへのトラフィックが減少すると、ポリシーは標準メトリクスと同じ速度でスケールインします。

以下は、モデルあたりの同時リクエスト数が 5 を超える場合にインスタンスを追加するターゲット追跡ポリシー設定の例です。この設定を config.json という名前のファイルに保存してください。

{ "TargetValue": 5.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "SageMakerVariantConcurrentRequestsPerModelHighResolution" } }

推論コンポーネントを使用して複数のモデルを同じエンドポイントにデプロイする場合は、同等のポリシーを作成できます。この場合、 PredefinedMetricType を に設定しますSageMakerInferenceComponentConcurrentRequestsPerCopyHighResolution

詳細については、「Application Auto Scaling APIリファレンスTargetTrackingScalingPolicyConfiguration」の「」を参照してください。

カスタムメトリクスを定義する (CloudWatch メトリクス: CPUUtilization)

カスタムメトリクスを使用してターゲット追跡スケーリングポリシーを作成するには、メトリクスの名前、名前空間、単位、統計、ゼロ以上のディメンションを指定します。ディメンションには、そのディメンションの名前と値を含みます。キャパシティに比例して変化する本番稼働用バリアントメトリクスを使用できます。

次の設定例は、カスタムメトリクスを使用したターゲット追跡スケーリングポリシーを示しています。このポリシーは、すべてのインスタンスの平均CPU使用率が 50% に基づいてバリアントをスケーリングします。この設定を config.json という名前のファイルに保存してください。

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

詳細については、「Application Auto Scaling APIリファレンスCustomizedMetricSpecification」の「」を参照してください。

カスタムメトリクスを定義する (CloudWatch メトリクス: ExplanationsPerInstance)

エンドポイントでオンライン説明可能性が有効になっている場合、バリアントについて、インスタンスごとに 1 分あたりに説明されたレコードの平均数を出力するExplanationsPerInstanceメトリクスが出力されます。レコードを説明するリソース使用率は、レコードを予測する場合と大きく異なることがあります。このメトリクスは、オンライン説明可能性が有効になっているエンドポイントのターゲット追跡スケーリングに強くお勧めします。

スケーラブルなターゲットに対して複数のターゲット追跡ポリシーを作成できます。(InvocationsPerInstanceポリシーに加えて) 事前定義されたメトリクスを指定する (CloudWatch メトリクス: InvocationsPerInstance)セクションからExplanationsPerInstanceポリシーを追加することを検討してください。EnableExplanations パラメータでしきい値が設定されているため、ほとんどの呼び出しで説明が返されない場合、エンドポイントはInvocationsPerInstanceポリシーを選択できます。多数の説明がある場合、エンドポイントは ExplanationsPerInstance ポリシーを使用できます。

次の設定例は、カスタムメトリクスを使用したターゲット追跡スケーリングポリシーを示しています。ポリシースケールは、各インスタンスのExplanationsPerInstanceメトリクスが 20 になるようにバリアントインスタンスの数を調整します。この設定を config.json という名前のファイルに保存してください。

{ "TargetValue": 20.0, "CustomizedMetricSpecification": { "MetricName": "ExplanationsPerInstance", "Namespace": "AWS/SageMaker", "Dimensions": [ {"Name": "EndpointName", "Value": "my-endpoint" }, {"Name": "VariantName","Value": "my-variant"} ], "Statistic": "Sum" } }

詳細については、「Application Auto Scaling APIリファレンスCustomizedMetricSpecification」の「」を参照してください。

クールダウン期間を指定する

オプションで、 ScaleOutCooldown および ScaleInCooldownパラメータを指定することで、ターゲット追跡スケーリングポリシーでクールダウン期間を定義できます。

以下は、インスタンスあたりの平均呼び出し数を 70 に維持するバリアントのターゲット追跡ポリシー設定の例です。ポリシー設定では、スケールインクールダウン期間が 10 分 (600 秒)、スケールアウトクールダウン期間が 5 分 (300 秒) になります。この設定を config.json という名前のファイルに保存してください。

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

詳細については、「Application Auto Scaling APIリファレンスTargetTrackingScalingPolicyConfiguration」の「」を参照してください。