

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

# 中的服务作业重试策略 AWS Batch
<a name="service-job-retries"></a>

服务作业重试策略 AWS Batch 允许在特定条件下自动重试失败的服务作业。

由于多方面的原因，服务作业可能需要多次尝试：
+ **临时服务问题**：内部服务错误、节流或临时中断可能会导致作业在提交或执行期间失败。
+ **训练初始化失败**：作业启动期间出现的问题（例如映像提取问题或初始化错误）可能会在重试后得到解决。

通过配置适当的重试策略，可以提高作业成功率并减少手动干预需要，尤其是对于长时间运行的训练工作负载。

**注意**  
服务作业会自动重试某些类型的失败（例如容量不足错误），而不会消耗您配置的重试次数。您的重试策略主要处理其他类型的失败，例如算法错误或服务问题。

## 配置重试策略
<a name="configuring-service-job-retries"></a>

使用配置服务作业重试策略 [ServiceJobRetryStrategy](https://docs.aws.amazon.com/batch/latest/APIReference/API_ServiceJobRetryStrategy.html)，它支持简单的重试计数和有条件的重试逻辑。

### 重试配置
<a name="basic-retry-configuration"></a>

最简单的重试策略会指定服务作业失败后应进行的重试次数：

```
{
  "retryStrategy": {
    "attempts": 3
  }
}
```

此配置允许在服务作业失败后最多重试 3 次。

**重要**  
`attempts` 值表示可以将作业置于 `RUNNABLE` 状态的总次数，包括首次尝试。值为 3 表示该作业将首次尝试一次，如果失败，则最多可再重试 2 次。

### 使用重试配置 evaluateOnExit
<a name="advanced-retry-configuration"></a>

您可以使用 `evaluateOnExit` 参数来指定应重试或放任作业失败的条件。当不同类型的失败需要不同的处理方式时，这将非常实用。

`evaluateOnExit` 数组最多可以包含 5 个重试策略，每种策略都根据状态原因指定一个操作（`RETRY` 或 `EXIT`）以及条件：

```
{
  "retryStrategy": {
    "attempts": 5,
    "evaluateOnExit": [
      {
        "action": "RETRY",
        "onStatusReason": "Received status from SageMaker: InternalServerError*"
      },
      {
        "action": "EXIT",
        "onStatusReason": "Received status from SageMaker: ValidationException*"
      },
      {
        "action": "EXIT",
        "onStatusReason": "*"
      }
    ]
  }
}
```

此配置：
+ 重试由于 SageMaker AI 内部服务器错误而失败的作业
+ 立即让遇到验证异常（无法通过重试解决的客户端错误）的作业失败
+ 包括适用于任何其他故障失败类型的 catch-all 退出规则

#### 状态原因模式匹配
<a name="status-reason-patterns"></a>

`onStatusReason` 参数最多支持 512 个字符的模式匹配。模式可以使用通配符 (\$1)，并与 SageMaker AI 返回的状态原因进行匹配。

对于服务作业， SageMaker 来自 AI 的状态消息以 “接收的状态来自 SageMaker:” 为前缀，以将其与 AWS Batch生成的消息区分开来。常见模式包括：
+ `Received status from SageMaker: InternalServerError*`：匹配内部服务错误
+ `Received status from SageMaker: ValidationException*`：匹配客户端验证错误
+ `Received status from SageMaker: ResourceLimitExceeded*`：匹配资源限制错误
+ `*CapacityError*`：匹配与容量相关的失败

**提示**  
使用特定的模式匹配来适当地恰当处理不同的错误类型。例如，重试内部服务器错误，但如果出现表明作业参数存在问题的验证错误，则立即失败。