기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SageMaker Managed Warm 풀
SageMaker 관리형 웜 풀을 사용하면 훈련 작업이 완료된 후 프로비저닝된 인프라를 유지하고 재사용하여 반복 실험 또는 연속으로 많은 작업을 실행하는 등 반복적인 워크로드의 지연 시간을 줄일 수 있습니다. 지정된 파라미터와 매칭되는 후속 훈련 작업은 보존된 웜 풀 인프라에서 실행되므로 리소스를 프로비저닝하는 데 소요되는 시간을 줄여 시작 시간을 단축합니다.
중요
SageMaker 관리형 웜 풀은 청구 가능한 리소스입니다. 자세한 내용은 결제 단원을 참조하십시오.
작동 방식
SageMaker 관리형 웜 풀을 사용하고 유사한 연속 훈련 작업 간의 지연 시간을 줄이려면 에서 KeepAlivePeriodInSeconds
값을 지정하는 훈련 작업을 생성합니다ResourceConfig
. 이 값은 후속 훈련 작업을 위해 웜 풀에 구성된 리소스를 유지하는 데 걸리는 시간을 초 단위로 나타냅니다. 비슷한 구성을 사용하여 여러 훈련 작업을 실행해야 하는 경우 전용 영구 캐시 디렉터리를 사용하여 정보를 저장하고 다른 작업에서 재사용하면 대기 시간과 청구 대상 시간을 더욱 줄일 수 있습니다.
웜 풀 수명 주기
-
KeepAlivePeriodInSeconds
값이 0보다 큰 초기 훈련 작업을 생성하세요. 이 첫 번째 훈련 작업을 실행하면 일반적인 시작 시간으로 클러스터를 “콜드 스타트”합니다. -
첫 번째 훈련 작업이 완료되면 프로비저닝된 리소스는
KeepAlivePeriodInSeconds
값에 지정된 기간 동안 웜 풀에 보관됩니다. 클러스터가 정상이고 웜 풀이 지정된KeepAlivePeriodInSeconds
범위 내에 있으면 웜 풀은Available
상태입니다. -
웜 풀은 재사용할 매칭 훈련 작업을 식별하거나 지정된
KeepAlivePeriodInSeconds
범위를 초과할 때까지Available
상태를 유지하고 종료됩니다.KeepAlivePeriodInSeconds
에 허용되는 최대 시간은 3600초(60분)입니다. 웜 풀 상태가Terminated
이면 웜 풀 수명 주기가 종료됩니다. -
웜 풀이 인스턴스 수 또는 인스턴스 유형과 같은 사양이 매칭되는 두 번째 훈련 작업을 식별하면 웜 풀은 재사용을 위해 첫 번째 훈련 작업에서 두 번째 훈련 작업으로 이동합니다. 첫 번째 훈련 작업 웜 풀은
Reused
상태가 됩니다. 이로써 첫 번째 훈련 작업의 웜 풀 수명 주기가 종료됩니다. -
웜 풀을 재사용한 두 번째 훈련 작업은
InUse
상태가 됩니다. 두 번째 훈련 작업이 완료된 후에는 두 번째 훈련 작업에 지정된KeepAlivePeriodInSeconds
기간 동안 웜 풀은Available
상태입니다. 웜 풀은 최대 28일 동안 후속 매칭 훈련 작업으로 계속 이동할 수 있습니다. -
웜 풀을 더 이상 재사용할 수 없는 경우 웜 풀은
Terminated
상태입니다. 사용자가 웜 풀을 종료하거나, 패치 업데이트로 인해 또는 지정된KeepAlivePeriodInSeconds
범위를 초과하여 웜 풀을 종료되는 경우 더 이상 사용할 수 없습니다.
웜 풀 상태 옵션에 대한 자세한 내용은 Amazon 참조WarmPoolStatus의 섹션을 참조하세요. SageMaker API
웜 풀 생성
초기 훈련 작업이 성공적으로 완료되고 KeepAlivePeriodInSeconds
값이 0보다 크면 웜 풀이 생성됩니다. 클러스터가 이미 시작된 후 훈련 작업을 중지해도 웜 풀은 계속 유지됩니다. 알고리즘이나 클라이언트 오류로 인해 훈련 작업이 실패하더라도 웜 풀은 계속 유지됩니다. 클러스터의 상태를 손상시킬 수 있는 다른 이유로 훈련 작업이 실패하면 웜 풀이 생성되지 않습니다.
웜 풀 생성이 성공했는지 확인하려면 훈련 작업의 웜 풀 상태를 확인하세요. 웜 풀이 성공적으로 프로비저닝된 경우 웜 풀은 Available
상태입니다. 웜 풀이 프로비저닝에 실패할 경우 웜 풀은 Terminated
상태입니다.
매칭하는 훈련 작업
웜 풀이 지속되려면 KeepAlivePeriodInSeconds
값에 지정된 시간 내에 매칭되는 훈련 작업을 찾아야 합니다. 다음 값이 동일할 경우 다음 훈련 작업은 매칭하는 것으로 간주됩니다.
-
RoleArn
-
ResourceConfig
값:-
InstanceCount
-
InstanceType
-
VolumeKmsKeyId
-
VolumeSizeInGB
-
-
VpcConfig
값:-
SecurityGroupIds
-
Subnets
-
-
EnableInterContainerTrafficEncryption
-
EnableNetworkIsolation
-
훈련 작업의
True
에서 가 로EnableSessionTagChaining
설정된 훈련 작업에 대한 세션 태그를 전달한SessionChainingConfig
경우 일치하는 훈련 작업도EnableSessionTagChaining
로 설정True
되고 동일한 세션 키가 있어야 합니다. 자세한 내용은 다중 테넌시 훈련에 속성 기반 액세스 제어(ABAC) 사용 단원을 참조하십시오.
웜 풀을 후속 훈련 작업으로 옮겨 재사용하려면 이 모든 값이 같아야 합니다.
웜 풀 최대 시간
단일 훈련 작업의 최대 KeepAlivePeriodInSeconds
시간은 3600초(60분)이며, 웜 풀 클러스터가 연속 훈련 작업을 계속 실행할 수 있는 최대 시간은 28일입니다.
각 후속 훈련 작업에도 KeepAlivePeriodInSeconds
값을 지정해야 합니다. 웜 풀이 다음 훈련 작업으로 이동하면 해당 훈련 작업의 ResourceConfig
에 지정된 새 KeepAlivePeriodInSeconds
값이 상속됩니다. 이렇게 하면 최대 28일 동안 웜 풀을 훈련 작업에서 훈련 작업으로 계속 이동할 수 있습니다.
KeepAlivePeriodInSeconds
가 지정되지 않은 경우 훈련 작업이 완료된 후 웜 풀이 감속됩니다.
영구 캐시 사용
웜 풀을 생성할 때 는 웜 풀의 수명 주기 동안 지속되는 볼륨에 특수 디렉터리를 SageMaker 탑재합니다. 이 디렉터리를 사용하여 다른 작업에서 재사용하려는 정보를 저장할 수도 있습니다.
영구 캐시를 사용하면 다음을 필요로 하는 작업에 웜 풀만 사용할 때보다 대기 시간과 청구 대상 시간을 줄일 수 있습니다.
-
유사한 구성과의 다중 상호 작용
-
점증 훈련
-
하이퍼파라미터 최적화
예를 들어, 영구 캐시 디렉토리 내에 pip 캐시 디렉토리를 설정하여 반복 실행 시 동일한 Python 종속성을 다운로드하지 않도록 할 수 있습니다. 이 디렉터리의 내용을 관리하는 것은 전적으로 사용자의 책임입니다. 다음은 지연 시간과 청구 대상 시간을 줄이기 위해 영구 캐시에 저장할 수 있는 정보 유형의 예입니다.
-
종속성은 pip로 관리합니다.
-
종속성은 conda에서 관리합니다.
-
훈련 중에 생성된 모든 추가 정보.
영구 캐시의 위치는 /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"} )
이전 코드 예제에서는 환경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)
결제
SageMaker 관리형 웜 풀은 청구 가능한 리소스입니다. 훈련 작업의 웜 풀 상태를 검색하여 웜 풀의 청구 대상 시간을 확인하세요. Amazon SageMaker 콘솔 사용 또는 DescribeTrainingJob API 명령을 통해 직접 웜 풀 상태를 확인할 수 있습니다. 자세한 내용은 Amazon 참조WarmPoolStatus의 섹션을 참조하세요. SageMaker API
참고
파라미터 KeepAlivePeriodInSeconds
에서 지정된 시간이 지나면 웜 풀과 영구 캐시가 모두 종료되고 콘텐츠가 삭제됩니다.
고려 사항
SageMaker 관리형 웜 풀을 사용할 때는 다음 항목을 고려하세요.
-
SageMaker 관리형 웜 풀은 이기종 클러스터 훈련과 함께 사용할 수 없습니다.
-
SageMaker 관리형 웜 풀은 스팟 인스턴스와 함께 사용할 수 없습니다.
-
SageMaker 관리형 웜 풀은 3600초(60분)
KeepAlivePeriodInSeconds
로 제한됩니다. -
웜 풀이 지정된
KeepAlivePeriodInSeconds
값 내에서 계속해서 훈련 작업과 성공적으로 매칭되는 경우 클러스터는 최대 28일 동안만 계속 실행할 수 있습니다.