本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon SageMaker AI 會自動擴展或擴展隨需無伺服器端點。對於具有佈建並行的無伺服器端點,您可以使用應用程式自動擴展根據流量設定檔上下擴展佈建並行,進而最佳化成本。
以下是在無伺服器端點上自動擴展佈建並行的先決條件:
您必須先將模型部署到具有佈建並行的無伺服器端點,才能使用自動擴展。部署的模型稱為生產變體。如需使用佈建並行將模型部署到無伺服器端點的詳細資訊,請參閱建立端點組態和建立端點。若要指定擴展政策的指標和目標值,您必須設定擴展政策。有關如何定義擴展政策的詳情,請參閱定義擴展政策。在登錄您的模型和制定擴展政策之後,請將此擴展政策套用到已登錄的模型。有關如何套用擴展政策的詳情,請參閱套用擴展政策。
如需搭配自動擴展使用的其他先決條件和元件的詳細資訊,請參閱 SageMaker AI 自動擴展文件中的 自動擴展先決條件一節。
註冊模型
若要使用佈建並行將自動擴展新增至無伺服器端點,您必須先使用 AWS CLI 或 Application Auto Scaling API 註冊模型 (生產變體)。
註冊模型 (AWS CLI)
若要註冊模型,請使用 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
— 應用程式自動擴展要啟用的佈建並行數量上限。將--max-capacity
設為最小值 1。該值必須大於或等於您為--min-capacity
指定的值。
下列範例顯示如何註冊名為 MyVariant
的模型,該模型可動態調整規模,以包含 1 到 10 個佈建並行值:
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
註冊模型 (應用程式自動擴展 API)
若要註冊您的模型,請使用 RegisterScalableTarget
應用程式自動擴展 API 動作搭配下列參數:
-
ServiceNamespace
– 將此值設定為sagemaker
。 -
ResourceId
— 模型的資源識別符 (特別是生產變體)。針對這項參數,資源的類型為endpoint
,而唯一識別符是生產變體的名稱。例如endpoint/MyEndpoint/variant/MyVariant
。 -
ScalableDimension
– 將此值設定為sagemaker:variant:DesiredProvisionedConcurrency
。 -
MinCapacity
— 模型的佈建並行數量下限。將MinCapacity
至少設定為 1。此值必須小於或等於MaxCapacity
所指定的值。 -
MaxCapacity
— 應用程式自動擴展要啟用的佈建並行數量上限。將MaxCapacity
設為最小值 1。該值必須大於或等於您為MinCapacity
指定的值。
下列範例顯示如何註冊名為 MyVariant
的模型,該模型可動態調整規模,以包含 1 到 10 個佈建並行值:
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
}
定義擴展政策
若要指定自動擴展政策的指標和目標值,您可以設定目標追蹤擴展政策。將擴展政策定義為文字檔案中的 JSON 區塊。然後,您可以在叫用 AWS CLI 或 Application Auto Scaling API 時使用該文字檔案。若要快速定義無伺服器端點的目標追蹤擴展政策,請使用 SageMakerVariantProvisionedConcurrencyUtilization
預先定義的指標。
{
"TargetValue": 0.5,
"PredefinedMetricSpecification":
{
"PredefinedMetricType": "SageMakerVariantProvisionedConcurrencyUtilization"
},
"ScaleOutCooldown": 1,
"ScaleInCooldown": 1
}
套用擴展政策
註冊模型後,您可以使用佈建並行將擴展政策套用至無伺服器端點。請參閱套用目標追蹤擴展政策,了解如何套用您定義的目標追蹤擴展政策。如果流向無伺服器端點的流量具有可預測的例行模式,則您可能需要在特定時間安排擴展動作,而非套用目標追蹤擴展政策。如需安排擴展動作的詳情,請參閱排程擴展。
套用目標追蹤擴展政策
您可以使用 AWS Management Console AWS CLI 或 Application Auto Scaling API,使用佈建並行將目標追蹤擴展政策套用至無伺服器端點。
套用目標追蹤擴展政策 (AWS CLI)
若要將擴展政策套用到您的模型,請使用 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
套用目標追蹤擴展政策 (應用程式自動擴展 API)
若要將擴展政策套用到您的模型,請使用 PutScalingPolicy
應用程式自動擴展 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 Management Console)
若要使用 套用目標追蹤擴展政策 AWS Management Console:
-
在導覽面板中,選擇 Inference (推論)。
-
選擇 Endpoints (端點),檢視所有端點的清單。
-
選擇您要套用擴展政策的端點。系統將顯示一個包含端點設定的頁面,其中模型 (生產變體) 會列在 Endpoint runtime settings (端點執行期設定) 區段下。
-
選取您要套用擴展政策的生產變體,然後選擇 Configure auto scaling (設定自動擴展)。畫面會顯示 Configure variant automatic scaling (設定變體自動擴展) 對話框。
-
在 Variant automatic scaling (變體自動擴展) 區段 Minimum provisioned concurrency (最小佈建並行) 和 Maximum provisioned concurrency (最大佈建並行) 欄位中,分別輸入最小和最大的佈建並行值。佈建並行下限必須小於或等於佈建並行的上限。
-
在目標指標結果 (
SageMakerVariantProvisionedConcurrencyUtilization
) 的 Target value (目標值) 欄位中輸入目標值。 -
(選用) 在縮減冷卻和向外擴展冷卻欄位中,分別輸入縮減冷卻與向外擴展冷卻值 (以秒為單位)。
-
(選用) 若不想在流量減少時讓自動擴展刪除執行個體,請選取 Disable scale in (停用縮減)。
-
選取 Save (儲存)。
排程擴展
如果使用佈建並行傳送至無伺服器端點的流量遵循例行模式,您可能需在特定時間安排擴展動作,以縮減或向外擴展佈建並行。您可以使用 AWS CLI 或 Application Auto Scaling 來排程擴展動作。
排程擴展功能 (AWS CLI)
若要將擴展政策套用至模型,請使用 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
— 擴展動作的目標。
以下範例說明如何將名為 MyScalingAction
的擴展動作新增至週期性排程上名為 MyVariant
的模型。按照指定的排程時間 (每天 UTC 時間下午 12:15),若目前的佈建並行低於 MinCapacity
指定的值。應用程式自動擴展會將佈建並行向外擴展至 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'
排程擴展功能 (應用程式自動擴展 API)
若要將擴展政策套用到您的模型,請使用 PutScheduledAction
應用程式自動擴展 API 動作並搭配下列參數:
-
ScheduleActionName
— 擴展動作的名稱。 -
Schedule
— Cron 表達式,透過週期性排程指定擴展動作的開始和結束時間。 -
ResourceId
— 變體的資源識別符。針對這項參數,資源的類型為endpoint
,而唯一識別符是變體的名稱。例如endpoint/MyEndpoint/variant/MyVariant
。 -
ServiceNamespace
– 將此值設定為sagemaker
。 -
ScalableDimension
– 將此值設定為sagemaker:variant:DesiredProvisionedConcurrency
。 -
ScalableTargetAction
— 擴展動作的目標。
以下範例說明如何將名為 MyScalingAction
的擴展動作新增至週期性排程上名為 MyVariant
的模型。按照指定的排程時間 (每天 UTC 時間下午 12:15),若目前的佈建並行低於 MinCapacity
指定的值。應用程式自動擴展會將佈建並行向外擴展至 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"
}
}
}