

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

# 자체 처리 컨테이너로 스크립트 실행
<a name="processing-container-run-scripts"></a>

scikit-learn 스크립트를 사용하여 데이터를 사전 처리하고 모델을 평가할 수 있습니다. scikit-learn 스크립트를 실행하여 이들 작업을 수행하는 방법은 [scikit-learn 처리](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation) 샘플 노트북을 참조하세요. 이 노트북은 Amazon SageMaker Python SDK의 `ScriptProcessor` 클래스를 Processing에 사용합니다.

다음 예제에서는 자체 처리 컨테이너가 있는 `ScriptProcessor` 클래스를 사용하기 위한 전반적인 워크플로를 보여줍니다. 이 워크플로는 자체 이미지를 생성하고, 컨테이너를 빌드하고, `ScriptProcessor` 클래스를 사용하여 해당 컨테이너로 Python 전처리 스크립트를 실행하는 방법을 보여줍니다. 처리 작업은 입력 데이터를 처리하고 처리된 데이터를 Amazon Simple Storage Service (Amazon S3)에 저장합니다.

다음 예제를 사용하기 전에, 데이터를 처리할 수 있도록 자체 입력 데이터와 Python 스크립트가 준비되어 있어야 합니다. 이 프로세스를 단계별로 안내하는 예제를 보려면 [scikit-learn 처리](https://github.com/awslabs/amazon-sagemaker-examples/tree/master/sagemaker_processing/scikit_learn_data_processing_and_model_evaluation) 샘플 노트북을 다시 참조하세요.

1. Docker 디렉터리를 만들고 처리 컨테이너를 생성하는 데 사용된 Dockerfile을 추가합니다. pandas 및 scikit-learn을 설치합니다. (비슷한 `RUN` 명령으로 종속성을 설치할 수도 있습니다.)

   ```
   mkdir docker
   
   %%writefile docker/Dockerfile
   
   FROM python:3.7-slim-buster
   
   RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3
   ENV PYTHONUNBUFFERED=TRUE
   
   ENTRYPOINT ["python3"]
   ```

1. Docker 명령을 사용하여 컨테이너를 빌드하고 Amazon ECR(Amazon Elastic Container Registry) 리포지토리를 생성한 다음, 이미지를 Amazon ECR로 푸시하세요.

   ```
   import boto3
   
   account_id = boto3.client('sts').get_caller_identity().get('Account')
   region = boto3.Session().region_name
   ecr_repository = 'sagemaker-processing-container'
   tag = ':latest'
   processing_repository_uri = '{}.dkr.ecr.{}.amazonaws.com/{}'.format(account_id, region, ecr_repository + tag)
   
   # Create ECR repository and push docker image
   !docker build -t $ecr_repository docker
   !aws ecr get-login-password --region {region} | docker login --username AWS --password-stdin {account_id}.dkr.ecr.{region}.amazonaws.com
   !aws ecr create-repository --repository-name $ecr_repository
   !docker tag {ecr_repository + tag} $processing_repository_uri
   !docker push $processing_repository_uri
   ```

1. SageMaker Python SDK로 `ScriptProcessor`을 설정하여 스크립트를 실행하세요. *image\$1uri*를 생성된 이미지의 URI로 변경하고, *role\$1arn*을 대상 Amazon S3 버킷에 액세스할 수 있는 AWS Identity and Access Management 역할의 ARN으로 변경하세요.

   ```
   from sagemaker.processing import ScriptProcessor, ProcessingInput, ProcessingOutput
   
   script_processor = ScriptProcessor(command=['python3'],
                   image_uri='image_uri',
                   role='role_arn',
                   instance_count=1,
                   instance_type='ml.m5.xlarge')
   ```

1. 스크립트 실행. *preprocessing.py*를 자체 Python 처리 스크립트의 이름으로 변경하고, *s3://path/to/my/input-data.csv*를 입력 데이터에 연결되는 Amazon S3 경로로 변경하세요.

   ```
   script_processor.run(code='preprocessing.py',
                        inputs=[ProcessingInput(
                           source='s3://path/to/my/input-data.csv',
                           destination='/opt/ml/processing/input')],
                        outputs=[ProcessingOutput(source='/opt/ml/processing/output/train'),
                                  ProcessingOutput(source='/opt/ml/processing/output/validation'),
                                  ProcessingOutput(source='/opt/ml/processing/output/test')])
   ```

동일한 절차를 다른 라이브러리 또는 시스템 종속성과 함께 사용할 수 있습니다. 기존 Docker 이미지를 사용할 수도 있습니다. 여기에는 [Kubernetes](https://kubernetes.io/) 등의 기타 플랫폼에서 실행되는 이미지가 포함됩니다.