写点什么

Amazon SageMaker Processing – 完全托管的数据处理和模型评估

  • 2019-12-11
  • 本文字数:3057 字

    阅读完需:约 10 分钟

Amazon SageMaker Processing – 完全托管的数据处理和模型评估

今天,我们非常高兴地推出 Amazon SageMaker Processing,这是 Amazon SageMaker 的一项新功能,可让您轻松地在完全托管的基础设施上运行预处理、后处理和模型评估工作负载。


训练准确的机器学习 (ML) 模型需要许多不同的步骤,但没有什么比预处理数据集更重要,例如:


  • 将数据集转换为您所使用的 ML 算法期望的输入格式,

  • 将现有功能转换为更具表现力的表示形式,例如一键编码分类功能,

  • 重新调整或归一化数值特征,

  • 设计高级功能,例如用 GPS 坐标替换邮寄地址,

  • 为自然语言处理应用程序清理和标记文本,

  • 等等!


这些任务包括在数据集上运行定制脚本(我被告知在没有月亮的天空下),并保存处理后的版本,以供以后的培训作业使用。如您所料,对 ML 团队来说,手动运行它们或必须构建和扩展自动化工具的前景并不令人兴奋。对于后处理作业(筛选、整理等)和模型评估作业(针对不同测试集对模型评分)而言,也是如此。


为解决此问题,我们构建了 Amazon SageMaker Processing。下面我来进行更多介绍。


Amazon SageMaker Processing 简介


Amazon SageMaker Processing 推出了新的 Python 开发工具包,使数据科学家和 ML 工程师可以轻松地在 Amazon SageMaker 上运行预处理、后处理和模型评估工作负载。


该开发工具包使用 SageMaker 的内置容器来进行scikit-learn,这可能是最受欢迎的数据集转换库之一。


如果您还需要其他工具,还可以使用自己的 Docker 映像,而不必遵循任何 Docker 映像规范:这为您提供了最大的灵活性,无论是在 SageMaker Processing 还是在 Amazon ECSAmazon Elastic Kubernetes Service 之类的 AWS 容器服务上,甚至在内部,均是如此。


用 scikit-learn 快速演示怎么样? 然后,我将简要讨论如何使用您自己的容器。当然,您可以在 Github 上找到完整的示例。


使用内置的 Scikit-Learn 容器预处理数据


以下是使用 SageMaker Processing 开发工具包来运行 scikit-learn 作业的方法。


首先,让我们创建一个 SKLearnProcessor 对象,传递要使用的 scikit-learn 版本以及对托管基础设施的要求。


Python


from sagemaker.sklearn.processing import SKLearnProcessorsklearn_processor = SKLearnProcessor(framework_version='0.20.0',                                     role=role,                                     instance_count=1,                                     instance_type='ml.m5.xlarge')
复制代码


然后,我们可以像下面这样,运行预处理脚本(稍后将介绍更多有关该操作的内容):


  • 数据集 (dataset.csv) 将自动复制到目标目录 (/input) 下的容器内。如果需要,我们会添加其他输入。

  • 这是 Python 脚本 (preprocessing.py) 读取它的位置。我们也可以将命令行参数传递给脚本。

  • 脚本对命令行进行预处理,将其分为三种方式,然后将文件保存在容器中的 /opt/ml/processing/output/train/opt/ml/processing/output/validation/opt/ml/processing/output/test 下。

  • 作业完成后,所有输出将自动复制到 S3 中的默认 SageMaker 存储桶。


Python


