

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

# Amazon SageMaker AI에서 이기종 클러스터를 사용하여 훈련 작업 구성
<a name="train-heterogeneous-cluster-configure"></a>

이 섹션에서는 여러 인스턴스 유형으로 구성된 이기종 클러스터를 사용하여 훈련 작업을 실행하는 방법에 대한 지침을 제공합니다.

시작하기 전에 다음 사항에 유의하세요.
+ 모든 인스턴스 그룹은 동일한 도커 이미지와 훈련 스크립트를 공유합니다. 따라서 어떤 인스턴스 그룹에 속하는지 감지하고 그에 따라 실행을 분기하도록 훈련 스크립트를 수정해야 합니다.
+ 이기종 클러스터 기능은 SageMaker AI 로컬 모드에서 지원되지 않습니다.
+ 이기종 클러스터 훈련 작업의 Amazon CloudWatch 로그 스트림은 인스턴스 그룹별로 그룹화되지 않습니다. 로그를 통해 어떤 노드가 어떤 그룹에 속하는지 파악해야 합니다.

**Topics**
+ [옵션 1: SageMaker Python SDK 사용하기](#train-heterogeneous-cluster-configure-pysdk)
+ [옵션 2: 하위 수준 SageMaker API 사용](#train-heterogeneous-cluster-configure-api)

## 옵션 1: SageMaker Python SDK 사용하기
<a name="train-heterogeneous-cluster-configure-pysdk"></a>

SageMaker Python SDK를 사용하여 이기종 클러스터의 인스턴스 그룹을 구성하는 방법에 대한 지침을 따르세요.

1. 훈련 작업에 사용할 이기종 클러스터의 인스턴스 그룹을 구성하려면 `sagemaker.instance_group.InstanceGroup` 클래스를 사용하세요 각 인스턴스 그룹의 사용자 지정 이름, 인스턴스 유형, 각 인스턴스 그룹의 인스턴스 수를 지정할 수 있습니다. 자세한 내용은 *SageMaker AI Python SDK 설명서*의 [sagemaker.instance\_group.InstanceGroup](https://sagemaker.readthedocs.io/en/stable/api/utility/instance_group.html)을 참조하세요.
**참고**  
사용 가능한 인스턴스 유형 및 이기종 클러스터에서 구성할 수 있는 최대 인스턴스 그룹 수에 대한 자세한 내용은 [InstanceGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html) API 참조를 참조하세요.

   다음 코드 예제는 다음 다이어그램과 같이 `instance_group_2`라는 두 개의 `ml.c5.18xlarge` CPU 전용 `instance_group_1` 인스턴스와 이름이 지정된 하나의 `ml.p3dn.24xlarge` GPU 인스턴스로 구성된 두 개의 인스턴스 그룹을 설정하는 방법을 보여줍니다.  
![SageMaker 훈련 작업에서 데이터를 할당할 수 있는 방법의 개념적 예제입니다.](http://docs.aws.amazon.com/ko_kr/sagemaker/latest/dg/images/HCTraining.png)

   앞의 다이어그램은 데이터 사전 처리와 같은 사전 훈련 프로세스를 CPU 인스턴스 그룹에 할당하고 사전 처리된 데이터를 GPU 인스턴스 그룹에 스트리밍하는 방법의 개념적 예를 보여줍니다.

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

1. [인스턴스 그룹 객체를 사용하여 훈련 입력 채널을 설정하고 SageMaker.inputs.TrainingInput 클래스의 `instance_group_names` 인수를 통해 채널에 인스턴스 그룹을 할당합니다.](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html) `instance_group_names` 인수는 인스턴스 그룹 이름의 문자열 목록을 수락합니다.

   다음 예제는 두 개의 훈련 입력 채널을 설정하고 이전 단계의 예제에서 만든 인스턴스 그룹을 할당하는 방법을 보여줍니다. 또한 인스턴스 그룹의 `s3_data` 인수에 대한 Amazon S3 버킷 경로를 지정하여 사용 목적에 맞게 데이터를 처리할 수 있습니다.

   ```
   from sagemaker.inputs import TrainingInput
   
   training_input_channel_1 = TrainingInput(
       s3_data_type='{{S3Prefix}}', # Available Options: S3Prefix | ManifestFile | AugmentedManifestFile
       s3_data='{{s3://your-training-data-storage/folder1}}',
       distribution='{{FullyReplicated}}', # Available Options: FullyReplicated | ShardedByS3Key 
       input_mode='{{File}}', # Available Options: File | Pipe | FastFile
       instance_groups=["{{instance_group_1}}"]
   )
   
   training_input_channel_2 = TrainingInput(
       s3_data_type='{{S3Prefix}}',
       s3_data='{{s3://your-training-data-storage/folder2}}',
       distribution='{{FullyReplicated}}',
       input_mode='{{File}}',
       instance_groups=["{{instance_group_2}}"]
   )
   ```

   `TrainingInput`의 인수에 대한 자세한 내용은 다음 링크를 참조하세요.
   + *SageMaker Python SDK 문서*의 [sagemaker.inputs.TrainingInput](https://sagemaker.readthedocs.io/en/stable/api/utility/inputs.html) 클래스
   + *SageMaker AI API 참조*의 [S3DataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html) API

1. 다음 코드 예시와 같이 `instance_groups` 인수를 사용하여 SageMaker AI 예측기를 구성합니다. `instance_groups` 인수는 `InstanceGroup` 객체 목록을 받아들입니다.
**참고**  
이기종 클러스터 기능은 SageMaker AI [PyTorch](https://sagemaker.readthedocs.io/en/stable/frameworks/pytorch/sagemaker.pytorch.html)와 [TensorFlow](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/sagemaker.tensorflow.html#tensorflow-estimator) 프레임워크 예측기 클래스를 통해 사용할 수 있습니다. 지원되는 프레임워크는 파이토치 v1.10 이상 및 텐서플로 v2.6 이상입니다. 사용 가능한 프레임워크 컨테이너, 프레임워크 버전 및 Python 버전의 전체 목록을 찾으려면 AWS 딥 러닝 [컨테이너 GitHub 리포지토리의 SageMaker AI 프레임워크](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) 컨테이너를 참조하세요. GitHub 

------
#### [ PyTorch ]

   ```
   from sagemaker.pytorch import PyTorch
   
   estimator = PyTorch(
       ...
       entry_point='{{my-training-script.py}}',
       framework_version='{{x.y.z}}',    # 1.10.0 or later
       py_version='py{{xy}}',            
       job_name='{{my-training-job-with-heterogeneous-cluster}}',
       instance_groups=[{{instance_group_1}}, {{instance_group_2}}]
   )
   ```

------
#### [ TensorFlow ]

   ```
   from sagemaker.tensorflow import TensorFlow
   
   estimator = TensorFlow(
       ...
       entry_point='{{my-training-script.py}}',
       framework_version='{{x.y.z}}', # 2.6.0 or later
       py_version='py{{xy}}',
       job_name='{{my-training-job-with-heterogeneous-cluster}}',
       instance_groups=[{{instance_group_1}}, {{instance_group_2}}]
   )
   ```

------
**참고**  
`instance_type` 및 `instance_count` 인수 페어와 SageMaker AI 예측기 클래스의 `instance_groups` 인수는 상호 배타적입니다. 동종 클러스터 훈련의 경우 `instance_type` 및 `instance_count` 인수 페어를 사용하세요. 이기종 클러스터 훈련의 경우 `instance_groups`를 사용하세요.
**참고**  
사용 가능한 프레임워크 컨테이너, 프레임워크 버전 및 Python 버전의 전체 목록을 찾으려면 AWS 딥 러닝 [컨테이너 GitHub 리포지토리의 SageMaker AI 프레임워크](https://github.com/aws/deep-learning-containers/blob/master/available_images.md#sagemaker-framework-containers-sm-support-only) 컨테이너를 참조하세요. GitHub 

1. 인스턴스 그룹으로 구성된 훈련 입력 채널로 `estimator.fit` 메서드를 구성하고 훈련 작업을 시작하세요

   ```
   estimator.fit(
       inputs={
           'training': {{training_input_channel_1}}, 
           '{{dummy-input-channel}}': {{training_input_channel_2}}
       }
   )
   ```

## 옵션 2: 하위 수준 SageMaker API 사용
<a name="train-heterogeneous-cluster-configure-api"></a>

 AWS Command Line Interface 또는를 사용하고 이기종 클러스터로 훈련 작업 요청을 제출하기 위해 하위 수준 SageMaker APIs를 사용 AWS SDK for Python (Boto3) 하려는 경우 다음 API 참조를 참조하세요.
+ [CreateTrainingJob](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html)
+ [ResourceConfig ](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_ResourceConfig.html)
+ [InstanceGroup](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_InstanceGroup.html)
+ [S3DataSource](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_S3DataSource.html)