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

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

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

您可以使用 scikit-learn 脚本来预处理数据并评估模型。要了解如何运行 scikit-learn 脚本来执行这些任务,请参阅 scikit-learn 处理示例笔记本。此笔记本使用适用于 Amazon SageMaker 的 处理 Python 开发工具包中的 ScriptProcessor 类。

以下示例演示如何使用 ScriptProcessor 类并利用您自己的映像来运行 Python 脚本,以运行处理输入数据并将处理后的数据保存在 Amazon Simple Storage Service (Amazon S3) 中的处理作业。

笔记本显示使用 ScriptProcessor 类的常规工作流程。

  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') 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 aws_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. ScriptProcessor Python 开发工具包中设置 SageMaker 以运行脚本。

    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. 运行脚本。

    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)上运行的映像。