使用您自己的处理容器运行脚本 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用您自己的处理容器运行脚本

您可以使用 scikit-learn 脚本来预处理数据并评估模型。要了解如何运行 scikit-learn 脚本来执行这些任务,请参阅scikit-learn 处理样本笔记本电脑。此笔记本使用ScriptProcessor类 Amazon SageMaker 处理。

以下示例显示使用ScriptProcessor类与您自己的处理容器结合使用。该工作流程显示了如何创建自己的映像、构建容器以及使用ScriptProcessor类使用容器运行 Python 预处理脚本。处理作业处理您的输入数据,并将处理的数据保存在Amazon Simple Storage Service(Amazon S3)。

在使用以下示例之前,您需要准备好自己的输入数据和 Python 脚本来处理您的数据。有关此过程的端到端指导示例,请参阅scikit-learn 处理样本笔记本电脑。

  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"]
  2. 使用 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 Amazon --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
  3. 设置ScriptProcessorSageMaker 行脚本。Replace映像 URI替换为您创建的图像的 URI,然后将role_arn与 ARN 作为Amazon Identity and Access Management角色,该角色有权访问您的目标 Amazon S3 存储桶。

    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')
  4. 运行脚本。Replacepreprocessing.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.