

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將端點擴展到零個執行個體
<a name="endpoint-auto-scaling-zero-instances"></a>

設定端點的自動擴展時，您可以允許縮減程序，將服務中執行個體的數量減少到零。這樣一來，您可以在端點未提供推論請求，因此不需要任何作用中執行個體的期間節省成本。

不過，在縮減至零個執行個體之後，端點在佈建至少一個執行個體之前，無法回應任何傳入的推論請求。若要自動化佈建程序，請使用 Application Auto Scaling 建立步進擴展政策。然後將政策指派給 Amazon CloudWatch 警示。

設定步進擴展政策和警示後，端點會在收到無法回應的推論請求後，自動佈建執行個體。請注意，佈建程序需要花費幾分鐘。在此期間，任何調用端點的嘗試都會產生錯誤。

下列程序說明如何設定端點的自動擴展，使其縮減至和擴展自零個執行個體。這些程序搭配使用命令和 AWS CLI。

**開始之前**

在端點可以縮減至和擴展自零個執行個體之前，端點必須符合下列要求：
+ 位於服務中。
+ 託管一個或多個推論元件。端點只有在託管推論元件時，才能在零執行個體之間擴展。

  如需進一步瞭解如何在 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 Resource Name (ARN)。在下一個步驟中，您會需要 CloudWatch 警示的 ARN。

   如需有關步進擴展政策的詳細資訊，請參閱《Application 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)。