本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Canary 流量轉移
透過 Canary 流量轉移,您可以在新機群上測試部分端點流量,而舊機群則為剩餘的流量提供服務。此測試步驟是安全防護機制,可在將所有流量轉移到新機群之前驗證新機群的功能。您仍然可以享有藍/綠部署的優點,而新增的 Canary 功能可讓您確保新的 (綠色) 機群能夠提供推論,然後再讓它處理 100% 的流量。
開啟接收流量的綠色機群的部分稱為 Canary,您可以選擇此 Canary 的大小。請注意,Canary 大小應小於或等於新容量的 50%。一旦烘烤期間結束,且未預先指定的 Amazon CloudWatch 警示跳脫,其餘流量會從舊 (藍色) 機群轉移到綠色機群。Canary 流量轉移可在部署期間為您提供更高的安全性,因為更新模型的任何問題都只會影響 Canary。
下圖顯示了 Canary 流量轉移如何管理藍色和綠色機群之間的流量分佈。
SageMaker 佈建綠色機群後, 會將部分傳入流量 (例如 25%) SageMaker 路由至 Canary。然後,烘烤時段開始,在此期間,您的 CloudWatch 警示會監控綠色機群的效能。在此期間,藍色機群和綠色機群都處於部分作用中狀態,並接收流量。如果任何警示在烘烤期間跳閘, 會 SageMaker 啟動復原,且所有流量都會傳回藍色機群。如果沒有觸發任何警報,則所有流量都會轉移到綠色機群,並且有最後的製作中期間。如果最後的烘烤期間結束,但未觸發任何警示,則綠色機群會服務所有流量,並 SageMaker 終止藍色機群。
必要條件
在設定具有 Canary 流量轉移的部署之前,您必須建立 Amazon CloudWatch 警示來監控端點的指標。警示在製作中期間處於啟動中狀態,如果觸發任何警示,則所有端點流量都會回復到藍色機群。若要了解如何在端點上設定 CloudWatch警示,請參閱先決條件頁面 自動回復組態與監控。若要進一步了解 CloudWatch 警示,請參閱 Amazon 使用者指南 中的使用 Amazon CloudWatch 警示。 CloudWatch
設定 Canary 流量轉移
準備好部署並為您的端點設定 Amazon CloudWatch 警示後,您可以使用 中的 Amazon SageMaker UpdateEndpoint API或 update-endpoint 命令 AWS CLI 來啟動部署。
如何更新端點 (API)
下列範例UpdateEndpointAPI示範如何在 Canary 流量轉移時更新端點。
import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-config-name>
", DeploymentConfig={ "BlueGreenUpdatePolicy": { "TrafficRoutingConfiguration": { "Type": "CANARY", "CanarySize": { "Type": "CAPACITY_PERCENT", "Value": 30 }, "WaitIntervalInSeconds": 600 }, "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800 }, "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>
" } ] } } )
若要設定 Canary 流量轉移選項,請執行以下操作:
針對
EndpointName
,請使用您要更新的現有端點名稱。在
EndpointConfigName
中,使用您要使用的端點組態名稱。在
DeploymentConfig
和BlueGreenUpdatePolicy
下,在TrafficRoutingConfiguration
中,將Type
參數設定為CANARY
。這會指定使用 Canary 流量轉移的部署。在
CanarySize
欄位中,您可以修改Type
和Value
參數來變更 Canary 的大小。在Type
中,使用CAPACITY_PERCENT
,表示您要用作 Canary 的綠色機群的百分比,然後設定Value
為30
。在此範例中,您使用綠色機群 30% 的容量作為 Canary。請注意,Canary 大小應等於或小於綠色機群容量的 50%。對於
WaitIntervalInSeconds
,請使用600
。參數會指示 SageMaker 在每個間隔移位之間等待指定的時間量 (以秒為單位)。此間隔是 Canary 製作中期間的持續時間。在上述範例中,在 Canary shift 後 SageMaker 等待 10 分鐘,然後完成第二個和最後一個流量轉移。對於
TerminationWaitInSeconds
,請使用600
。此參數會提示您 SageMaker 在綠色機群完全作用中之後,等待指定的時間量 (以秒為單位),然後再終止藍色機群中的執行個體。在此範例中,在終止藍色機群之前,會在最終烘烤期間後 SageMaker 等待 10 分鐘。對於
MaximumExecutionTimeoutInSeconds
,請使用1800
。此參數設定部署在逾時前可以執行的時間上限。在上述範例中,您的部署時間上限為 30 分鐘。在
AutoRollbackConfiguration
的Alarms
欄位內,您可以依名稱新增 CloudWatch 警示。為您要使用的每個警示建立一個AlarmName:
項目。<your-cw-alarm>
如何使用現有的藍/綠更新政策更新端點 (API)
當您使用 CreateEndpointAPI建立端點時,您可以選擇指定部署組態,以重複使用於未來的端點更新。您可以使用與上 UpdateEndpoint API一個範例相同的DeploymentConfig
選項。行為 CreateEndpoint API沒有變更。指定部署組態不會自動在端點上執行藍/綠更新。
使用 UpdateEndpointAPI更新端點時,會執行使用先前部署組態的選項。更新端點時,您可以使用 RetainDeploymentConfig
選項來保留您在建立端點時指定的部署組態。
呼叫 UpdateEndpoint 時API,請將 RetainDeploymentConfig
設定為 True
,以保留原始端點組態中的DeploymentConfig
選項。
response = client.update_endpoint( EndpointName="
<your-endpoint-name>
", EndpointConfigName="<your-config-name>
", RetainDeploymentConfig=True )
如何更新端點 (CLI)
如果您使用的是 AWS CLI,下列範例示範如何使用 update-endpoint 命令啟動藍/綠 Canary 部署。
update-endpoint --endpoint-name
<your-endpoint-name>
--endpoint-config-name<your-config-name>
--deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "CANARY", "CanarySize": {"Type": "CAPACITY_PERCENT", "Value": 30}, "WaitIntervalInSeconds": 600}, "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800}, "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>
"}]}'
若要設定 Canary 流量轉移選項,請執行下列動作:
在
endpoint-name
中,使用您要更新的端點名稱。在
endpoint-config-name
中,使用您要使用的端點組態名稱。對於
deployment-config
,請使用 BlueGreenUpdatePolicy JSON 物件。
注意
如果您想要將JSON物件儲存在檔案中,請參閱 AWS CLI 使用者指南 中的產生 AWS CLI 骨骼和輸入參數。