

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

# SageMaker AI 관리형 웜 풀
<a name="train-warm-pools"></a>

SageMaker AI 관리형 웜 풀을 사용하면 훈련 작업 완료 후에도 프로비저닝된 인프라를 유지하고 재사용하여 반복적인 실험이나 여러 작업을 연속적으로 실행하는 것과 같은 반복적인 워크로드의 지연 시간을 단축할 수 있습니다. 지정된 파라미터와 매칭되는 후속 훈련 작업은 보존된 웜 풀 인프라에서 실행되므로 리소스를 프로비저닝하는 데 소요되는 시간을 줄여 시작 시간을 단축합니다.

**중요**  
SageMaker AI의 관리형 웜 풀은 청구 대상 리소스입니다. 자세한 내용은 [결제](#train-warm-pools-billing) 단원을 참조하십시오.

**Topics**
+ [작동 방식](#train-warm-pools-how-it-works)
+ [고려 사항](#train-warm-pools-considerations)
+ [웜 풀 할당량 증가 요청](train-warm-pools-resource-limits.md)
+ [SageMaker AI 관리형 웜 풀 사용](train-warm-pools-how-to-use.md)

## 작동 방식
<a name="train-warm-pools-how-it-works"></a>

SageMaker AI의 관리형 웜 풀을 사용하고 유사한 연속 훈련 작업 간의 지연 시간 단축을 위해 `KeepAlivePeriodInSeconds` 값을 `ResourceConfig`에 지정하는 훈련 작업을 만듭니다. 이 값은 후속 훈련 작업을 위해 웜 풀에 구성된 리소스를 유지하는 데 걸리는 시간을 초 단위로 나타냅니다. 비슷한 구성을 사용하여 여러 훈련 작업을 실행해야 하는 경우 전용 영구 캐시 디렉터리를 사용하여 정보를 저장하고 다른 작업에서 재사용하면 대기 시간과 청구 대상 시간을 더욱 줄일 수 있습니다.

**Topics**
+ [웜 풀 수명 주기](#train-warm-pools-lifecycle)
+ [웜 풀 생성](#train-warm-pools-creation)
+ [매칭하는 훈련 작업](#train-warm-pools-matching-criteria)
+ [웜 풀 최대 시간](#train-warm-pools-maximum-duration)
+ [영구 캐시 사용](#train-warm-pools-persistent-cache)
+ [결제](#train-warm-pools-billing)

### 웜 풀 수명 주기
<a name="train-warm-pools-lifecycle"></a>

1. `KeepAlivePeriodInSeconds` 값이 0보다 큰 초기 훈련 작업을 생성하세요. 이 첫 번째 훈련 작업을 실행하면 일반적인 시작 시간으로 클러스터를 “콜드 스타트”합니다.

1. 첫 번째 훈련 작업이 완료되면 프로비저닝된 리소스는 `KeepAlivePeriodInSeconds` 값에 지정된 기간 동안 웜 풀에 보관됩니다. 클러스터가 정상이고 웜 풀이 지정된 `KeepAlivePeriodInSeconds` 범위 내에 있으면 웜 풀은 `Available` 상태입니다.

1. 웜 풀은 재사용할 매칭 훈련 작업을 식별하거나 지정된 `KeepAlivePeriodInSeconds` 범위를 초과할 때까지 `Available` 상태를 유지하고 종료됩니다. `KeepAlivePeriodInSeconds`에 허용되는 최대 시간은 3600초(60분)입니다. 웜 풀 상태가 `Terminated`이면 웜 풀 수명 주기가 종료됩니다.

1. 웜 풀이 인스턴스 수 또는 인스턴스 유형과 같은 사양이 매칭되는 두 번째 훈련 작업을 식별하면 웜 풀은 재사용을 위해 첫 번째 훈련 작업에서 두 번째 훈련 작업으로 이동합니다. 첫 번째 훈련 작업 웜 풀은 `Reused` 상태가 됩니다. 이로써 첫 번째 훈련 작업의 웜 풀 수명 주기가 종료됩니다.

1. 웜 풀을 재사용한 두 번째 훈련 작업은 `InUse` 상태가 됩니다. 두 번째 훈련 작업이 완료된 후에는 두 번째 훈련 작업에 지정된 `KeepAlivePeriodInSeconds` 기간 동안 웜 풀은 `Available` 상태입니다. 웜 풀은 최대 28일 동안 후속 매칭 훈련 작업으로 계속 이동할 수 있습니다.

1. 웜 풀을 더 이상 재사용할 수 없는 경우 웜 풀은 `Terminated` 상태입니다. 사용자가 웜 풀을 종료하거나, 패치 업데이트로 인해 또는 지정된 `KeepAlivePeriodInSeconds` 범위를 초과하여 웜 풀을 종료되는 경우 더 이상 사용할 수 없습니다.

웜 풀 상태 옵션에 대한 추가 정보는 *Amazon SageMaker API 참조*에서 [웜 풀 상태(WarmPoolStatus)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_WarmPoolStatus.html)를 참조하세요.

### 웜 풀 생성
<a name="train-warm-pools-creation"></a>

초기 훈련 작업이 성공적으로 완료되고 `KeepAlivePeriodInSeconds` 값이 0보다 크면 웜 풀이 생성됩니다. 클러스터가 이미 시작된 후 훈련 작업을 중지해도 웜 풀은 계속 유지됩니다. 알고리즘이나 클라이언트 오류로 인해 훈련 작업이 실패하더라도 웜 풀은 계속 유지됩니다. 클러스터의 상태를 손상시킬 수 있는 다른 이유로 훈련 작업이 실패하면 웜 풀이 생성되지 않습니다.

웜 풀 생성이 성공했는지 확인하려면 훈련 작업의 웜 풀 상태를 확인하세요. 웜 풀이 성공적으로 프로비저닝된 경우 웜 풀은 `Available` 상태입니다. 웜 풀이 프로비저닝에 실패할 경우 웜 풀은 `Terminated` 상태입니다.

### 매칭하는 훈련 작업
<a name="train-warm-pools-matching-criteria"></a>

웜 풀이 지속되려면 `KeepAlivePeriodInSeconds` 값에 지정된 시간 내에 매칭되는 훈련 작업을 찾아야 합니다. 다음 값이 동일할 경우 다음 훈련 작업은 매칭하는 것으로 간주됩니다.
+ `RoleArn` 
+ `ResourceConfig` 값:
  + `InstanceCount`
  + `InstanceType`
  + `VolumeKmsKeyId`
  + `VolumeSizeInGB`
+ `VpcConfig` 값:
  + `SecurityGroupIds`
  + `Subnets`
+ `EnableInterContainerTrafficEncryption`
+ `EnableNetworkIsolation`
+ 훈련 작업의 `SessionChainingConfig`에서 `EnableSessionTagChaining`이 `True`로 설정된 훈련 작업에 대한 [세션 태그](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_session-tags.html#id_session-tags_operations)를 전달한 경우 일치하는 훈련 작업도 `EnableSessionTagChaining`이 `True`로 설정되고 동일한 세션 키가 있어야 합니다. 자세한 내용은 [다중 테넌시 훈련에 속성 기반 액세스 제어(ABAC) 사용](model-access-training-data-abac.md) 섹션을 참조하세요.

웜 풀을 후속 훈련 작업으로 옮겨 재사용하려면 이 모든 값이 같아야 합니다.

### 웜 풀 최대 시간
<a name="train-warm-pools-maximum-duration"></a>

단일 훈련 작업의 최대 `KeepAlivePeriodInSeconds` 시간은 3600초(60분)이며, 웜 풀 클러스터가 연속 훈련 작업을 계속 실행할 수 있는 최대 시간은 28일입니다.

각 후속 훈련 작업에도 `KeepAlivePeriodInSeconds` 값을 지정해야 합니다. 웜 풀이 다음 훈련 작업으로 이동하면 해당 훈련 작업의 `ResourceConfig`에 지정된 새 `KeepAlivePeriodInSeconds` 값이 상속됩니다. 이렇게 하면 최대 28일 동안 웜 풀을 훈련 작업에서 훈련 작업으로 계속 이동할 수 있습니다.

`KeepAlivePeriodInSeconds`가 지정되지 않은 경우 훈련 작업이 완료된 후 웜 풀이 감속됩니다.

### 영구 캐시 사용
<a name="train-warm-pools-persistent-cache"></a>

웜 풀을 만들면 SageMaker AI는 웜 풀의 수명 주기 내내 유지되는 특수 디렉터리를 볼륨에 마운트합니다. 이 디렉터리를 사용하여 다른 작업에서 재사용하려는 정보를 저장할 수도 있습니다.

영구 캐시를 사용하면 다음을 필요로 하는 작업에 웜 풀만 사용할 때보다 대기 시간과 청구 대상 시간을 줄일 수 있습니다.
+ 유사한 구성과의 다중 상호 작용
+ 점증 훈련
+ 하이퍼파라미터 최적화

예를 들어, 영구 캐시 디렉토리 내에 pip 캐시 디렉토리를 설정하여 반복 실행 시 동일한 Python 종속성을 다운로드하지 않도록 할 수 있습니다. 이 디렉터리의 내용을 관리하는 것은 전적으로 사용자의 책임입니다. 다음은 지연 시간과 청구 대상 시간을 줄이기 위해 영구 캐시에 저장할 수 있는 정보 유형의 예입니다.
+ 종속성은 pip로 관리합니다.
+ 종속성은 conda에서 관리합니다.
+ [체크포인트 정보](https://docs.aws.amazon.com/sagemaker/latest/dg/model-checkpoints.html).
+ 훈련 중에 생성된 모든 추가 정보.

영구 캐시의 위치는 `/opt/ml/sagemaker/warmpoolcache`입니다. 환경 변수 `SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY`는 영구 캐시 디렉토리의 위치를 가리킵니다.

다음 코드 예제는 웜 풀을 설정하고 영구 캐시를 사용하여 후속 작업에서 사용할 수 있도록 pip 종속성을 저장하는 방법을 보여줍니다. 후속 작업은 파라미터 `keep_alive_period_in_seconds`가 지정한 시간 내에 실행되어야 합니다.

```
import sagemakerfrom sagemaker import get_execution_rolefrom sagemaker.tensorflow import TensorFlow
# Creates a SageMaker session and gets execution role
session = sagemaker.Session()
role = get_execution_role()
# Creates an example estimator
estimator = TensorFlow(
    ...
    entry_point='{{my-training-script.py}}',
    source_dir='{{code}}',
    role={{role}},
    model_dir='{{model_dir}}',
    framework_version='{{2.2}}',
    py_version='{{py37}}',
    job_name='{{my-training-job-1}}',
    instance_type='{{ml.g4dn.xlarge}}',
    instance_count={{1}},
    volume_size={{250}},
    hyperparameters={
"batch-size": {{512}},
        "epochs": {{1}},
        "learning-rate": {{1e-3}},
        "beta_1": {{0.9}},
        "beta_2": {{0.999}},
    },
    keep_alive_period_in_seconds={{1800}},
    environment={"PIP_CACHE_DIR": "/opt/ml/sagemaker/warmpoolcache/pip"}
)
```

이전 코드 예제에서는 [환경](https://sagemaker.readthedocs.io/en/stable/api/training/estimators.html#estimators) 파라미터를 사용하여 환경 변수 `PIP_CACHE_DIRECTORY`을/를 `/opt/ml/sagemaker/warmpoolcache/pip` 디렉토리에 내보냅니다. 이 환경 변수를 내보내면 pip가 캐시를 새 위치에 저장하는 위치가 변경됩니다. 영구 캐시 디렉터리 내에 생성한 (중첩된 디렉터리 포함하는) 모든 디렉터리는 후속 훈련 실행 중에 재사용할 수 있습니다. 이전 코드 예제에서는 `pip` 디렉터리가 pip를 사용하여 설치된 모든 종속성을 캐시하기 위한 기본 위치로 변경되었습니다.

다음 코드 예제와 보여준 환경 변수를 사용하여 Python 훈련 스크립트 내에서 영구 캐시 위치에 액세스할 수도 있습니다.

```
import os
import shutil
if __name__ == '__main__':
    PERSISTED_DIR = os.environ["SAGEMAKER_MANAGED_WARMPOOL_CACHE_DIRECTORY"]

    # create a file to be persisted
    open(os.path.join(PERSISTED_DIR, "{{test.txt}}"), 'a').close()
    # create a directory to be persisted
    os.mkdir(os.path.join(PERSISTED_DIR, "{{test_dir}}"))

    # Move a file to be persisted
    shutil.move("{{path/of/your/file.txt}}", PERSISTED_DIR)
```

### 결제
<a name="train-warm-pools-billing"></a>

SageMaker AI의 관리형 웜 풀은 청구 대상 리소스입니다. 훈련 작업의 웜 풀 상태를 검색하여 웜 풀의 청구 대상 시간을 확인하세요. 웜 풀 상태는 [Amazon SageMaker AI 콘솔 사용](train-warm-pools-how-to-use.md#train-warm-pools-how-to-use-sagemaker-console)을 통해 또는 [DescribeTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html) API 명령을 통해 또는 직접 확인할 수 있습니다. 추가 정보는 *Amazon SageMaker API 참조*에서 [웜 풀 상태(WarmPoolStatus)](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_WarmPoolStatus.html)를 참조하세요.

**참고**  
파라미터 `KeepAlivePeriodInSeconds`에서 지정된 시간이 지나면 웜 풀과 영구 캐시가 모두 종료되고 콘텐츠가 삭제됩니다.

## 고려 사항
<a name="train-warm-pools-considerations"></a>

SageMaker AI의 관리형 웜 풀 사용 시 다음 항목을 고려합니다.
+ SageMaker AI의 관리형 웜 풀은 이종 클러스터 훈련과 함께 사용할 수 없습니다.
+ SageMaker AI의 관리형 웜 풀은 스팟 인스턴스와 함께 사용할 수 없습니다.
+ SageMaker AI의 관리형 웜 풀 수는 3,600초(60분)로 `KeepAlivePeriodInSeconds` 값을 제한합니다.
+ 웜 풀이 지정된 `KeepAlivePeriodInSeconds` 값 내에서 계속해서 훈련 작업과 성공적으로 매칭되는 경우 클러스터는 최대 28일 동안만 계속 실행할 수 있습니다.