자체 처리 컨테이너를 구축하는 방법(고급 시나리오) - Amazon SageMaker

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

자체 처리 컨테이너를 구축하는 방법(고급 시나리오)

Amazon SageMaker Processing에 데이터 처리, 기능 엔지니어링 및 모델 평가 워크로드를 실행할 수 있는 자체 코드 및 종속성이 있는 Docker 이미지를 제공할 수 있습니다. 다음은 자체 처리 컨테이너를 구축하는 방법에 대한 정보를 제공합니다.

Dockerfile의 다음 예제는 처리 작업으로 실행할 수 있는 Python 라이브러리 scikit-learn 및 pandas로 컨테이너를 빌드합니다.

FROM python:3.7-slim-buster # Install scikit-learn and pandas RUN pip3 install pandas==0.25.3 scikit-learn==0.21.3 # Add a Python script and configure Docker to run it ADD processing_script.py / ENTRYPOINT ["python3", "/processing_script.py"]

처리 스크립트의 예는 SageMaker 처리 시작하기를 참조하세요.

이 Docker 이미지를 빌드하여 Amazon Elastic Container Registry(AmazonECR) 리포지토리로 푸시하고 역할이 SageMaker IAM Amazon 에서 이미지를 가져올 수 있는지 확인합니다ECR. 그런 다음 Amazon SageMaker Processing에서 이 이미지를 실행할 수 있습니다.

Amazon SageMaker Processing이 처리 컨테이너를 구성하는 방법

Amazon SageMaker Processing은 컨테이너의 사전 정의된 위치에서 환경 변수와 두 개의 JSON 파일 및/opt/ml/config/processingjobconfig.json /opt/ml/config/resourceconfig.json를 통해 처리 컨테이너에 구성 정보를 제공합니다.

처리 작업이 시작되면 CreateProcessingJob 요청의 Environment 맵으로 지정한 환경 변수가 사용됩니다. 이 /opt/ml/config/processingjobconfig.json 파일에는 처리 컨테이너의 호스트 이름에 대한 정보가 포함되어 있으며 CreateProcessingJob 요청에도 지정됩니다.

다음 예제에서는 /opt/ml/config/processingjobconfig.json 파일의 형식을 보여줍니다.

{ "ProcessingJobArn": "<processing_job_arn>", "ProcessingJobName": "<processing_job_name>", "AppSpecification": { "ImageUri": "<image_uri>", "ContainerEntrypoint": null, "ContainerArguments": null }, "Environment": { "KEY": "VALUE" }, "ProcessingInputs": [ { "InputName": "input-1", "S3Input": { "LocalPath": "/opt/ml/processing/input/dataset", "S3Uri": "<s3_uri>", "S3DataDistributionType": "FullyReplicated", "S3DataType": "S3Prefix", "S3InputMode": "File", "S3CompressionType": "None", "S3DownloadMode": "StartOfJob" } } ], "ProcessingOutputConfig": { "Outputs": [ { "OutputName": "output-1", "S3Output": { "LocalPath": "/opt/ml/processing/output/dataset", "S3Uri": "<s3_uri>", "S3UploadMode": "EndOfJob" } } ], "KmsKeyId": null }, "ProcessingResources": { "ClusterConfig": { "InstanceCount": 1, "InstanceType": "ml.m5.xlarge", "VolumeSizeInGB": 30, "VolumeKmsKeyId": null } }, "RoleArn": "<IAM role>", "StoppingCondition": { "MaxRuntimeInSeconds": 86400 } }

/opt/ml/config/resourceconfig.json 파일에는 처리 컨테이너의 호스트 이름에 대한 정보가 포함되어 있습니다. 분산 처리 코드를 생성하거나 실행할 때 다음 호스트 이름을 사용합니다.

{ "current_host": "algo-1", "hosts": ["algo-1","algo-2","algo-3"] }

/etc/hostname 또는 /etc/hosts에 포함된 호스트 이름에 대한 정보는 정확하지 않을 수 있으므로 사용하지 마세요.

호스트 이름은 처리 컨테이너에서 즉시 사용하지 못할 수 있습니다. 클러스터에서 호스트 이름 확인 작업에 대한 재시도 정책을 노드로 추가하도록 설정하는 것이 좋습니다.