本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
管道步骤的重试策略
重试策略可以帮助你自动重试 SageMaker 错误发生后,管道将步骤操作。任何管道步骤都可能遇到异常,出于各种原因出现异常。在某些情况下,重试可以解决这些问题。对于管道步骤的重试策略,您可以选择是否重试特定管道步骤。
重试策略仅支持以下管道步骤:
-
注意 这些区域有: SageMaker 超参数调整作业已在内部执行重试,因此它不会重试
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 模式
对于 Pipeline 的重试策略有以下 JSON 架构:
"RetryPolicy": { "ExceptionType": [String] "IntervalSeconds": Integer "BackoffRate": Double "MaxAttempts": Integer "ExpireAfterMin": Integer }
-
ExceptionType:此字段需要以字符串数组格式提供以下异常类型。Step.SERVICE_FAULTStep.THROTTLINGSageMaker.JOB_INTERNAL_ERRORSageMaker.CAPACITY_ERRORSageMaker.RESOURCE_LIMIT
-
IntervalSeconds(可选):第一次重试尝试之前的秒数(默认值为 1)。IntervalSeconds最大值为 43200 秒(12 小时)。 -
BackoffRate(可选):每次尝试期间重试时间间隔增长的倍数 (默认值为 2.0)。 -
MaxAttempts(可选):一个正整数,表示重试的最大次数 (默认值为 5 次)。如果错误再次发生的次数超过MaxAttempts指定,停止重试并恢复正常错误处理。值为 0 时,指定永不重试错误。MaxAttempts最大值为 20。 -
ExpireAfterMin(可选):一个正整数,表示重试的最大时间跨度。如果在之后再次出现错误ExpireAfterMin执行步骤计数的分钟数,停止重试并恢复正常错误处理。值为 0 时,指定永不重试错误。ExpireAfterMin最大值为 14,400 分钟(10 天)。注意 只有其中一个
MaxAttempts要么ExpireAfterMin可以给出,但不能两者兼而有;如果两者都是不已指定,MaxAttempts成为默认设置。如果在一个策略中识别了两个属性,则重试策略将生成验证错误。
配置重试策略
以下是具有重试策略的训练步骤的示例。
{ "Steps": [ { "Name": "MyTrainingStep", "Type": "Training", "RetryPolicies": [ { "ExceptionType": [ "SageMaker.JOB_INTERNAL_ERROR", "SageMaker.CAPACITY_ERROR" ], "IntervalSeconds":1, "BackoffRate":2, "MaxAttempts":5} ] } ] }
以下示例说明了如何构建TrainingStep在 SDK for Python (Boto3) 中使用重试策略。
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_min=5, interval_seconds=10, backoff_rate=2.0), // retry when resource limit quota gets exceeded SageMakerJobStepRetryPolicy( exception_types=[SageMakerJobExceptionTypeEnum.RESOURCE_LIMIT] expire_after_min=120, interval_seconds=60, backoff_rate=2.0), // retry when job failed due to transient error or EC2 ICE. SageMakerJobStepRetryPolicy( failure_reason_types=[SageMakerJobExceptionTypeEnum.JOB_INTERNAL_ERROR,SageMakerJobExceptionTypeEnum.JOB_CAPACITY_ERROR, ] max_attempts=10, interval_seconds=30, backoff_rate=2.0) ] )