

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

# AWS Clean Rooms ML에서 분산 훈련 사용
<a name="use-distributed-training"></a>

사전 조건: 
+ 에 액세스할 수 AWS 계정 있는 AWS Clean Rooms
+ 에 설정된 공동 작업 AWS Clean Rooms
+ 분산 훈련을 지원하는 구성된 모델 알고리즘
+ 분산 처리에 적합한 대규모 데이터 세트 
+ 공동 작업에서 ML 모델을 생성하고 관리할 수 있는 적절한 권한
+ 분산 훈련을 위해 여러 인스턴스를 실행할 수 있는 충분한 Amazon EC2 할당량 

분산 훈련은 병렬로 작동하는 많은 컴퓨팅 노드의 성능을 활용하여 대량의 데이터를 처리하고 모델 파라미터를 효율적으로 업데이트합니다.

분산 훈련에 대한 자세한 내용은 *Amazon SageMaker AI 개발자 안내서*의 [분산 훈련 개념](https://docs.aws.amazon.com/sagemaker/latest/dg/distributed-training.html#distributed-training-basic-concepts)을 참조하세요.

------
#### [ Console ]

**분산 훈련 작업을 실행하려면(콘솔)**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/cleanrooms](https://console.aws.amazon.com/cleanrooms/home) AWS Clean Rooms 콘솔을 엽니다.

1. 왼쪽 탐색 창에서 **공동 작업**을 선택합니다.

1. **공동 작업** 페이지에서 훈련된 모델을 생성할 공동 작업을 선택합니다.

1. 공동 작업이 열리면 **ML 모델** 탭을 선택합니다.

1. **사용자 지정 ML 모델의** **훈련된 모델** 섹션에서 **훈련된 모델 생성을** 선택합니다.

1. **훈련된 모델 생성** 페이지의 **연결된 모델 알고리즘**에 알고리즘을 지정합니다.

1. **훈련된 모델 세부 정보에** 다음을 입력합니다.

   1. **이름**에 공동 작업에서 모델의 고유한 이름을 입력합니다.

   1. (선택 사항) **설명**에 훈련된 모델에 대한 설명을 입력합니다.

   1. **훈련 데이터 입력 모드에서** 다음 중 하나를 선택합니다.
      + ML 스토리지 볼륨에 맞는 더 작은 데이터 세트가 있고 훈련 스크립트에 대한 기존 파일 시스템 액세스를 선호하는 경우 **파일을** 선택합니다.
      + 대규모 데이터 세트의 경우 **파이프**를 선택하여 S3에서 직접 데이터를 스트리밍하므로 모든 것을 디스크에 다운로드할 필요가 없으므로 훈련 속도를 개선하고 스토리지 요구 사항을 줄일 수 있습니다.
      + 특히 순차적으로 데이터를 읽거나 더 적은 파일을 처리하여 시작 시간을 단축할 때 S3 스트리밍의 이점을 파일 시스템 액세스와 결합하려면 **FastFile**을 선택합니다.

1. **ML 입력 채널 세부 정보**에서 다음을 수행합니다.

   1. **ML 입력 채널**의 경우 모델 알고리즘에 데이터를 제공하는 ML 입력 채널을 지정합니다.

      다른 채널을 추가하려면 **다른 ML 입력 채널 추가**를 선택합니다. 최대 19개의 ML 입력 채널을 추가할 수 있습니다.

   1. **채널 이름**에 ML 입력 채널의 이름을 입력합니다.

   1. **Amazon S3 데이터 배포 유형**에서 다음 중 하나를 선택합니다.
      + **완전히 복제됨을** 선택하여 각 훈련 인스턴스에 데이터 세트의 전체 사본을 제공합니다. 이는 데이터 세트가 메모리에 들어갈 만큼 작거나 각 인스턴스가 모든 데이터에 액세스해야 하는 경우에 가장 적합합니다.
      + **S3 키로 샤딩을** 선택하여 S3 키를 기반으로 훈련 인스턴스 간에 데이터 세트를 분할합니다. 각 인스턴스는 총 S3 객체의 약 1/n을 수신합니다. 여기서 'n'은 인스턴스 수입니다. 이는 병렬로 처리하려는 대규모 데이터 세트에 가장 적합합니다.
**참고**  
배포 유형을 선택할 때 데이터 세트 크기와 훈련 요구 사항을 고려하세요. **완전 복제는** 완전한 데이터 액세스를 제공하지만 더 많은 스토리지가 필요한 반면, ** S3 키로 샤딩하면** 대규모 데이터 세트를 분산 처리할 수 있습니다.

1. **최대 훈련 기간**에서 모델을 훈련할 최대 시간을 선택합니다.

1. **하이퍼파라미터에서** 알고리즘별 파라미터와 해당 값을 지정합니다. 하이퍼파라미터는 훈련 중인 모델에 고유하며 모델 훈련을 미세 조정하는 데 사용됩니다.

1. **환경 변수**에서 알고리즘별 변수와 해당 값을 지정합니다. 환경 변수는 Docker 컨테이너에서 설정됩니다.

1. **암호화**에서 사용자 지정를 사용하려면 **사용자 지정 KMS 키로 보안 암호 암호화** 확인란을 AWS KMS key선택합니다.

1. **EC2 리소스 구성**에서 모델 훈련에 사용되는 컴퓨팅 리소스에 대한 정보를 지정합니다.

   1. **인스턴스 유형**에서 실행할 인스턴스 유형을 선택합니다.

      분산 훈련에 지원되는 인스턴스 유형은 다음과 같습니다.
      + ml.m5.4xlarge
      + ml.m5.12xlarge 
      + ml.m5.2xlarge
      + ml.g5.12xlarge
      + ml.g5.24xlarge

   1. **인스턴스 수**에 인스턴스 수를 입력합니다.

   1. **볼륨 크기 GB에** ML 스토리지 볼륨 크기를 입력합니다.

1. **훈련된 모델 생성을** 선택합니다.

------
#### [ API ]

분산 훈련 작업(API)을 실행하려면

특정 파라미터로 다음 코드를 실행합니다.

```
import boto3 
acr_ml_client= boto3.client('cleanroomsml')
 
acr_ml_client.create_trained_model(
    membershipIdentifier= 'membership_id',
    configuredModelAlgorithmAssociationArn = 'arn:aws:cleanrooms-ml:region:account:membership/membershipIdentifier/configured-model-algorithm-association/identifier',
    name='trained_model_name',
    trainingInputMode: "File",
    resourceConfig={
        'instanceCount': "3"
        'instanceType': "ml.m5.xlarge",
        'volumeSizeInGB': 3
    },
    dataChannels=[
        {
            "mlInputChannelArn": channel_arn_1,
            "channelName": "channel_name", 
            "S3DataDistributionType:" "FullyReplicated"
        }
  
    ]
)
```

------

**참고**  
훈련된 모델을 생성한 후에는 편집할 수 없습니다. 변경하려면 훈련된 모델을 삭제하고 새 모델을 생성합니다.