

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# パイプラインのステップの再試行ポリシー
<a name="pipelines-retry-policy"></a>

再試行ポリシーを使用すると、エラーが発生した後に Pipelines ステップを再試行するのに役立ちます。パイプラインステップでは例外が発生する場合がありますが、例外はさまざまな理由で発生します。場合によっては、再試行によってこれらの問題を解決できることがあります。パイプラインステップの再試行ポリシーを使用すると、特定のパイプラインステップを再試行するかどうかを選択できます。

再試行ポリシーは、次のパイプラインステップのみをサポートします。
+ [処理ステップ](build-and-manage-steps-types.md#step-type-processing) 
+ [トレーニングステップ](build-and-manage-steps-types.md#step-type-training) 
+ [チューニングステップ](build-and-manage-steps-types.md#step-type-tuning) 
+ [AutoML ステップ](build-and-manage-steps-types.md#step-type-automl) 
+ [モデルの作成ステップ](build-and-manage-steps-types.md#step-type-create-model) 
+ [モデルステップの登録](build-and-manage-steps-types.md#step-type-register-model) 
+ [変換ステップ](build-and-manage-steps-types.md#step-type-transform) 
+ [ノートブックジョブステップ](build-and-manage-steps-types.md#step-type-notebook-job) 

**注記**  
チューニングと AutoML ステップの両方で実行されるジョブは、再試行ポリシーが設定されていても、内部的に再試行され、`SageMaker.JOB_INTERNAL_ERROR` 例外タイプは再試行されません。SageMaker API を使用して独自の[再試行戦略](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_RetryStrategy.html)をプログラムできます。

## 再試行ポリシーでサポートされる例外タイプ
<a name="pipelines-retry-policy-supported-exceptions"></a>

パイプラインステップの再試行ポリシーは、次の例外タイプをサポートします。
+ `Step.SERVICE_FAULT`: これらの例外は、ダウンストリームのサービスを呼び出したときに内部サーバーエラーまたは一時的なエラーがあると発生します。Pipelines は、このようなタイプのエラーは自動的に再試行します。再試行ポリシーを使用すると、この例外タイプのデフォルトの再試行オペレーションをオーバーライドできます。
+ `Step.THROTTLING`: ダウンストリームのサービスの呼び出し中には、スロットリング例外が発生することがあります。Pipelines は、このようなタイプのエラーは自動的に再試行します。再試行ポリシーを使用すると、この例外タイプのデフォルトの再試行オペレーションをオーバーライドできます。
+ `SageMaker.JOB_INTERNAL_ERROR`: これらの例外は、SageMaker AI ジョブが `InternalServerError` を返す場合に発生します。この場合、新しいジョブを始めると、一時的な問題が解決することがあります。
+ `SageMaker.CAPACITY_ERROR`: SageMaker AI ジョブで Amazon EC2 `InsufficientCapacityErrors` が発生すると、SageMaker AI ジョブの失敗につながります。新しい SageMaker AI ジョブを開始して再試行すると、この問題を回避できます。
+ `SageMaker.RESOURCE_LIMIT`: SageMaker AI ジョブを実行する際に、リソース制限クォータを超えることがあります。しばらく待ってから SageMaker AI ジョブの実行を再試行すると、リソースがリリースされたかどうかを確認できます。

## 再試行ポリシーの JSON スキーマ
<a name="pipelines-retry-policy-json-schema"></a>

パイプラインの再試行ポリシーには、以下の 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` の最大値は 43,200 秒 (12 時間) です。
+ `BackoffRate` (オプション): 各試行間で再試行間隔が増加する乗数 (デフォルトは 2.0)。
+ `MaxAttempts` (オプション): 再試行の最大回数を表す正の整数 (デフォルトは 5)。`MaxAttempts` で指定された回数を超えてエラーが再発する場合、再試行が停止され通常のエラー処理が再開されます。0 の値は、エラーが再試行されないことを指定します。`MaxAttempts` の最大値は 20 です。
+ `ExpireAfterMin` (オプション): 再試行の最大タイムスパンを表す正の整数。ステップの実行から数えて `ExpireAfterMin` 分後にエラーが再発した場合は、再試行が停止され、通常のエラー処理が再開されます。0 の値は、エラーが再試行されないことを指定します。`ExpireAfterMin ` の最大値は 14,400 分 (10 日) です。
**注記**  
`MaxAttempts` または `ExpireAfterMin` のいずれか 1 つを指定できますが、両方を指定することはできません。両方とも指定されていない場合は、`MaxAttempts` がデフォルトになります。**1 つのポリシーに両方のプロパティがあると、再試行ポリシーによって検証エラーが生成されます。

# 再試行ポリシーを設定する
<a name="pipelines-configuring-retry-policy"></a>

SageMaker Pipelines は機械学習ワークフローのオーケストレーションのための堅牢かつ自動化された方法を提供するとはいえ、実行時に失敗する場合もあります。このようなシナリオを適切に処理し、パイプラインの信頼性を向上させるために、例外が発生した後に特定のステップを自動的に再試行する方法とタイミングを定義する再試行ポリシーを設定できます。再試行ポリシーでは、再試行する例外のタイプ、再試行の最大回数、再試行の間隔、再試行の間隔を引き上げるためのバックオフ率を指定できます。次のセクションでは、JSON と SageMaker Python SDK の両方を使用して、パイプライン内のトレーニングステップの再試行ポリシーを設定する方法の例を説明します。

以下は、再試行ポリシーを使用したトレーニングステップの例です。

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



以下は、再試行ポリシーを使用して SDK for 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 Pipelines - Retry Policy](https://sagemaker.readthedocs.io/en/stable/amazon_sagemaker_model_building_pipeline.html#retry-policy)」を参照してください。**