

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

# マルチモデルエンドポイントデプロイの自動スケーリングポリシーの設定
<a name="multi-model-endpoints-autoscaling"></a>

SageMaker AI マルチモデルエンドポイントでは自動スケーリングが完全にサポートされており、モデルのレプリカは管理され、モデルはトラフィックパターンに基づいてスケーリングされます。[マルチモデルエンドポイントのデプロイのためのインスタンスの推奨事項](multi-model-endpoint-instance.md) に基づいてマルチモデルエンドポイントとインスタンスのサイズを設定し、さらに、エンドポイントのインスタンスベースの自動スケーリングも設定することをお勧めします。自動スケーリングイベントのトリガーに使用される呼び出し率は、エンドポイントが提供するすべてのモデルのセットのすべての予測のセットに基づいています。エンドポイントの自動スケーリングの設定に関する詳細については、「[Automatically Scale Amazon SageMaker AI Models](https://docs.aws.amazon.com/sagemaker/latest/dg/endpoint-auto-scaling.html)」を参照してください。

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

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

## スケーリングポリシーを定義する
<a name="multi-model-endpoints-autoscaling-define"></a>

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

スケーリングポリシー設定は JSON ブロックで表現されます。スケーリングポリシー設定を JSON ブロックとしてテキストファイルに保存します。 AWS CLI または Application Auto Scaling API を呼び出すときに、そのテキストファイルを使用します。ポリシー設定構文の詳細については、*Application Auto Scaling API リファレンス*の「`[TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)`」を参照してください。

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

### 事前定義メトリクスを使用する
<a name="multi-model-endpoints-autoscaling-predefined"></a>

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

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

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

```
{"TargetValue": 70.0,
    "PredefinedMetricSpecification":
    {
        "PredefinedMetricType": "InvocationsPerInstance"
    }
}
```

**注記**  
マルチモデルエンドポイントを使用する際には `InvocationsPerInstance` を使用することをお勧めします。このメトリクスの `TargetValue` は、アプリケーションのレイテンシー要件によって異なります。また、エンドポイントの負荷テストを行い、適切なスケーリングパラメータ値を設定することをお勧めします。負荷テストとエンドポイントの自動スケーリングの設定の詳細については、ブログ「[Configuring autoscaling inference endpoints in Amazon SageMaker AI](https://aws.amazon.com/blogs/machine-learning/configuring-autoscaling-inference-endpoints-in-amazon-sagemaker/)」を参照してください。

### カスタムメトリクスを使用する
<a name="multi-model-endpoints-autoscaling-custom"></a>

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

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

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

#### CPU ベースのマルチモデルエンドポイントのカスタムメトリクスの例
<a name="multi-model-endpoints-autoscaling-custom-cpu"></a>

次の例は、スケーリングポリシーのターゲット追跡設定を示します。この設定では、`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 ベースのマルチモデルエンドポイントのカスタムメトリクスの例
<a name="multi-model-endpoints-autoscaling-custom-gpu"></a>

次の例は、スケーリングポリシーのターゲット追跡設定を示します。この設定では、`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"
    }
}
```

## クールダウン期間を追加する
<a name="multi-model-endpoints-autoscaling-cooldown"></a>

エンドポイントのスケールアウトのクールダウン期間を追加するには、`ScaleOutCooldown` の値を秒単位で指定します。同様に、モデルのスケールインのクールダウン期間を追加するには、`ScaleInCooldown` の値を秒単位で指定します。`ScaleInCooldown` と `ScaleOutCooldown` の詳細については、*Application Auto Scaling API リファレンス*の「`[TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)`」を参照してください。

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

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