

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

# サーバーレスエンドポイントのプロビジョニングされた同時実行の自動スケール
<a name="serverless-endpoints-autoscale"></a>

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

 サーバーレスエンドポイントでプロビジョニングされた同時実行を自動スケールするための前提条件は次のとおりです。
+ [モデルの登録](#serverless-endpoints-autoscale-register)
+ [スケーリングポリシーを定義する](#serverless-endpoints-autoscale-define)
+ [スケーリングポリシーを適用する](#serverless-endpoints-autoscale-apply)

 自動スケーリングを使用する前に、プロビジョニングされた同時実行を使用してサーバーレスエンドポイントにモデルをデプロイしておく必要があります。デプロイされたモデルは、[本番稼動用バリアント](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariant.html)と呼ばれます。プロビジョ二ングされた同時実行を使用したサーバーレスエンドポイントにモデルをデプロイする方法の詳細については、「[エンドポイント設定を作成する](serverless-endpoints-create-config.md)」および「[エンドポイントを作成する](serverless-endpoints-create-endpoint.md)」を参照してください。スケーリングポリシーのメトリクスとターゲット値を指定するには、スケーリングポリシーを設定する必要があります。スケーリングポリシーを定義する方法の詳細については、「[スケーリングポリシーを定義する](#serverless-endpoints-autoscale-define)」を参照してください。モデルを登録してスケーリングポリシーを定義した後に、そのスケーリングポリシーを登録されたモデルに適用します。スケーリングポリシーを適用する方法の詳細については、「[スケーリングポリシーを適用する](#serverless-endpoints-autoscale-apply)」を参照してください。

 オートスケーリングに関わるその他の前提条件およびコンポーネントの詳細については、[SageMaker AI オートスケーリングに関するドキュメント](endpoint-auto-scaling.md)の「[自動スケーリングの前提条件](endpoint-auto-scaling-prerequisites.md)」セクションを参照してください。

## モデルの登録
<a name="serverless-endpoints-autoscale-register"></a>

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

### モデルの登録 (AWS CLI)
<a name="serverless-endpoints-autoscale-register-cli"></a>

 モデルを登録するには、次のパラメータで `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)
<a name="serverless-endpoints-autoscale-register-api"></a>

 モデルを登録するには、`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
}
```

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

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

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

## スケーリングポリシーを適用する
<a name="serverless-endpoints-autoscale-apply"></a>

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

### ターゲット追跡スケーリングポリシーの適用
<a name="serverless-endpoints-autoscale-apply-target"></a>

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

#### ターゲット追跡スケーリングポリシーの適用 (AWS CLI)
<a name="serverless-endpoints-autoscale-apply-target-cli"></a>

 スケーリングポリシーをモデルに適用するには、次のパラメータで `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)
<a name="serverless-endpoints-autoscale-apply-target-api"></a>

 モデルにスケーリングポリシーを適用するには、次のパラメータを指定して `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 マネジメントコンソール)
<a name="serverless-endpoints-autoscale-apply-target-console"></a>

 ターゲット追跡スケーリングポリシーを AWS マネジメントコンソール で適用するには: 

1.  [Amazon SageMaker AI コンソール](https://console.aws.amazon.com/sagemaker/)にサインインします。

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

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

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

1.  スケーリングポリシーを適用する本番稼働用バリアントを選択し、**[自動スケーリングの設定]** を選択します。**[バリアントの自動スケーリングの設定]** ダイアログボックスが表示されます。  
![コンソールのバリアントの自動スケーリングの設定ダイアログボックスのスクリーンショット。](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/serverless-endpoints-variant-autoscaling.png)

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

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

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

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

1.  **[保存]** を選択します。

### スケジュールに基づくスケーリング
<a name="serverless-endpoints-autoscale-apply-scheduled"></a>

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

#### スケジュールされたスケーリング (AWS CLI)
<a name="serverless-endpoints-autoscale-apply-scheduled-cli"></a>

 スケーリングポリシーをモデルに適用するには、次のパラメータで `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 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)
<a name="serverless-endpoints-autoscale-apply-scheduled-api"></a>

 モデルにスケーリングポリシーを適用するには、次のパラメータを指定して `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 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"
        }
    }
}
```