本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
您可以使用 scikit-learn 指令碼來預處理資料並評估模型。若要查看如何執行 scikit-learn 指令碼來執行這些任務,請參閱 scikit-learn ProcessingScriptProcessor
類別。
下列範例示範將 ScriptProcessor
類別與您自己的處理容器搭配使用的一般工作流程。工作流程會示範如何建立您自己的映像、建立自己的容器,以及使用 ScriptProcessor
類別來執行具有容器的 Python 預先處理指令碼。處理任務會處理您的輸入資料,並將已處理的資料存放在 Amazon Simple Storage Service (Amazon S3) 中。
在使用下列範例之前,您必須準備好自己的輸入資料和 Python 指令碼,才能處理資料。如需此程序的端對端引導式範例,請返回參閱 scikit-learn Processing
-
建立一個 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"]
-
使用 Docker 命令建置容器,建立一個 Amazon Elastic Container Registry (Amazon ECR) 儲存庫,並將映像推送到 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
-
設定 SageMaker Python SDK 的
ScriptProcessor
來執行指令碼。將image_uri
取代為您建立之映像的 URI,並將role _arn
取代為具有目標 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') -
執行指令碼。將
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