SageMaker 관리형 온열 수영장을 이용한 열차 - 아마존 SageMaker

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

SageMaker 관리형 온열 수영장을 이용한 열차

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

중요

SageMaker 관리형 웜풀은 청구 가능한 리소스입니다. 자세한 정보는 결제을 참조하세요.

작동 방식

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

웜 풀 수명 주기

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

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

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

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

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

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

웜 풀 상태 옵션에 대한 자세한 내용은 Amazon SageMaker API 참조를 참조하십시오 WarmPoolStatus.

웜 풀 생성

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

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

매칭하는 훈련 작업

웜 풀이 지속되려면 KeepAlivePeriodInSeconds 값에 지정된 시간 내에 매칭되는 훈련 작업을 찾아야 합니다. 다음 값이 동일할 경우 다음 훈련 작업은 매칭하는 것으로 간주됩니다.

  • RoleArn

  • ResourceConfig 값:

    • InstanceCount

    • InstanceType

    • VolumeKmsKeyId

    • VolumeSizeInGB

  • VpcConfig 값:

    • SecurityGroupIds

    • Subnets

  • EnableInterContainerTrafficEncryption

  • EnableNetworkIsolation

  • 교육 True 작업에서 EnableSessionTagChaining set to로 교육 작업에 대한 세션 태그를 전달한 경우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 관리형 웜 풀은 청구 가능한 리소스입니다. 훈련 작업의 웜 풀 상태를 검색하여 웜 풀의 청구 대상 시간을 확인하세요. 웜 풀 상태는 를 통해 아마존 SageMaker 콘솔 사용 또는 DescribeTrainingJobAPI 명령을 통해 직접 확인할 수 있습니다. 자세한 내용은 Amazon SageMaker API 레퍼런스를 참조하십시오 WarmPoolStatus.

참고

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

웜 풀 리소스 제한

시작하려면 먼저 SageMaker 관리형 웜 풀의 서비스 한도 증가를 요청해야 합니다. 웜 풀의 기본 리소스 제한은 0입니다.

지정된 KeepAlivePeriodInSeconds 값으로 훈련 작업을 생성했지만 웜 풀 제한 증가를 요청하지 않은 경우, 훈련 작업이 완료된 후에는 웜 풀이 유지되지 않습니다. 웜 풀 제한에 충분한 리소스가 있는 경우에만 웜 풀이 생성됩니다. 웜 풀이 생성된 후 매칭하는 훈련 작업으로 이동하거나 KeepAlivePeriodInSeconds가/이 만료되면 (웜 풀 상태가 Reused 또는 Terminated인 경우) 해당 리소스가 해제됩니다.

웜 풀 할당량 증가 요청

AWS Service Quotas 콘솔을 사용하여 웜 풀 할당량 증가를 요청하세요.

참고

모든 웜 풀 인스턴스 사용량은 SageMaker 교육 리소스 한도에 포함됩니다. 웜 풀 리소스 제한을 늘려도 인스턴스 한도는 증가하지 않지만 리소스 제한의 일부를 웜 풀 훈련에 할당합니다.

  1. AWS Service Quotas Console을 엽니다.

  2. 왼쪽 탐색 창에서 AWS 서비스를 선택합니다.

  3. Amazon을 검색하고 선택합니다 SageMaker.

  4. 키워드 warm pool을 검색하면 사용 가능한 모든 웜 풀 서비스 할당량을 확인할 수 있습니다.

  5. 웜 풀 할당량을 늘리려는 인스턴스 유형을 찾아 해당 인스턴스 유형의 웜 풀 서비스 할당량을 선택한 다음 할당량 증가 요청을 선택합니다.

  6. 요청된 인스턴스 제한 수를 할당량 값 변경에 입력합니다. 새 값은 현재 적용된 할당량 값 보다 커야 합니다.

  7. 요청을 선택합니다.

계정당 유지할 수 있는 인스턴스 수는 인스턴스 유형에 따라 제한됩니다. AWS Service Quotas 콘솔에서 또는 CLI 명령을 사용하여 직접 리소스 한도를 확인할 수 있습니다. list-service-quotas AWS AWS Service Quotas에 대한 추가 정보는 Service Quotas 사용 설명서할당량 증가 요청을 참조하세요.

