AICon日程100%就绪,9折倒计时最后一周 了解详情
写点什么

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:35698

评论

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

企业上云数据安全不容忽视,华为云ERP上云解决方案全面保障信息安全

YG科技

中国自动驾驶发展加速,已实现多场景落地应用

来自四九城儿

Nautilus Chain:模块化Layer3的先行者

大瞿科技

中国的“贝尔实验室”:我们的数据库从内核的第一行代码写起

YashanDB

全方位赋能开发者成长!华为开发者联创日·深圳站圆满落幕

彭飞

自动驾驶发展依旧处于初步阶段

来自四九城儿

Django笔记四十四之Nginx+uWSGI部署Django以及负载均衡操作

Hunter熊

Python nginx django 负载均衡 uwsgi

英特尔研究院发布全新AI扩散模型,可根据文本提示生成360度全景图

E科讯

卡口服务 —— 基于前端巡检系统的拓展实践|得物技术

得物技术

作为ISV,这是我为什么选择华为云ECS的理由

平平无奇爱好科技

企业OA上云靠谱最重要,多年业务推进为何华为云成为我的首选?

平平无奇爱好科技

深度解读:ASP.NET Core Blazor 含快手入门教程

EquatorCoco

asp.net

把金融航母开进智能峡湾,总共分几步?

脑极体

华为 AI 金融

AI血洗时尚圈!就连这些线上店家都开始用AI生成爆款商品了

Openlab_cosmoplat

人工智能 AI

学习 SSL/TLS ,这一篇就够了

火山引擎边缘云

TLS 证书 SSL证书

自动驾驶的必要技术和等级

来自四九城儿

复旦大学高校专区入驻飞桨AI Studio,优质教育资源等你来学!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨

大规模 AI 高性能网络的设计与实践

Baidu AICLOUD

大模型训练 RDMA

沙利文发布《2023中国数据管理解决方案市场报告》,腾讯云位列领导者梯队

说山水

2023-06-21:redis中什么是BigKey?该如何解决?

福大大架构师每日一题

redis 福大大架构师每日一题

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

福大大架构师每日一题

Java Go 福大大架构师每日一题

Kubernetes集群授权管理

穿过生命散发芬芳

Kubernetes 6 月 优质更文活动

OpenHarmony自定义组件

坚果

OpenHarmony 6 月 优质更文活动

火山引擎Dataleap数据质量解决方案和最佳实践(一):数据质量挑战

字节跳动数据平台

数据治理 数据开发 数据质量 数据研发

聊一聊“会员制”

鲸品堂

会员中心 付费会员 企业号 6 月 PK 榜

Nautilus Chain:模块化Layer3的先行者

西柚子

作为IT从业者,为什么我推荐华为云ECS?

平平无奇爱好科技

从实际业务出发,OA上云我更推荐华为云

平平无奇爱好科技

基于 Flink CDC 构建 MySQL 到 Databend 的 实时数据同步

Databend

敏捷项目管理工具大全

顿顿顿

敏捷项目管理 敏捷工具 scrum工具

Nautilus Chain:模块化Layer3的先行者

BlockChain先知

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