인스턴스 그룹을 할당하도록 훈련 스크립트 수정 - Amazon SageMaker

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

인스턴스 그룹을 할당하도록 훈련 스크립트 수정

이전 섹션의 이기종 클러스터 구성을 사용하면 SageMaker 훈련 작업에 대한 훈련 환경 및 인스턴스를 준비할 수 있습니다. 인스턴스 그룹을 특정 훈련 및 데이터 처리 작업에 추가로 할당하려면 다음 단계는 훈련 스크립트를 수정하는 것입니다. 기본적으로 훈련 작업에서는 인스턴스 크기에 관계없이 모든 노드에 대한 훈련 스크립트 복제본을 만들기만 하므로 성능이 저하될 수 있습니다.

예를 들어 딥 뉴럴 네트워크 훈련 스크립트를 SageMaker 추정기의 entry_point 인수에 전달하는 동안 이종 클러스터의 CPU 인스턴스와 GPU 인스턴스를 혼합하면 entry_point 스크립트가 각 인스턴스에 복제됩니다. 즉, 적절한 태스크 할당 없이 CPU 인스턴스는 전체 스크립트를 실행하고 GPU 인스턴스에 대한 분산 훈련을 위해 설계된 훈련 작업을 시작합니다. 따라서 CPU 인스턴스에서 오프로드하고 실행하려는 특정 처리 함수를 변경해야 합니다. SageMaker 환경 변수를 사용하여 이기종 클러스터의 정보를 검색하고 특정 프로세스가 적절하게 실행되도록 할 수 있습니다.

훈련 작업이 시작되면 훈련 스크립트는 이기종 클러스터 구성을 포함하는 SageMaker 훈련 환경 정보를 읽습니다. 구성에는 현재 인스턴스 그룹, 각 그룹의 현재 호스트, 현재 호스트가 상주하는 그룹 등의 정보가 포함됩니다.

다음과 같은 방법으로 훈련 작업의 SageMaker 초기화 단계에서 인스턴스 그룹 정보를 쿼리할 수 있습니다.

(권장) SageMaker 훈련 툴킷으로 인스턴스 그룹 정보 읽기

SageMaker 훈련 툴킷 라이브러리가 제공하는 환경 Python 모듈을 사용합니다. 툴킷 라이브러리는 TensorFlow 및 의 SageMaker 프레임워크 컨테이너에 사전 설치되어 PyTorch있으므로 사전 구축된 컨테이너를 사용할 때 추가 설치 단계가 필요하지 않습니다. 이는 훈련 스크립트에서 코드 변경 사항이 적은 SageMaker 환경 변수를 검색하는 데 권장되는 방법입니다.

from sagemaker_training import environment env = environment.Environment()

일반 SageMaker 훈련 및 이기종 클러스터와 관련된 환경 변수:

  • env.is_hetero - 이기종 클러스터의 구성 여부에 관계없이 Boolean 결과를 반환합니다.

  • env.current_host - 현재 호스트를 반환합니다.

  • env.current_instance_type - 현재 호스트의 인스턴스 유형을 반환합니다.

  • env.current_instance_group - 현재 인스턴스 그룹 이름을 반환합니다.

  • env.current_instance_group_hosts - 현재 인스턴스 그룹의 호스트 목록을 반환합니다.

  • env.instance_groups - 훈련에 사용된 인스턴스 그룹 이름 목록을 반환합니다.

  • env.instance_groups_dict - 훈련 작업의 전체 이기종 클러스터 구성을 반환합니다.

  • env.distribution_instance_groups - SageMaker 추정기 클래스의 distribution 파라미터에 할당된 인스턴스 그룹 목록을 반환합니다.

  • env.distribution_hosts - SageMaker 추정기 클래스의 distribution 파라미터에 할당된 인스턴스 그룹에 속하는 호스트 목록을 반환합니다.

예를 들어, 두 인스턴스 그룹으로 구성된 이기종 클러스터의 다음 예를 생각해 보세요.

from sagemaker.instance_group import InstanceGroup instance_group_1 = InstanceGroup( "instance_group_1", "ml.c5.18xlarge", 1) instance_group_2 = InstanceGroup( "instance_group_2", "ml.p3dn.24xlarge", 2)

예시 이기종 env.instance_groups_dict 클러스터의 출력은 다음과 유사해야 합니다.

{ "instance_group_1": { "hosts": [ "algo-2" ], "instance_group_name": "instance_group_1", "instance_type": "ml.c5.18xlarge" }, "instance_group_2": { "hosts": [ "algo-3", "algo-1" ], "instance_group_name": "instance_group_2", "instance_type": "ml.p3dn.24xlarge" } }

(선택 사항) 리소스 구성 JSON 파일에서 인스턴스 그룹 정보 읽기

JSON 형식의 환경 변수를 검색하려면 리소스 구성 JSON 파일을 직접 사용할 수 있습니다. SageMaker 훈련 인스턴스의 JSON 파일은 /opt/ml/input/config/resourceconfig.json 기본적으로 에 있습니다.

file_path = '/opt/ml/input/config/resourceconfig.json' config = read_file_as_json(file_path) print(json.dumps(config, indent=4, sort_keys=True))