from sagemaker.processing import ProcessingInput, ProcessingOutputsklearn_processor.run(    code='preprocessing.py',    # arguments = ['arg1', 'arg2'],    inputs=[ProcessingInput(        source='dataset.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')])
复制代码


就这么简单! 让我们通过查看预处理脚本的框架将所有内容放在一起。


Python


import pandas as pdfrom sklearn.model_selection import train_test_split# Read data locally df = pd.read_csv('/opt/ml/processing/input/dataset.csv')# Preprocess the data setdownsampled = apply_mad_data_science_skills(df)# Split data set into training, validation, and testtrain, test = train_test_split(downsampled, test_size=0.2)train, validation = train_test_split(train, test_size=0.2)# Create local output directoriestry:    os.makedirs('/opt/ml/processing/output/train')    os.makedirs('/opt/ml/processing/output/validation')    os.makedirs('/opt/ml/processing/output/test')except:    pass# Save data locallytrain.to_csv("/opt/ml/processing/output/train/train.csv")validation.to_csv("/opt/ml/processing/output/validation/validation.csv")test.to_csv("/opt/ml/processing/output/test/test.csv")print('Finished running processing job')
复制代码


快速浏览 S3 存储桶,确认文件已成功处理并保存。现在,我可以将它们直接用作 SageMaker 培训作业的输入。


$ aws s3 ls --recursive s3://sagemaker-us-west-2-123456789012/sagemaker-scikit-learn-2019-11-20-13-57-17-805/output


2019-11-20 15:03:22 19967 sagemaker-scikit-learn-2019-11-20-13-57-17-805/output/test.csv


2019-11-20 15:03:22 64998 sagemaker-scikit-learn-2019-11-20-13-57-17-805/output/train.csv


2019-11-20 15:03:22 18058 sagemaker-scikit-learn-2019-11-20-13-57-17-805/output/validation.csv


现在如何使用自己的容器?


使用自己的容器处理数据


比如说您想使用热门的 spaCy 库预处理文本数据。您可以使用以下方法为其定义一个普通 Docker 容器。


Bash


FROM python:3.7-slim-buster# Install spaCy, pandas, and an english language model for spaCy.RUN pip3 install spacy==2.2.2 && pip3 install pandas==0.25.3RUN python3 -m spacy download en_core_web_md# Make sure python doesn't buffer stdout so we get logs ASAP.ENV PYTHONUNBUFFERED=TRUEENTRYPOINT ["python3"]
复制代码


然后,您可以构建 Docker 容器,在本地进行测试,然后将其推送到我们的托管 Docker 注册表服务 Amazon Elastic Container Registry


下一步,可以使用 ScriptProcessor 对象配置处理作业,并传递您已构建和推送的容器的名称。


Python


from sagemaker.processing import ScriptProcessorscript_processor = ScriptProcessor(image_uri='123456789012.dkr.ecr.us-west-2.amazonaws.com/sagemaker-spacy-container:latest',                role=role,                instance_count=1,                instance_type='ml.m5.xlarge')
复制代码


最后,您可以像前面的示例一样运行该作业。


Python


script_processor.run(code='spacy_script.py',    inputs=[ProcessingInput(        source='dataset.csv',        destination='/opt/ml/processing/input_data')],    outputs=[ProcessingOutput(source='/opt/ml/processing/processed_data')],    arguments=['tokenizer', 'lemmatizer', 'pos-tagger'])
复制代码


其余过程与上述过程完全相同:将输入复制到容器内部,将输出从容器复制到 S3


很简单,对不对? 同样,我专注的是预处理,但是您可以运行类似的任务进行后处理和模型评估。不要忘记查看 Github 中的示例。


现已推出!


Amazon SageMaker Processing 现已在提供 Amazon SageMaker 的所有商业区域中推出。


请试一试,并通过 Amazon SageMakerAWS 论坛或您常用的 AWS Support 联系方式向我们发送反馈。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/amazon-sagemaker-processing-fully-managed-data-processing-and-model-evaluation/


2019-12-11 15:35836

评论

发布
暂无评论
发现更多内容

Curve 进入 CNCF Sandbox,完善统一云原生开源存储拼图

网易数帆

开源 分布式 云原生 存储 cncf

凿开数据冰层,透出智能时代的光:华为云与开发者的结伴旅行

脑极体

盘点攻防演练中红队的主要工具(下)

穿过生命散发芬芳

6月月更 攻防演练

python简介

左手の明天

Python Python解释器

如何修改 Rancher v2.6 的 Rancher Server IP 地址

Rancher

Kubernetes k8s rancher

js中的变量提升和函数提升

北洋

android 6月月更

数据库每日一题---第13天:寻找病患

知心宝贝

数据库 云计算 前端 后端 6月月更

华为云重磅发布:“乐高式”自动驾驶研发开放平台,携手伙伴共建生态

华为云开发者联盟

自动驾驶 云计算 华为云

融云 x 川航: 为民航通信安上“即时之翼”

融云 RongCloud

文档管理系统对于企业有哪些优势

小炮

linux之我常用的20条命令(之二)

入门小站

Linux

@开发者 云端一条生产线,让软件开发更敏捷、更安全

华为云开发者联盟

云计算 敏捷 华为云 devcloud

阿里云 MSE 基于 Apache APISIX 的全链路灰度方案实践

API7.ai 技术团队

阿里云 MSE APISIX 网关 全链路灰度

APISIX 助力中东社交软件,实现本地化部署

API7.ai 技术团队

API网关 社交软件 APISIX Summit

接口测试使用Python装饰器

伤心的辣条

Python 程序人生 软件测试 自动化测试 接口测试

API 网关 Apache APISIX 助力雪球双活架构演进

API7.ai 技术团队

zookeeper 投资 网关 APISIX APISIX Summit

基于 Apache APISIX 的自动化运维平台

API7.ai 技术团队

自动化运维 APISIX 网关 APISIX Summit

全球Top 2!腾讯计算机视觉能力再突破

脑极体

uni-app深入学习之模板运用【day4】

恒山其若陋兮

6月月更

数仓开发人员的价值体现

奔向架构师

数据仓库 数据模型 6月月更

大数据平台迁移实践 | Apache DolphinScheduler 在当贝大数据环境中的应用

白鲸开源

Apache 大数据 开源 DolphinScheduler workflow

GetX 状态管理从入门到入迷

岛上码农

flutter ios 前端 安卓 6月月更

在线文本保留中文提取过滤工具

入门小站

工具

GoLang简单易用的json value读取工具!还并发安全

Krysta

Go json 简单清楚 方便

三点微服务标准化要素

阿泽🧸

微服务 6月月更

从链上数据出发,分析stETH脱锚之后的市场动态

区块链前沿News

eth Hoo

计算机网络之IP协议与以太网

未见花闻

6月月更

读《Software Systems Architecture》(11)—— Using Styles and Patterns

术子米德

架构师成长笔记

Amazon SageMaker Processing – 完全托管的数据处理和模型评估_行业深度_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章