AWS 지원 센터를 사용하여 할당량 증가를 요청할 수 있습니다. 지역별로 사용 가능한 인스턴스 유형 목록은 Amazon SageMaker 요금을 참조하고 온디맨드 요금표에서 교육을 선택하십시오.

SageMaker 관리형 웜풀 사용 방법

SageMaker Python SDK, Amazon SageMaker 콘솔 또는 하위 수준 API를 통해 SageMaker 관리형 웜 풀을 사용할 수 있습니다. 관리자는 선택적으로 sagemaker:KeepAlivePeriod 조건 키를 사용하여 특정 사용자 또는 그룹에 대한 KeepAlivePeriodInSeconds 한도를 추가로 제한할 수 있습니다.

SageMaker Python SDK 사용하기

SageMaker Python SDK를 사용하여 웜 풀을 생성, 업데이트 또는 종료합니다.

참고

이 기능은 SageMaker Python SDK v2.110.0 이상에서 사용할 수 있습니다.

웜 풀 생성

웜 풀을 만들려면 SageMaker Python SDK를 사용하여 keep_alive_period_in_seconds 값이 0보다 큰 추정기를 만들고 호출하십시오. fit() 훈련 작업이 완료되면 웜 풀이 유지됩니다. 훈련 스크립트와 추정기에 대한 자세한 내용은 SageMaker Python SDK로 모델 훈련하기 항목을 참조하십시오. 스크립트가 웜 풀을 생성하지 않는 경우 가능한 설명은 웜 풀 생성을 참조하세요.

import sagemaker from sagemaker import get_execution_role from 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, ) # Starts a SageMaker training job and waits until completion estimator.fit('s3://my_bucket/my_training_data/')

다음으로, 두 번째 매칭하는 훈련 작업을 생성하세요. 이 예제에서는 my-training-job-2을 생성하는데 이는 my-training-job-1와 매칭되는 필요한 모든 속성을 포함하지만 실험에 사용할 하이퍼파라미터는 다릅니다. 두 번째 훈련 작업은 웜 풀을 재사용하므로 첫 번째 훈련 작업보다 더 빨리 시작됩니다. 다음 코드 예에서는 Tensorflow 추정기를 사용합니다. 웜 풀 기능은 Amazon에서 실행되는 모든 교육 알고리즘과 함께 사용할 수 SageMaker 있습니다. 매칭하는 속성에 대한 추가 정보는 매칭하는 훈련 작업을 참조하세요.

# Creates an example estimator estimator = TensorFlow( ... entry_point='my-training-script.py', source_dir='code', role=role, model_dir='model_dir', framework_version='py37', py_version='pyxy', job_name='my-training-job-2', instance_type='ml.g4dn.xlarge', instance_count=1, volume_size=250, hyperparameters={ "batch-size": 512, "epochs": 2, "learning-rate": 1e-3, "beta_1": 0.9, "beta_2": 0.999, }, keep_alive_period_in_seconds=1800, ) # Starts a SageMaker training job and waits until completion estimator.fit('s3://my_bucket/my_training_data/')

두 훈련 작업의 웜 풀 상태를 확인하여 웜 풀이 my-training-job-1을 위한 Reused인지 my-training-job-2을 위한 InUse인지 확인하세요.

참고

훈련 작업 이름에는 날짜/시간 접미사가 있습니다. 예제 훈련 작업 이름은 my-training-job-1이고 실제 훈련 작업 이름으로 my-training-job-2를 대체해야 합니다. 사용자는 estimator.latest_training_job.job_name 명령을 사용하여 실제 훈련 작업 이름을 가져올 수 있습니다.

session.describe_training_job('my-training-job-1') session.describe_training_job('my-training-job-2')

describe_training_job의 결과는 해당 훈련 작업에 대한 모든 세부 정보를 제공합니다. WarmPoolStatus 속성을 찾아 훈련 작업의 웜 풀에 대한 정보를 확인할 수 있습니다. 출력은 다음 예와 비슷해야 합니다.

# Warm pool status for training-job-1 ... 'WarmPoolStatus': {'Status': 'Reused', 'ResourceRetainedBillableTimeInSeconds': 1000, 'ReusedByName': my-training-job-2} ... # Warm pool status for training-job-2 ... 'WarmPoolStatus': {'Status': 'InUse'} ...

웜 풀 업데이트

