

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

# Clean Rooms ML의 사용자 지정 모델
<a name="custom-models"></a>

Clean Rooms ML을 사용하면 공동 작업 구성원이 Amazon ECR에 저장된 도킹된 사용자 지정 모델 알고리즘을 사용하여 데이터를 공동 분석할 수 있습니다. 이렇게 하려면 *모델 공급자*가 이미지를 생성하고 Amazon ECR에 저장해야 합니다. [Amazon Elastic Container Registry 사용 설명서](https://docs.aws.amazon.com/AmazonECR/latest/userguide/)의 단계에 따라 사용자 지정 ML 모델을 포함할 프라이빗 리포지토리를 생성합니다.

올바른 권한이 있는 경우 공동 작업의 모든 구성원이 *모델 공급자*가 될 수 있습니다. 공동 작업의 모든 구성원은 모델에 데이터를 제공할 수 있습니다. 이 안내서의 목적상 데이터를 제공하는 구성원을 *데이터 공급자*라고 합니다. 공동 작업을 생성하는 구성원은 *공동 작업 생성*자이며,이 구성원은 *모델 공급자*, *데이터 공급자* 중 하나 또는 둘 다일 수 있습니다.

다음 주제에서는 사용자 지정 ML 모델을 생성하는 데 필요한 정보를 설명합니다.

**Topics**
+ [사용자 지정 ML 모델링 사전 조건](custom-model-prerequisites.md)
+ [훈련 컨테이너에 대한 모델 작성 지침](custom-model-guidelines.md)
+ [추론 컨테이너에 대한 모델 작성 지침](inference-model-guidelines.md)
+ [모델 로그 및 지표 수신](custom-model-logs.md)

# 사용자 지정 ML 모델링 사전 조건
<a name="custom-model-prerequisites"></a>

사용자 지정 ML 모델링을 수행하려면 먼저 다음 사항을 고려해야 합니다.
+ 훈련된 모델에 대한 모델 훈련과 추론을 공동 작업에서 수행할지 여부를 결정합니다.
+ 각 공동 작업 구성원이 수행할 역할을 결정하고 적절한 기능을 할당합니다.
  + 모델을 훈련하고 훈련된 모델에 대해 추론을 실행할 구성원에게 `CAN_QUERY` 기능을 할당합니다.
  + 공동 작업의 구성원 한 명 이상`CAN_RECEIVE_RESULTS`에게를 할당합니다.
  + 훈련된 모델 내보내기 `CAN_RECEIVE_MODEL_OUTPUT` 또는 추론 출력을 각각 받을 구성원에게 또는 `CAN_RECEIVE_INFERENCE_OUTPUT` 기능을 할당합니다. 사용 사례에 필요한 경우 두 기능을 모두 사용하도록 선택할 수 있습니다.
+ 내보내도록 허용할 훈련된 모델 아티팩트 또는 추론 결과의 최대 크기를 결정합니다.
+ 모든 사용자에게 역할에 연결된 `CleanrooomsFullAccess` 및 `CleanroomsMLFullAccess` 정책이 있는 것이 좋습니다. 사용자 지정 ML 모델을 사용하려면 AWS Clean Rooms 및 AWS Clean Rooms ML SDKs.
+ IAM 역할에 대한 다음 정보를 고려합니다.
  + 모든 데이터 공급자는가 AWS Glue 카탈로그 및 테이블과 기본 Amazon S3 위치에서 데이터를 AWS Clean Rooms 읽을 수 있도록 허용하는 서비스 액세스 역할이 있어야 합니다. 이러한 역할은 SQL 쿼리에 필요한 역할과 유사합니다. 이렇게 하면 `CreateConfiguredTableAssociation` 작업을 사용할 수 있습니다. 자세한 내용은 [서비스 역할을 생성하여 구성된 테이블 연결 생성](ml-roles.md#ml-roles-custom-configure-table) 단원을 참조하십시오.
  + 지표를 수신하려는 모든 멤버는 CloudWatch 지표 및 로그를 작성할 수 있는 서비스 액세스 역할이 있어야 합니다. 이 역할은 Clean Rooms ML에서 모델 훈련 및 추론 AWS 계정 중에 모든 모델 지표와 로그를 멤버의에 기록하는 데 사용됩니다. 또한 지표 및 로그에 액세스할 수 있는 구성원을 결정하기 위한 개인 정보 보호 제어 기능도 제공합니다. 이렇게 하면 `CreateMLConfiguration` 작업을 사용할 수 있습니다. 자세한 내용은 단원을 참조하십시오[사용자 지정 ML 모델링을 위한 서비스 역할 생성 - ML 구성](ml-roles.md#ml-roles-custom-configure).

    결과를 수신하는 멤버는 서비스 액세스 역할에 Amazon S3 버킷에 쓸 수 있는 권한을 제공해야 합니다. 이 역할을 통해 Clean Rooms ML은 결과(학습된 모델 아티팩트 또는 추론 결과)를 Amazon S3 버킷으로 내보낼 수 있습니다. 이렇게 하면 `CreateMLConfiguration` 작업을 사용할 수 있습니다. 자세한 내용은 [사용자 지정 ML 모델링을 위한 서비스 역할 생성 - ML 구성](ml-roles.md#ml-roles-custom-configure) 단원을 참조하십시오.
  + 모델 공급자는 서비스 액세스 역할에 Amazon ECR 리포지토리 및 이미지를 읽을 수 있는 권한을 제공해야 합니다. 이렇게 하면 `CreateConfigureModelAlgorithm` 작업을 사용할 수 있습니다. 자세한 내용은 [서비스 역할을 생성하여 사용자 지정 ML 모델 제공](ml-roles.md#ml-roles-custom-model-provider) 단원을 참조하십시오.
  + 훈련 또는 추론`MLInputChannel`용 데이터 세트를 생성하기 위해를 생성하는 구성원은 Clean Rooms ML이 SQL 쿼리를 실행할 수 있도록 허용하는 서비스 액세스 역할을 제공해야 합니다 AWS Clean Rooms. 이렇게 하면 `CreateTrainedModel` 및 `StartTrainedModelInferenceJob` 작업을 사용할 수 있습니다. 자세한 내용은 [데이터 세트를 쿼리할 서비스 역할 생성](ml-roles.md#ml-roles-custom-query-dataset) 단원을 참조하십시오.
+ 모델 작성자는 [훈련 컨테이너에 대한 모델 작성 지침](custom-model-guidelines.md) 모델 입력 및 출력이 예상대로 구성되도록 [추론 컨테이너에 대한 모델 작성 지침모델 로그 및 지표 수신](inference-model-guidelines.md) 및를 따라야 합니다 AWS Clean Rooms.

# 훈련 컨테이너에 대한 모델 작성 지침
<a name="custom-model-guidelines"></a>

이 섹션에서는 Clean Rooms ML용 사용자 지정 ML 모델 알고리즘을 생성할 때 모델 공급자가 따라야 하는 지침을 자세히 설명합니다.
+ SageMaker AI [개발자 안내서에 설명된 대로 적절한 SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths.html) 훈련 지원 컨테이너 기본 이미지를 사용합니다. 다음 코드를 사용하면 퍼블릭 SageMaker AI 엔드포인트에서 지원되는 컨테이너 기본 이미지를 가져올 수 있습니다.

  ```
  ecr_registry_endpoint='763104351884.dkr.ecr.$REGION.amazonaws.com'
  base_image='pytorch-training:2.3.0-cpu-py311-ubuntu20.04-sagemaker'
  aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ecr_registry_endpoint
  docker pull $ecr_registry_endpoint/$base_image
  ```
+ 모델을 로컬에서 작성할 때 개발 인스턴스,의 SageMaker AI 훈련 및 AWS 계정 Clean Rooms ML에서 로컬에서 모델을 테스트할 수 있도록 다음을 확인하세요.
  + 다양한 환경 변수를 통해 훈련 환경에 대한 유용한 속성에 액세스하는 훈련 스크립트를 작성하는 것이 좋습니다. Clean Rooms ML은 `SM_MODEL_DIR`, `SM_OUTPUT_DIR`, `SM_CHANNEL_TRAIN`및 인수를 사용하여 모델 코드에 대한 훈련을 호출합니다`FILE_FORMAT`. 이러한 기본값은 Clean Rooms ML에서 모든 당사자의 데이터를 사용하여 자체 실행 환경에서 ML 모델을 훈련하는 데 사용됩니다.
  + Clean Rooms ML을 사용하면 Docker 컨테이너의 `/opt/ml/input/data/channel-name` 디렉터리를 통해 훈련 입력 채널을 사용할 수 있습니다. 각 ML 입력 채널은 `CreateTrainedModel` 요청에 `channel_name` 제공된 해당를 기반으로 매핑됩니다.

    ```
    parser = argparse.ArgumentParser()# Data, model, and output directories
    
    parser.add_argument('--model_dir', type=str, default=os.environ.get('SM_MODEL_DIR', "/opt/ml/model"))
    parser.add_argument('--output_dir', type=str, default=os.environ.get('SM_OUTPUT_DIR', "/opt/ml/output/data"))
    parser.add_argument('--train_dir', type=str, default=os.environ.get('SM_CHANNEL_TRAIN', "/opt/ml/input/data/train"))
    parser.add_argument('--train_file_format', type=str, default=os.environ.get('FILE_FORMAT', "csv"))
    ```
  + 모델 코드에 사용할 공동 작업자의 스키마를 기반으로 합성 또는 테스트 데이터 세트를 생성할 수 있는지 확인합니다.
  + 모델 알고리즘 AWS Clean Rooms 을 공동 작업에 연결하기 AWS 계정 전에 SageMaker AI 훈련 작업을 직접 실행할 수 있는지 확인합니다.

    다음 코드에는 로컬 테스트, SageMaker AI 훈련 환경 테스트 및 Clean Rooms ML과 호환되는 샘플 Docker 파일이 포함되어 있습니다.

    ```
    FROM  763104351884.dkr.ecr.us-west-2.amazonaws.com/pytorch-training:2.3.0-cpu-py311-ubuntu20.04-sagemaker
    MAINTAINER $author_name
    
    ENV PYTHONDONTWRITEBYTECODE=1 \
        PYTHONUNBUFFERED=1 \
        LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/local/lib"
    
    ENV PATH="/opt/ml/code:${PATH}"
    
    # this environment variable is used by the SageMaker PyTorch container to determine our user code directory
    ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code
    
    # copy the training script inside the container
    COPY train.py /opt/ml/code/train.py
    # define train.py as the script entry point
    ENV SAGEMAKER_PROGRAM train.py
    ENTRYPOINT ["python", "/opt/ml/code/train.py"]
    ```
+ 컨테이너 장애를 가장 잘 모니터링하려면 오류로 인해 로그를 내보내고 디버깅하는 것이 좋습니다. 이에 `GetTrainedModel` 대한 응답으로 Clean Rooms ML은 아래의이 파일에서 처음 1024자를 반환합니다`StatusDetails`.
+ 모델 변경을 완료하고 SageMaker AI 환경에서 테스트할 준비가 되면 제공된 순서대로 다음 명령을 실행합니다.

  ```
  export ACCOUNT_ID=xxx
  export REPO_NAME=xxx
  export REPO_TAG=xxx
  export REGION=xxx
  
  docker build -t $ACCOUNT_ID.dkr.ecr.us-west-2.amazonaws.com/$REPO_NAME:$REPO_TAG
  
  # Sign into AWS $ACCOUNT_ID/ Run aws configure
  # Check the account and make sure it is the correct role/credentials
  aws sts get-caller-identity
  aws ecr create-repository --repository-name $REPO_NAME --region $REGION
  aws ecr describe-repositories --repository-name $REPO_NAME --region $REGION
  
  # Authenticate Doker
  aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
  
  # Push To ECR Images
  docker push  $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com$REPO_NAME:$REPO_TAG
  
  # Create Sagemaker Training job
  # Configure the training_job.json with
  # 1. TrainingImage
  # 2. Input DataConfig
  # 3. Output DataConfig
  aws sagemaker create-training-job --cli-input-json file://training_job.json --region $REGION
  ```

  SageMaker AI 작업이 완료되고 모델 알고리즘에 만족하면 AWS Clean Rooms ML에 Amazon ECR 레지스트리를 등록할 수 있습니다. `CreateConfiguredModelAlgorithm` 작업을 사용하여 모델 알고리즘을 등록하고 `CreateConfiguredModelAlgorithmAssociation`를 사용하여 이를 공동 작업에 연결합니다.

# 추론 컨테이너에 대한 모델 작성 지침
<a name="inference-model-guidelines"></a>

이 섹션에서는 Clean Rooms ML에 대한 추론 알고리즘을 생성할 때 모델 공급자가 따라야 하는 지침을 자세히 설명합니다.
+ SageMaker AI [개발자 안내서에 설명된 대로 적절한 SageMaker AI](https://docs.aws.amazon.com/sagemaker/latest/dg-ecr-paths/sagemaker-algo-docker-registry-paths.html) 추론 지원 컨테이너 기본 이미지를 사용합니다. 다음 코드를 사용하면 퍼블릭 SageMaker AI 엔드포인트에서 지원되는 컨테이너 기본 이미지를 가져올 수 있습니다.

  ```
  ecr_registry_endpoint='763104351884.dkr.ecr.$REGION.amazonaws.com'
  base_image='pytorch-inference:2.3.0-cpu-py311-ubuntu20.04-sagemaker'
  aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ecr_registry_endpoint
  docker pull $ecr_registry_endpoint/$base_image
  ```
+ 모델을 로컬에서 작성할 때 개발 인스턴스,의 SageMaker AI 배치 변환 AWS 계정및 Clean Rooms ML에서 로컬에서 모델을 테스트할 수 있도록 다음을 확인하세요.
  + Clean Rooms ML을 사용하면 추론의 모델 아티팩트를 Docker 컨테이너의 `/opt/ml/model` 디렉터리를 통해 추론 코드에서 사용할 수 있습니다.
  + Clean Rooms ML은 입력을 줄별로 분할하고 배치 `MultiRecord` 전략을 사용하며 변환된 모든 레코드의 끝에 줄 바꿈 문자를 추가합니다.
  + 모델 코드에 사용할 공동 작업자의 스키마를 기반으로 합성 또는 테스트 추론 데이터 세트를 생성할 수 있는지 확인합니다.
  + 모델 알고리즘을 공동 작업과 AWS Clean Rooms 연결하기 AWS 계정 전에 SageMaker AI 배치 변환 작업을 직접 실행할 수 있는지 확인합니다.

    다음 코드에는 로컬 테스트, SageMaker AI 변환 환경 테스트 및 Clean Rooms ML과 호환되는 샘플 Docker 파일이 포함되어 있습니다.

    ```
    FROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.12.1-cpu-py38-ubuntu20.04-sagemaker
    
    ENV PYTHONUNBUFFERED=1
    
    COPY serve.py /opt/ml/code/serve.py
    COPY inference_handler.py /opt/ml/code/inference_handler.py
    COPY handler_service.py /opt/ml/code/handler_service.py
    COPY model.py /opt/ml/code/model.py
    
    RUN chmod +x /opt/ml/code/serve.py
    
    ENTRYPOINT ["/opt/ml/code/serve.py"]
    ```
+ 모델 변경을 완료하고 SageMaker AI 환경에서 테스트할 준비가 되면 제공된 순서대로 다음 명령을 실행합니다.

  ```
  export ACCOUNT_ID=xxx
  export REPO_NAME=xxx
  export REPO_TAG=xxx
  export REGION=xxx
  
  docker build -t $ACCOUNT_ID.dkr.ecr.us-west-2.amazonaws.com/$REPO_NAME:$REPO_TAG
  
  # Sign into AWS $ACCOUNT_ID/ Run aws configure
  # Check the account and make sure it is the correct role/credentials
  aws sts get-caller-identity
  aws ecr create-repository --repository-name $REPO_NAME --region $REGION
  aws ecr describe-repositories --repository-name $REPO_NAME --region $REGION
  
  # Authenticate Docker
  aws ecr get-login-password --region $REGION | docker login --username AWS --password-stdin $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com
  
  # Push To ECR Repository
  docker push $ACCOUNT_ID.dkr.ecr.$REGION.amazonaws.com$REPO_NAME:$REPO_TAG
  
  # Create Sagemaker Model
  # Configure the create_model.json with
  # 1. Primary container - 
      # a. ModelDataUrl - S3 Uri of the model.tar from your training job
  aws sagemaker create-model --cli-input-json file://create_model.json --region $REGION
  
  # Create Sagemaker Transform Job
  # Configure the transform_job.json with
  # 1. Model created in the step above 
  # 2. MultiRecord batch strategy
  # 3. Line SplitType for TransformInput
  # 4. AssembleWith Line for TransformOutput
  aws sagemaker create-transform-job --cli-input-json file://transform_job.json --region $REGION
  ```

  SageMaker AI 작업이 완료되고 배치 변환에 만족하면 AWS Clean Rooms ML에 Amazon ECR 레지스트리를 등록할 수 있습니다. `CreateConfiguredModelAlgorithm` 작업을 사용하여 모델 알고리즘을 등록하고 `CreateConfiguredModelAlgorithmAssociation`를 사용하여 이를 공동 작업에 연결합니다.

# 모델 로그 및 지표 수신
<a name="custom-model-logs"></a>

사용자 지정 모델 훈련 또는 추론에서 로그와 지표를 수신하려면 멤버가 필요한 CloudWatch 권한을 제공하는 유효한 역할로 [ML 구성을 생성](https://docs.aws.amazon.com/clean-rooms/latest/userguide/create-custom-ml-collaboration.html)해야 합니다(사용자 [지정 ML 모델링을 위한 서비스 역할 생성 - ML 구성](https://docs.aws.amazon.com/clean-rooms/latest/userguide/ml-roles.html#ml-roles-custom-configure) 참조).

**시스템 지표**

CPU 및 메모리 사용률과 같은 훈련 및 추론 모두에 대한 시스템 지표는 유효한 ML 구성을 사용하여 공동 작업의 모든 구성원에게 게시됩니다. 이러한 지표는 각각 `/aws/cleanroomsml/TrainedModels` 또는 `/aws/cleanroomsml/TrainedModelInferenceJobs` 네임스페이스의 CloudWatch 지표를 통해 작업이 진행됨에 따라 볼 수 있습니다.

**모델 로그**

모델 로그에 대한 액세스는 구성된 각 모델 알고리즘의 개인 정보 보호 구성 정책에 의해 제공됩니다. 모델 작성자는 구성된 모델 알고리즘(콘솔 또는 `CreateConfiguredModelAlgorithmAssociation` API를 통해)을 공동 작업에 연결할 때 개인 정보 보호 구성 정책을 설정합니다. 개인 정보 보호 구성 정책을 설정하면 모델 로그를 수신할 수 있는 멤버가 제어됩니다.

또한 모델 작성자는 개인 정보 보호 구성 정책에서 필터 패턴을 설정하여 로그 이벤트를 필터링할 수 있습니다. 모델 컨테이너가 `stdout` 또는 로 보내고 필터 패턴(설정된 경우)`stderr`과 일치하는 모든 로그는 Amazon CloudWatch Logs로 전송됩니다. 모델 로그는 `/aws/cleanroomsml/TrainedModelInferenceJobs`각각 CloudWatch 로그 그룹 `/aws/cleanroomsml/TrainedModels` 또는에서 사용할 수 있습니다.

**사용자 정의 지표**

모델 알고리즘을 구성할 때(콘솔 또는 `CreateConfiguredModelAlgorithm` API를 통해) 모델 작성자는 출력 로그에서 검색할 특정 지표 이름과 정규식 문을 제공할 수 있습니다. 이는 `/aws/cleanroomsml/TrainedModels` 네임스페이스의 CloudWatch 지표를 통해 작업이 진행됨에 따라 볼 수 있습니다. 구성된 모델 알고리즘을 연결할 때 모델 작성자는 지표 프라이버시 구성에서 선택적 노이즈 수준을 설정하여 사용자 지정 지표 추세에 대한 가시성을 제공하면서 원시 데이터를 출력하지 않도록 할 수 있습니다. 노이즈 수준이 설정된 경우 지표는 실시간으로가 아닌 작업 종료 시 게시됩니다.