滾動部署 - Amazon SageMaker

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

滾動部署

更新端點時,您可以指定滾動式部署,以逐步將流量從舊機群轉移到新機群。您可以控制流量轉移步驟的大小,並指定評估期間,以便在從舊機群終止執行個體之前,監控新執行個體是否存有問題。使用滾動式部署時,舊機群上的執行個體會在每次流量轉移到新機群之後清除,從而減少更新端點所需的額外執行個體數量。這對於需求量高的加速執行個體特別實用。

滾動式部署會以可設定的批次大小更新端點,逐漸將先前的模型版本部署取代為新版本。滾動式部署的流量轉移行為與藍/綠部署中的線性流量轉移模式類似,但是與藍/綠部署相比,滾動式部署可提供您降低容量需求的好處。使用滾動式部署時,一次可以減少作用中的執行個體,而且您可以更精細地控制要在新機群中更新的執行個體數量。如有大型模型或具有許多執行個體的大型端點,則應考慮使用滾動式部署而非藍/綠部署。

下列清單說明 Amazon 中滾動式部署的主要功能 SageMaker:

  • 製作期。製作期是指在進入下一個部署階段之前監控新機群的設定時間。如果任何預先指定的警示在任何製作期間發生故障,則所有端點流量都會還原至舊的機群。製作期可以幫助您在永久轉移流量之前建立對更新的信心。

  • 滾動批次大小。您可以精細控制流量轉移的每個批次大小,或是每個批次中要更新的執行個體數目。這個數字的範圍可以是您機群規模的 5-50%。您可以將批次大小指定為執行個體數目或機群的整體百分比。

  • 自動還原。您可以指定 SageMaker 用來監控新叢集的 Amazon CloudWatch 警示。如果更新的程式碼發 SageMaker 生問題發生任何警示,請啟動自動回復至舊機群,以維持可用性,進而將風險降至最低。

注意

如果您的端點使用 Exclusions (排除項目) 頁面中列出的任何功能,則無法使用滾動式部署。

運作方式

在滾動式部署期間, SageMaker 提供基礎結構以將流量從舊叢集轉移到新叢集,而不必一次佈建所有新執行個體。 SageMaker 使用以下步驟轉移流量:

  1. SageMaker 佈建新叢集中的第一批執行個體。

  2. 部分流量會從舊執行個體轉移到第一批新執行個體。

  3. 烘烤期過後,如果沒有發生 Amazon CloudWatch 警報,請 SageMaker 清理一批舊執行個體。

  4. SageMaker 繼續分批佈建、轉移和清理執行個體,直到部署完成為止。

如果警示在其中一個製作期間觸發,則流量會以您指定的大小批次回復至舊機群。或者,您可以指定滾動部署,以便在警示中斷時將 100% 的流量轉移回舊機群。

下圖顯示成功的滾動式部署進展,如前面的步驟所述。

滾動式部署流量從舊機群成功轉移到新叢集的步驟。

若要建立滾動式部署,您只需要指定所需的部署組態。然後 SageMaker 處理佈建新執行個體、終止舊執行個體,以及為您轉移流量。您可以透過現有的和和 AWS Command Line Interface 指令來建立UpdateEndpointCreateEndpoint SageMaker API和管理您的部署。

必要條件

在設定滾動式部署之前,您必須先建立 Amazon CloudWatch 警示以觀看端點中的指標。如有任何警示在製作期間觸發,那麼流量就會開始回復到您的舊機群。若要瞭解如何在端點上設定 CloudWatch 警示,請參閱先決條件頁面自動還原組態和監控。若要進一步了解 CloudWatch 警示,請參閱 Amazon 使用 CloudWatch 者指南中的使用 Amazon CloudWatch 警示

此外,請檢閱 Exclusions (排除項目) 頁面,確定您的端點符合滾動式部署的需求。

確定滾動批次大小

在更新端點之前,請確定要用於將流量遞增轉移到新機群的批次大小。

對於滾動式部署,您可以指定機群容量的 5–50% 的批次大小。如果您選擇大型批次大小,部署會更快完成。不過請記住,端點在更新時需要更多容量,大致上是批次大小的額外負荷。如果您選擇較小的批次大小,部署會花費較長的時間,但在部署期間使用的容量較少。

設定滾動式部署

準備好進行部署並為端點設定 CloudWatch 警示後,您可以使用中的 SageMaker UpdateEndpointAPI或 update 端點命令啟動部署。 AWS Command Line Interface

如何更新端點

下列範例顯示如何使用 Bo SageMaker to3 用戶端的 update_endpoint 方法,透過滾動式部署來更新端點。

若要設定滾動式部署,請使用下列範例和欄位:

  • 針對 EndpointName,請使用您要更新的現有端點名稱。

  • EndpointConfigName 中,使用您要使用的端點組態名稱。

  • 在對AutoRollbackConfiguration象中的Alarms字段中,您可以按名稱添加 CloudWatch 警報。為您要使用的每一個警示建立一個 AlarmName: <your-cw-alarm> 項目。

  • DeploymentConfig 底下,為 RollingUpdatePolicy 物件指定下列欄位:

    • MaximumExecutionTimeoutInSeconds — 總部署的時間限制。超出此限制會導致逾時。您可以為此欄位指定的最大值為 28800 秒或 8 小時。

    • WaitIntervalInSeconds-烘烤期的長度,在此期間 SageMaker 監控新車隊上每批警報。

    • MaximumBatchSize — 指定您要使用的批次之 Type (執行個體計數或機群的整體百分比) 及 Value,或每個批次的大小。

    • RollbackMaximumBatchSize — 使用此物件可指定回復策略,以防警示觸發。指定您要使用的批次之 Type (執行個體計數或機群的整體百分比) 及 Value,或每個批次的大小。如果您未指定這些欄位,或者將該值設定為端點的 100%,則 SageMaker 會使用藍/綠復原策略,並在警示出現時將所有流量復原至舊叢集。

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" }, ] }, "RollingUpdatePolicy": { "MaximumExecutionTimeoutInSeconds": number, "WaitIntervalInSeconds": number, "MaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, "RollbackMaximumBatchSize": { "Type": "INSTANCE_COUNT" | "CAPACITY_PERCENTAGE" (default), "Value": number }, } } )

更新端點後,您可能需要檢查滾動式部署的狀態並檢查端點的運作狀態。您可以在 SageMaker 控制台中查看端點的狀態,也可以使用 DescribeEndpointAPI.

在傳回的VariantStatus物件中 DescribeEndpointAPI,Status欄位會告訴您端點的目前部署或作業狀態。如需有關可能狀態及其含義的詳細資訊,請參閱ProductionVariantStatus

如果您嘗試執行滾動式部署,且端點的狀態為 UpdateRollbackFailed,請參閱下一節以取得故障診斷說明。

失敗處理

如果您的滾動式部署失敗,並且自動回復也失敗,則您的端點可能會保留為 UpdateRollbackFailed 的狀態。此狀態表示不同的端點組態會部署到端點後面的執行個體,而您的端點會使用新舊端點組態的服務。

您可以撥打另一個呼叫,UpdateEndpointAPI將端點返回到正常狀態。指定所需的端點組態和部署組態 (可以是滾動式部署、藍/綠部署,或兩者皆非) 以更新您的端點。

您可以呼叫以再次檢查端點的健全狀況,這會在VariantStatus物件中作為Status欄位傳回。DescribeEndpointAPI如果更新成功,則您端點的 Status 會返回 InService