훈련 작업이 완료되고 웜 풀 상태가 Available가 되면 KeepAlivePeriodInSeconds 값을 업데이트할 수 있습니다.

session.update_training_job(job_name, resource_config={"KeepAlivePeriodInSeconds":3600})

웜 풀 종료

웜 풀을 수동으로 종료하려면 KeepAlivePeriodInSeconds 값을 0으로 설정합니다.

session.update_training_job(job_name, resource_config={"KeepAlivePeriodInSeconds":0})

지정된 KeepAlivePeriodInSeconds 값을 초과하거나 클러스터에 대한 패치 업데이트가 있는 경우 웜 풀이 자동으로 종료됩니다.

아마존 SageMaker 콘솔 사용

콘솔을 통해 웜 풀을 생성하거나, 웜 풀을 해제하거나, 특정 훈련 작업의 웜 풀 상태 및 청구 대상 시간을 확인할 수 있습니다. 또한 어떤 매칭 훈련 작업에서 웜 풀을 재사용했는지도 확인할 수 있습니다.

  1. Amazon SageMaker 콘솔을 열고 탐색 창에서 교육 작업을 선택합니다. 해당하는 경우 각 훈련 작업의 웜 풀 상태는 웜 풀 상태 열에 표시되고 활성 웜 풀의 남은 시간은 남은 시간) 열에 표시됩니다.

  2. 콘솔에서 웜 풀을 사용하는 훈련 작업을 생성하려면 훈련 작업 생성을 선택합니다. 그런 다음 훈련 작업 리소스를 구성할 때 연결 유지 기간 필드에 값을 지정해야 합니다. 이 값은 지속 시간을 초 단위로 나타내며 1에서 3600 사이의 정수여야 합니다.

  3. 콘솔에서 웜 풀을 해제하려면 해당 훈련 작업을 선택하고 작업 드롭다운 메뉴에서 클러스터 릴리스를 선택합니다.

  4. 웜 풀에 대한 자세한 내용을 보려면 훈련 작업 이름을 선택합니다. 작업 세부 정보 페이지에서 웜 풀 상태) 섹션으로 스크롤하여 웜 풀 상태, (웜 풀 상태가 Available인 경우) 남은 시간, 웜 풀 청구 대상 시간(초), 웜 풀 상태가 Reused인 경우 웜 풀을 재사용한 훈련 작업 이름을 확인할 수 있습니다.

하위 수준 API SageMaker 사용

SageMaker API 또는 AWS CLI와 함께 SageMaker 관리형 웜 풀을 사용합니다.

SageMaker API

다음 명령으로 SageMaker API를 사용하여 SageMaker 관리형 웜 풀을 설정합니다.

AWS CLI

다음 명령과 함께 AWS CLI를 사용하여 SageMaker 관리형 웜 풀을 설정합니다.

IAM 조건 키

관리자는 선택적으로 sagemaker:KeepAlivePeriod 조건 키를 사용하여 특정 사용자 또는 그룹에 대한 KeepAlivePeriodInSeconds 제한을 추가로 제한할 수 있습니다. SageMaker 관리형 웜 풀은 3600초 (60분) 로 제한되지만 관리자는 필요한 경우 이 제한을 낮출 수 있습니다. KeepAlivePeriodInSeconds

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceKeepAlivePeriodLimit", "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob" ], "Resource": "*", "Condition": { "NumericLessThanIfExists": { "sagemaker:KeepAlivePeriod": 1800 } } } ] }

자세한 내용은 서비스 승인 SageMaker 참조의 Amazon용 조건 키를 참조하십시오.

고려 사항

SageMaker 관리형 웜풀을 사용할 때는 다음 항목을 고려하십시오.

  • SageMaker 관리형 웜 풀은 이기종 클러스터 교육과 함께 사용할 수 없습니다.

  • SageMaker 관리형 웜 풀은 스팟 인스턴스와 함께 사용할 수 없습니다.

  • SageMaker 관리형 웜 풀은 3600초 (60분) 로 제한됩니다. KeepAlivePeriodInSeconds

  • 웜 풀이 지정된 KeepAlivePeriodInSeconds 값 내에서 계속해서 훈련 작업과 성공적으로 매칭되는 경우 클러스터는 최대 28일 동안만 계속 실행할 수 있습니다.