Amazon SageMaker Autopilot – 在完全控制和可见的情况下,自动创建高质量的机器学习模型

2019 年 12 月 11 日

Amazon SageMaker Autopilot – 在完全控制和可见的情况下,自动创建高质量的机器学习模型

今天,我们非常高兴地推出 Amazon SageMaker Autopilot,它可以在完全控制和可见的情况下,自动创建最佳分类和回归机器学习模型。


1959 年,Arthur Samuel 将机器学习定义为让计算机能够无需明确编程而进行学习。在实践中,这意味着找到一种算法,可以从现有数据集中提取模式,然后使用这些模式来构建可很好地泛化到新数据的预测模型。从那时起,人们发明了许多机器学习算法,为科学家和工程师提供了充足地选择,帮助他们构建了惊人的应用程序。


但是,丰富的算法也带来了一个难题:应该选择哪种算法? 如何可靠地找出哪一种算法在您的特定业务问题上表现最佳? 此外,机器学习算法通常会列出很长的训练参数(也称为超参数),如果您想从模型中获得所有额外的精度,则需要将其设置为“刚好合适”。更糟糕的是,算法还需要以特定方式(也称为特征工程)准备和转换数据,才能实现最佳学习…并且您需要选择最佳实例类型。


如果您认为这听起来像是大量实验,反复试验,那么您绝对说对了。机器学习绝对是硬科学和烹饪食谱的混合,这使非专家很难迅速获得良好的结果。


如果可以依靠完全托管的服务为您解决该问题会怎样? 调用 API 并完成作业? 进入 Amazon SageMaker Autopilot


**Amazon SageMaker Neo 简介


**通过使用单个 API 调用或在Amazon SageMaker Studio 中单击几下,SageMaker Autopilot 首先检查您的数据集,并运行大量候选项以找出数据预处理步骤、机器学习算法和超参数的最佳组合。然后,它使用这种组合来训练推断管道,您可以轻松地将其部署在实时终端节点上或进行批处理。与 Amazon SageMaker 一样,所有这些操作都在完全托管的基础设施上进行。


最后但同样重要的一点是,SageMaker Autopilot 还会生成 Python 代码,确切显示数据的预处理方式:您不仅可以了解 SageMaker Autopilot 的工作方式,如果您原因,还可以重新使用该代码进行进一步的手动调整。


迄今为止,SageMaker Autopilot 支持:


  • 表格格式的输入数据,以及自动数据清理和预处理

  • 用于线性回归、二进制分类和多级分类的自动算法选择,

  • 自动超参数优化,

  • 分布式训练,

  • 自动实例和集群大小选择。


我将向您展示这有多简单。


**将 AutoML 与 Amazon SageMaker Autopilot 配合使用


**让我们以这个笔记本示例为起点:它建立一个二进制分类模型,预测客户是接受还是拒绝营销报价。请花几分钟阅读:正如您会看到的,业务问题本身很容易理解,数据集既不大也不复杂。但是,需要几个非直观的预处理步骤,还需要挑选算法及其参数…SageMaker Autopilot 可以解决这一难题!


首先,我获取数据集的副本,快速浏览前几行。



然后,我将其上传到 Amazon Simple Storage Service (S3) 中,无需进行任何预处理。


Python


sess.upload_data(path="automl-train.csv", key_prefix=prefix + "/input")
's3://sagemaker-us-west-2-123456789012/sagemaker/DEMO-automl-dm/input/automl-train.csv'
复制代码


现在,让我们配置 AutoML 作业:


  • 设置数据集的位置,

  • 选择我希望模型预测的目标属性:在本例中,“y”列显示客户是否接受了报价,

  • 设置训练工件的位置。


Python


input_data_config = [{      'DataSource': {        'S3DataSource': {          'S3DataType': 'S3Prefix',          'S3Uri': 's3://{}/{}/input'.format(bucket,prefix)        }      },      'TargetAttributeName': 'y'    }  ]
output_data_config = { 'S3OutputPath': 's3://{}/{}/output'.format(bucket,prefix) }
复制代码


