本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
將端點擴展到零個執行個體
設定端點的自動擴展時,您可以允許縮減程序,將服務中執行個體的數量減少到零。這樣一來,您可以在端點未提供推論請求,因此不需要任何作用中執行個體的期間節省成本。
不過,在縮減至零個執行個體之後,端點在佈建至少一個執行個體之前,無法回應任何傳入的推論請求。若要自動化佈建程序,請使用 Application Auto Scaling 建立步進擴展政策。然後將政策指派給 Amazon CloudWatch 警示。
設定步進擴展政策和警示後,端點會在收到無法回應的推論請求後,自動佈建執行個體。請注意,佈建程序需要花費幾分鐘。在此期間,任何調用端點的嘗試都會產生錯誤。
下列程序說明如何設定端點的自動擴展,使其縮減至和擴展自零個執行個體。這些程序搭配使用命令和 AWS CLI。
開始之前
在端點可以縮減至和擴展自零個執行個體之前,端點必須符合下列要求:
-
位於服務中。
-
託管一個或多個推論元件。端點只有在託管推論元件時,才能在零執行個體之間擴展。
如需進一步瞭解如何在 SageMaker AI 端點上託管推論元件,請參閱 部署用於即時推論的模型。
-
在端點組態中,您已經針對生產變體
ManagedInstanceScaling物件,將MinInstanceCount參數設為0。如需此參數的參考資訊,請參閱 ProductionVariantManagedInstanceScaling。
讓端點縮減至零個執行個體 (AWS CLI)
請針對端點所託管的每個推論元件,執行下列動作:
-
將推論元件註冊為可擴展目標。註冊時,請將容量下限設為
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-capacityn在此範例中,將
inference-component-name取代為推論元件的名稱。將n取代為橫向擴充時要佈建的推論元件複本數量上限。如需此命令及其每個參數的詳細資訊,請參閱《AWS CLI 命令參考》中的 register-scalable-target。
-
將目標追蹤政策套用至推論元件,如下列命令所示:
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)
請針對端點所託管的每個推論元件,執行下列動作:
-
將步進擴展政策套用至推論元件,如下列命令所示:
aws application-autoscaling put-scaling-policy \ --policy-namemy-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 使用者指南》中的步進擴展政策。
-
建立 CloudWatch 警示並將步進擴展政策指派給它,如下範例所示:
aws cloudwatch put-metric-alarm \ --alarm-actionsstep-scaling-policy-arn\ --alarm-description "Alarm when SM IC endpoint invoked that has 0 instances." \ --alarm-nameic-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。