

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

# エンドポイントをゼロインスタンスにスケールする
<a name="endpoint-auto-scaling-zero-instances"></a>

エンドポイントの自動スケーリングを設定すると、スケールインプロセスでサービス内インスタンス数をゼロに減らすことができます。これにより、エンドポイントで推論リクエストを処理することがなくなり、アクティブなインスタンスを必要としない期間にコストを削減できます。

ただし、ゼロインスタンスにスケールインした後、エンドポイントでは少なくとも 1 つのインスタンスをプロビジョニングするまで受信推論リクエストに応答できません。プロビジョニングプロセスを自動化するには、Application Auto Scaling を使用してステップスケーリングポリシーを作成します。次に、Amazon CloudWatch アラームにポリシーを割り当てます。

ステップスケーリングポリシーとアラームを設定すると、エンドポイントでは応答できない推論リクエストを受け取った直後にインスタンスを自動的にプロビジョニングします。プロビジョニングプロセスには数分かかることに注意してください。その間、エンドポイントを呼び出そうとするとエラーが発生します。

次の手順では、エンドポイントがゼロインスタンスにスケールインまたはゼロインスタンスからスケールアウトするように、エンドポイントの自動スケーリングを設定する方法について説明しています。この手順では、 AWS CLIでコマンドを使用します。

**[開始する前に]**

エンドポイントがゼロインスタンスにスケールインおよびスケールアウトできるようにするには、次の要件を満たす必要があります。
+ エンドポイントが稼働中である。
+ 1 つ以上の推論コンポーネントをホストしている。エンドポイントでは、推論コンポーネントをホストしている場合にのみ、ゼロインスタンスとの間でスケーリングできます。

  SageMaker AI エンドポイントで推論コンポーネントをホストする方法については、「[リアルタイム推論用のモデルをデプロイする](realtime-endpoints-deploy-models.md)」を参照してください。
+ エンドポイント設定で、本番稼働用バリアント `ManagedInstanceScaling` オブジェクトに対して `MinInstanceCount` パラメータを `0` に設定している。

  このパラメータのリファレンス情報については、「[ProductionVariantManagedInstanceScaling](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ProductionVariantManagedInstanceScaling.html)」を参照してください。

**エンドポイントがゼロインスタンスにスケールインできるようにするには (AWS CLI)**

エンドポイントでホストしている推論コンポーネントごとに、次の操作を行います。

1. 推論コンポーネントをスケーラブルターゲットとして登録します。登録するときは、次のコマンドで示すように、最小キャパシティを `0` に設定します。

   ```
   aws application-autoscaling register-scalable-target \
     --service-namespace sagemaker \
     --resource-id inference-component/inference-component-name \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --min-capacity 0 \
     --max-capacity n
   ```

   この例では、*inference-component-name* を推論コンポーネントの名前に置き換えます。*n* を、スケールアウト時にプロビジョニングする推論コンポーネントコピーの最大数に置き換えます。

   このコマンドとその各パラメータの詳細については、*AWS CLI コマンドリファレンス*の「[register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html)」を参照してください。

1. 次のコマンドで示しているように、ターゲット追跡ポリシーを推論コンポーネントに適用します。

   ```
   aws application-autoscaling put-scaling-policy \
     --policy-name my-scaling-policy \
     --policy-type TargetTrackingScaling \
     --resource-id inference-component/inference-component-name \
     --service-namespace sagemaker \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --target-tracking-scaling-policy-configuration file://config.json
   ```

   この例では、*inference-component-name* を推論コンポーネントの名前に置き換えます。

   この例では、`config.json` ファイルに次のようなターゲット追跡ポリシー設定が含まれています。

   ```
   {
     "PredefinedMetricSpecification": {
         "PredefinedMetricType": "SageMakerInferenceComponentInvocationsPerCopy"
     },
     "TargetValue": 1,
     "ScaleInCooldown": 300,
     "ScaleOutCooldown": 300
   }
   ```

   追跡ポリシー設定のその他の例については、「[スケーリングポリシーを定義する](endpoint-auto-scaling-add-code-define.md)」を参照してください。

   このコマンドとその各パラメータの詳細については、*AWS CLI コマンドリファレンス*の「[put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)」を参照してください。

**エンドポイントがゼロインスタンスからスケールアウトできるようにするには (AWS CLI）**

エンドポイントでホストしている推論コンポーネントごとに、次の操作を行います。

1. 次のコマンドで示しているように、推論コンポーネントにステップスケーリングポリシーを適用します。

   ```
   aws application-autoscaling put-scaling-policy \
     --policy-name my-scaling-policy \
     --policy-type StepScaling \
     --resource-id inference-component/inference-component-name \
     --service-namespace sagemaker \
     --scalable-dimension sagemaker:inference-component:DesiredCopyCount \
     --step-scaling-policy-configuration file://config.json
   ```

   この例では、*my-scaling-policy* をポリシーの一意の名前に置き換えます。*inference-component-name* を推論コンポーネントの名前に置き換えます。

   この例では、`config.json` ファイルには次のようなステップスケーリングポリシー設定が含まれています。

   ```
   {
       "AdjustmentType": "ChangeInCapacity",
       "MetricAggregationType": "Maximum",
       "Cooldown": 60,
       "StepAdjustments":
         [
            {
              "MetricIntervalLowerBound": 0,
              "ScalingAdjustment": 1
            }
         ]
   }
   ```

   このステップスケーリングポリシーがトリガーされると、SageMaker AI では推論コンポーネントのコピーをサポートするために必要なインスタンスをプロビジョニングします。

   ステップスケーリングポリシーを作成したら、その Amazon リソースネーム (ARN) を書き留めます。次のステップでは、CloudWatch アラームの ARN が必要です。

   ステップスケーリングポリシーの詳細については、*アプリケーション Auto Scaling ユーザーガイド*の「[ステップスケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-step-scaling-policies.html)」を参照してください。

1. 次の例に示すように、CloudWatch アラームを作成し、ステップスケーリングポリシーを割り当てます。

   ```
   aws cloudwatch put-metric-alarm \
   --alarm-actions step-scaling-policy-arn \
   --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \
   --alarm-name ic-step-scaling-alarm \
   --comparison-operator GreaterThanThreshold  \
   --datapoints-to-alarm 1 \
   --dimensions "Name=InferenceComponentName,Value=inference-component-name" \
   --evaluation-periods 1 \
   --metric-name NoCapacityInvocationFailures \
   --namespace AWS/SageMaker \
   --period 60 \
   --statistic Sum \
   --threshold 1
   ```

   この例では、*step-scaling-policy-arn* をステップスケーリングポリシーの ARN に置き換えます。*ic-step-scaling-alarm* を任意の名前に置き換えます。*inference-component-name* を推論コンポーネントの名前に置き換えます。

   この例では `--metric-name` パラメータを `NoCapacityInvocationFailures` に設定しています。SageMaker AI では、エンドポイントが推論リクエストを受信したときにこのメトリクスを出力しますが、エンドポイントにはリクエストを処理するアクティブなインスタンスがありません。そのイベントが発生すると、アラームは前のステップのステップスケーリングポリシーを開始します。

   このコマンドとその各パラメータの詳細については、*AWS CLI コマンドリファレンス*の「[put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)」を参照してください。