

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 파이프라인 단계에 대한 재시도 정책
<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`의 최댓값은 43200초(12시간)입니다.
+ `BackoffRate`(선택 사항): 각 시도때마다 재시도 간격이 늘어나도록 정한 곱하기 배수입니다(기본값 2.0).
+ `MaxAttempts`(선택 사항): 최대 재시도 횟수를 나타내는 양의 정수입니다(기본값 5). 지정된 횟수 `MaxAttempts`보다 많이 오류가 발생하는 경우 재시도가 중지되고 일반 오류 처리가 다시 시작됩니다. 값이 0이면 오류가 다시 시도되지 않습니다. `MaxAttempts`의 최대값은 20입니다.
+ `ExpireAfterMin`(선택 사항): 최대 재시도 시간을 나타내는 양의 정수입니다. 단계부터 `ExpireAfterMin`분 단위 계산을 실행한 후 오류가 다시 발생하면 재시도가 중단되고 일반 오류 처리가 다시 시작됩니다. 값이 0이면 오류가 다시 시도되지 않습니다. `ExpireAfterMin `의 최대값은 14,400분 (10일)입니다.
**참고**  
`MaxAttempts` 또는 `ExpireAfterMin`둘 중 하나만 지정할 수 있으며 둘 다 지정할 수는 없습니다. 둘 다 지정하지 않으면 기본값은 `MaxAttempts`입니다.** 한 정책 내에서 두 속성이 모두 식별되는 경우 재시도 정책에서 검증 오류가 발생합니다.

# 재시도 정책 구성
<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
                }
            ]
        }
    ]
}
```



다음은 재시도 정책을 사용하여 Python용 SDK (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)*을 참조하세요.