將端點擴展到零個執行個體 - Amazon SageMaker AI

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

將端點擴展到零個執行個體

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

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

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

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

開始之前

在端點可以縮減至和擴展自零個執行個體之前,端點必須符合下列要求:

  • 位於服務中。

  • 託管一個或多個推論元件。端點只有在託管推論元件時,才能在零執行個體之間擴展。

    如需進一步瞭解如何在 SageMaker AI 端點上託管推論元件,請參閱 部署用於即時推論的模型

  • 在端點組態中,您已經針對生產變體 ManagedInstanceScaling 物件,將 MinInstanceCount 參數設為 0

    如需此參數的參考資訊,請參閱 ProductionVariantManagedInstanceScaling

讓端點縮減至零個執行個體 (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

  2. 將目標追蹤政策套用至推論元件,如下列命令所示:

    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 }

    如需更多追蹤政策組態範例,請參閱 定義擴展政策

    如需此命令及其每個參數的詳細資訊,請參閱《AWS CLI 命令參考》中的 put-scaling-policy

讓端點自零個執行個體橫向擴充 (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 使用者指南》中的步進擴展政策

  2. 建立 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