기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
자체 처리 컨테이너를 구축하는 방법(고급 시나리오)
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
에 포함된 호스트 이름에 대한 정보는 정확하지 않을 수 있으므로 사용하지 마세요.
호스트 이름은 처리 컨테이너에서 즉시 사용하지 못할 수 있습니다. 클러스터에서 호스트 이름 확인 작업에 대한 재시도 정책을 노드로 추가하도록 설정하는 것이 좋습니다.