管道步骤的重试策略 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

管道步骤的重试策略

重试策略可以帮助你自动重试 SageMaker 错误发生后,管道将步骤操作。任何管道步骤都可能遇到异常,出于各种原因出现异常。在某些情况下,重试可以解决这些问题。对于管道步骤的重试策略,您可以选择是否重试特定管道步骤。

重试策略仅支持以下管道步骤:

重试策略支持的异常类型

管道步骤的重试策略支持以下异常类型:

  • 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_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 天)。

    注意

    只有其中一个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 ) ] )