就这么简单! 当然,随着您了解有关数据和模型的更多信息,SageMaker Autopilot 的许多选项会派上用场,例如:


  • 设置要训练的问题类型:线性回归、二进制分类或多级分类。如果不确定,SageMaker Autopilot 会通过分析目标属性值自动找出类型。

  • 使用特定指标进行模型评估。

  • 定义完成标准:最长运行时间等


有一件事不需要做,那就是调整训练集群的大小,因为 SageMaker Autopilot 使用基于数据大小和算法的启发式方法。太棒了!


不用进行配置,我可以使用 CreateAutoMl API 启动该作业。


Python


auto_ml_job_name = 'automl-dm-' + timestamp_suffixprint('AutoMLJobName: ' + auto_ml_job_name)
sm.create_auto_ml_job(AutoMLJobName=auto_ml_job_name, InputDataConfig=input_data_config, OutputDataConfig=output_data_config, RoleArn=role)
AutoMLJobName: automl-dm-28-10-17-49
复制代码


作业分四个步骤运行(您可以使用DescribeAutoMlJob API 进行查看)。


  1. 将数据集分为训练集和验证集,

  2. 分析数据,以便建议应在数据集上试用的管道,

  3. 特征工程,将转换应用于数据集和单个特征,

  4. 管道选择和超参数调整,选择性能最高的管道以及用于训练算法的最佳超参数。


达到最大候选项数量(或其中一种停止条件)后,作业完成。我可以使用 ListCandidatesForAutoMlJob API 获取有关所有候选项的详细信息,也可以在 AWS 控制台中查看它们。


Python


candidates = sm.list_candidates_for_auto_ml_job(AutoMLJobName=auto_ml_job_name, SortBy='FinalObjectiveMetricValue')['Candidates']index = 1for candidate in candidates:  print (str(index) + "  " + candidate['CandidateName'] + "  " + str(candidate['FinalAutoMLJobObjectiveMetric']['Value']))  index += 1
1 automl-dm-28-tuning-job-1-fabb8-001-f3b6dead 0.91866999864578252 automl-dm-28-tuning-job-1-fabb8-004-03a1ff8a 0.9183049798011783 automl-dm-28-tuning-job-1-fabb8-003-c443509a 0.91818398237228394 automl-dm-28-tuning-job-1-ed07c-006-96f31fde 0.91587799787521365 automl-dm-28-tuning-job-1-ed07c-004-da2d99af 0.91308599710464486 automl-dm-28-tuning-job-1-ed07c-005-1e90fd67 0.91308599710464487 automl-dm-28-tuning-job-1-ed07c-008-4350b4fa 0.91199302673339848 automl-dm-28-tuning-job-1-ed07c-007-dae75982 0.91199302673339849 automl-dm-28-tuning-job-1-ed07c-009-c512379e 0.911993026733398410 automl-dm-28-tuning-job-1-ed07c-010-d905669f 0.8873512744903564
复制代码


目前,我只对最佳试验感兴趣:验证准确率为 91.87%。让我们将其部署到 SageMaker 终端节点,就像部署任何模型一样:



Python


model_arn = sm.create_model(Containers=best_candidate['InferenceContainers'],                            ModelName=model_name,                            ExecutionRoleArn=role)
ep_config = sm.create_endpoint_config(EndpointConfigName = epc_name, ProductionVariants=[{'InstanceType':'ml.m5.2xlarge', 'InitialInstanceCount':1, 'ModelName':model_name, 'VariantName':variant_name}])
create_endpoint_response = sm.create_endpoint(EndpointName=ep_name, EndpointConfigName=epc_name)
复制代码


几分钟后,终端节点开始运行,我可以使用它进行预测。SageMaker 正常运行!


现在,我敢打赌,您对模型的构建方式以及其他候选项感到好奇。我将向您展示。


使用 Amazon SageMaker Autopilot 实现完全可见和控制


SageMaker Autopilot 将训练工件存储在 S3 中,包括两个自动生成的笔记本


Python


job = sm.describe_auto_ml_job(AutoMLJobName=auto_ml_job_name)job_data_notebook = job['AutoMLJobArtifacts']['DataExplorationNotebookLocation']job_candidate_notebook = job['AutoMLJobArtifacts']['CandidateDefinitionNotebookLocation']
print(job_data_notebook)print(job_candidate_notebook)
s3://<PREFIX_REMOVED>/notebooks/SageMakerAutopilotCandidateDefinitionNotebook.ipynbs3://<PREFIX_REMOVED>/notebooks/SageMakerAutopilotDataExplorationNotebook.ipynb
复制代码


