管道步驟的重試政策 - Amazon SageMaker

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

管道步驟的重試政策

重試原則可協助您在發生錯誤後自動重試 SageMaker 管道步驟。任何管道步驟都可能會遇到例外狀況,而發生例外狀況的原因有很多。在某些情況下,重試可以解決這些問題。透過管道步驟的重試政策,您可以選擇是否重試特定管道步驟。

重試政策僅支援下列管道步驟:

注意

在調校和 AutoML 步驟中執行的任務會在內部執行重試,而且不會重試 SageMaker.JOB_INTERNAL_ERROR 例外狀況類型,即使已設定重試政策也是如此。您可以使用 SageMaker API 編寫自己的重試策略

重試政策支援的例外狀況類型

管道步驟的重試政策支援下列例外狀況類型:

  • Step.SERVICE_FAULT:當呼叫下游服務時發生內部伺服器錯誤或暫時性錯誤時,就會發生這些例外狀況。 SageMaker 管道會自動重試這種類型的錯誤。憑藉重試政策,您可以覆寫此例外狀況類型的預設重試操作。

  • Step.THROTTLING:呼叫下游服務時可能會發生節流例外狀況。 SageMaker 管道會自動重試這種類型的錯誤。憑藉重試政策,您可以覆寫此例外狀況類型的預設重試操作。

  • SageMaker.JOB_INTERNAL_ERROR:當 SageMaker 工作傳回時,就會發生這些例外狀況InternalServerError。在此情況下,啟動新任務可能會修正暫時性問題。

  • SageMaker.CAPACITY_ERROR:這項 SageMaker 工作可能會遇到 Amazon EC2InsufficientCapacityErrors,這會導致 SageMaker 任務失敗。您可以透過啟動新 SageMaker 工作來重試,以避免發生此問題。

  • SageMaker.RESOURCE_LIMIT:您可以在執行 SageMaker 工作時超出資源限制配額。您可以在短時間後等待再重試執行 SageMaker 工作,並查看資源是否已釋放。

重試政策的 JSON 結構描述

管道的重試政策具有下列 JSON 結構描述:

"RetryPolicy": { "ExceptionType": [String] "IntervalSeconds": Integer "BackoffRate": Double "MaxAttempts": Integer "ExpireAfterMin": Integer }
  • ExceptionType:此欄位需要字串陣列格式的下列例外狀況類型。

    • Step.SERVICE_FAULT

    • Step.THROTTLING

    • SageMaker.JOB_INTERNAL_ERROR

    • SageMaker.CAPACITY_ERROR

    • SageMaker.RESOURCE_LIMIT

  • IntervalSeconds (可選):第一次重試嘗試之前的秒數 (預設值為 1)。IntervalSeconds 的最大值為 43200 秒 (12 小時)。

  • BackoffRate (可選):乘數,重試間隔會在每次嘗試時隨之增加 (預設值為 2.0)。

  • MaxAttempts (可選):正整數,代表重試次數上限 (預設值為 5)。如果出現錯誤的次數超過 MaxAttempts 指定的次數,則重試會停止且一般錯誤處理會繼續執行。值為 0 表示永遠不會重試錯誤。MaxAttempts 最大值為 20。

  • ExpireAfterMin (可選):正整數,代表重試的最大時間範圍。如果從步驟開始計數 ExpireAfterMin 分鐘後再次發生錯誤,則重試會停止且一般錯誤處理會繼續執行。值為 0 表示永遠不會重試錯誤。ExpireAfterMin 的最大值為 14,400 分鐘 (10 天)。

    注意

    只能指定 MaxAttemptsExpireAfterMin 中的一個,但不能同時指定兩者;如果指定兩者,則 MaxAttempts 會變成預設值。如果在一項政策中識別了兩個屬性,則重試政策會產生驗證錯誤。

設定重試政策

以下是具有重試政策的訓練步驟範例。

{ "Steps": [ { "Name": "MyTrainingStep", "Type": "Training", "RetryPolicies": [ { "ExceptionType": [ "SageMaker.JOB_INTERNAL_ERROR", "SageMaker.CAPACITY_ERROR" ], "IntervalSeconds": 1, "BackoffRate": 2, "MaxAttempts": 5 } ] } ] }

以下範例示範了如何使用重試政策在 Python 開發套件 (Boto3) 中建置 TrainingStep

from sagemaker.workflow.retry import ( StepRetryPolicy, StepExceptionTypeEnum, SageMakerJobExceptionTypeEnum, SageMakerJobStepRetryPolicy ) step_train = TrainingStep( name="MyTrainingStep", xxx, retry_policies=[ // override the default StepRetryPolicy( exception_types=[ StepExceptionTypeEnum.SERVICE_FAULT, StepExceptionTypeEnum.THROTTLING ], expire_after_mins=5, interval_seconds=10, backoff_rate=2.0 ), // retry when resource limit quota gets exceeded SageMakerJobStepRetryPolicy( exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT], expire_after_mins=120, interval_seconds=60, backoff_rate=2.0 ), // retry when job failed due to transient error or EC2 ICE. SageMakerJobStepRetryPolicy( failure_reason_types=[ SageMakerJobExceptionTypeEnum.INTERNAL_ERROR, SageMakerJobExceptionTypeEnum.CAPACITY_ERROR, ], max_attempts=10, interval_seconds=30, backoff_rate=2.0 ) ] )

如需針對特定步驟類型設定重試行為的詳細資訊,請參閱 Amazon SageMaker Python SDK 文件中的 Amazon SageMaker 模型建置管道-重試政策