如何建置自己的處理容器 (進階案例) - Amazon SageMaker AI

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

如何建置自己的處理容器 (進階案例)

您可以透過 Docker 映像提供具有自己的程式碼和相依性的 Amazon SageMaker Processing 來執行資料處理、功能工程和模型評估工作負載。下列提供如何建置自己的處理容器的相關資訊。

以下 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 Processing

建置此 Docker 映像並將其推送至 Amazon Elastic Container Registry (Amazon ECR) 儲存庫,並確保 SageMaker AI 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 包含的主機名稱相關資訊,因為可能不正確。

主機名稱資訊可能無法立即供處理容器使用。當叢集中的節點可供使用時,建議您在主機名稱解析作業中新增重試政策。