第一个包含有关数据集的信息。



第二个包含有关 SageMaker Autopilot 作业的完整详细信息:候选项、数据预处理步骤等。所有代码均可用,您可以更改“旋钮”以进行进一步的实验。



如您所见,您可以完全控制和查看模型的构建方式。


现已推出!


我对 Amazon SageMaker Autopilot 感到非常兴奋,因为它使机器学习比以往任何时候都更加简单易用。无论您是刚开始机器学习,还是经验丰富的从业者,SageMaker Autopilot 都可以帮助您使用以下任一途径更快更好地构建模型:



现在轮到您了。您可以立即在以下区域使用 SageMaker Autopilot


  • 美国东部(弗吉尼亚北部)、美国东部(俄亥俄)、美国西部(加利福尼亚北部)、美国西部(俄勒冈)、

  • 加拿大(中部)、南非(圣保罗)、

  • 欧洲(爱尔兰)、欧洲(伦敦)、欧洲(巴黎)、欧洲(法兰克福)、

  • 中东(巴林)、

  • 亚太地区(孟买)、亚太地区(首尔)、亚太地区(新加坡)、亚太地区(悉尼)、亚太地区(东京)。


请通过 Amazon SageMaker 的 AWS 平台或您常用的 AWS Support 联系方式向我们发送反馈。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/amazon-sagemaker-autopilot-fully-managed-automatic-machine-learning/


2019 年 12 月 11 日 15:33124

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

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

实战 Java8-CompletableFuture

lee

Java 多线程 java8 CompletableFuture

不要抱怨,也别憋屈

孙苏勇

职场 随笔杂谈

Flink 完美搭档:数据存储层上的 Pravega

Apache Flink

大数据 flink 流计算 实时计算

字符与编码

引花眠

计算机基础 utf-8

C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介

Python名人堂

C# .net 算法 LeetCode

美国播客节目《指数视角》专访李飞飞:疫情、 AI 伦理、人才培养

神经星星

人工智能 程序员 李飞飞 硅谷 AI 伦理

RabbitMQ路由

云淡风轻

读书笔记 RabbitMQ

Java开发工具与HelloWorld

编号94530

Java eclipse Hello World ! IDEA 开发工具

数据产品经理实战-DMP搭建

第519区

产品经理 营销

ARTS打卡 第1周

引花眠

ARTS 打卡计划

我的时间管理之路(附工具集合及使用心得)

YoungZY

App 时间管理

这个名字,你不能再读错了

小天同学

历史 科普

如何在团队中做好Code Review

Ken

团队协作 代码审查 Code Review 代码质量

自制操作系统

贾献华

短视频时代下的知识摄取

Neco.W

学习 知识管理 知识体系 短视频

系统化服务构建-软件工程分层

图南日晟

微服务 软件工程 架构设计

RabbitMQ消费者

云淡风轻

学习 RabbitMQ

世界那么大,你有偏见吗?

谢锐 | Frozen

创业 技术管理

谈谈控制感(10):怎么做一个靠谱的人

史方远

职场 心理 成长

怎么控制老板不断加需求?

kimmking

程序员的修行之路-关于编程语言

牧马人

程序员人生

linux 账户及安全管理(一 账户管理)

牧马人

Linux

Java运算符实际运用

凌轩

Java 编程语言

docker19.03读取NVIDIA显卡

首富手记

Docker Dockerfile

df 和 ls 命令执行夯主

首富手记

生产力

重新开始,被自己搞砸的生活

小天同学

个人感想 日常思考

我们都可能陷入经济困境

七镜花园-董一凡

生活

关于用户体验的一些思考

brave heart

android 产品开发

【转载】如何在团队中做好Code Review?

北纬32°

ARTS week 1

丽子

阿里的OceanBase上天了,但你还不会用Explain看SQL的查询计划吗?

Super~琪琪

MySQL 数据库 后台开发 后端

Amazon SageMaker Autopilot – 在完全控制和可见的情况下,自动创建高质量的机器学习模型-InfoQ