|
|
51CTO旗下网站
|
|
移动端

用Amazon SageMaker训练和部署机器学习模型

Amazon SageMaker在re:Invent 2017大会上宣布,这是AWS的一种托管机器学习服务。它在云端支持训练和托管机器学习模型。客户可以在英伟达Tesla K80和P100 GPU支持的集群上运行训练作业。训练作业的结果(准备用于推理的模型)可作为实现可扩展预测的REST API来呈现。

作者:布加迪编译来源:51CTO|2018-11-07 09:00

用Amazon SageMaker训练和部署机器学习模型

【51CTO.com快译】Amazon SageMaker在re:Invent 2017大会上宣布,这是AWS的一种托管机器学习服务。它在云端支持训练和托管机器学习模型。客户可以在英伟达Tesla K80和P100 GPU支持的集群上运行训练作业。训练作业的结果(准备用于推理的模型)可作为实现可扩展预测的REST API来呈现。

该服务还支持超参数调优,数据科学家和开发人员可以借助该服务,找到最适合某一个算法和业务问题的最优参数。比如说,为了解决典型的回归问题,超参数调优猜测哪些超参数组合可能获得最佳结果,并运行训练作业来测试这些猜测。测试完第一组超参数值之后,超参数调优使用回归来选择要测试的下一组超参数值。

Amazon SageMaker的最佳设计决策之一是,使用Jupyter Notebooks作为开发工具。鉴于Notebooks在数据科学家当中的熟悉和普及程度,准入门槛很低。AWS开发了一个原生Python SDK,可以与NumPy、Pandas和Matplotlib等标准模块混合搭配。

Amazon SageMaker与相关的AWS服务紧密集成,因而轻松处理模型的生命周期。借助面向AWS的Python SDK:Boto3,用户可以存储数据集,并从Amazon S3存储桶中检索数据集。还可以从云端数据仓库Amazon Redshift导入数据。该服务与IAM集成以进行身份​​验证和授权。使用Amazon EMR运行的Spark集群可与SageMaker集成起来。AWS Glue是用于数据转换和准备的首选服务。

Docker容器在SageMaker的架构中发挥着关键作用。AWS为常见算法提供了容器镜像,比如线性回归、逻辑回归、主成分分析、文本分类和对象检测。在开始训练作业之前,开发人员应将数据集的位置和一组参数传递给容器。然而,高级Python API对处理容器所涉及的步骤作了抽象处理。最后,经过训练的模型也被打包成用于呈现预测API的容器镜像。SageMaker依赖用于存储镜像的Amazon EC2 Container Registry和托管模型的Amazon EC2。

Amazon SageMaker有三个基本组件:托管的Jupyter Notebooks、分布式训练作业以及呈现预测端点的模型部署。

不妨仔细看一下针对部署在Amazon SageMaker中的机器学习模型来训练和预测所涉及的步骤。

数据准备和探索

Amazon SageMaker要求数据集在S3 Bucket中可用。上传数据之前,客户可以选择在外部服务中执行ETL操作,比如AWS Glue、AWS Data Pipeline或Amazon Redshift等服务。

数据科学家可以使用包括Pandas和Matplotlib在内的熟悉工具来探索和可视化数据。

在准备和探索数据之后,数据集将转换成SageMaker模型要求的一种格式。由于该平台根源于Apache MXNet,它使用框架中定义的Tensor数据类型。数据集上传到S3存储桶之前,需要将NumPy数组和Pandas数据框序列化成MXNet Tensors。

模型选择和训练

Amazon SageMaker有内置算法可以对训练模型的低级细节进行抽象处理。每种算法都可作为将数据集和指标作为参数的API来使用。这消除了选择适合训练的那种框架带来的麻烦。一旦开发人员决定了使用什么算法,剩下来的就是调用映射到该特定算法的API。

在幕后,SageMaker使用Apache MXNet和Gluon框架,将API转换成创建作业所需的多个步骤。这些算法打包成存储在Amazon ECR中的容器镜像。

除了Apache MXNet外,SageMaker还将TensorFlow呈现为原生框架。开发人员可以编写用于创建自定义TensorFlow模型的代码。

还可以使用自定义框架,比如PyTorch和Scikit-learn。SageMaker要求这些框架封装在容器镜像中。Amazon发布的说明性指南包含Dockerfile和用于创建自定义镜像的帮助脚本。就在开始训练作业之前,使用低级Python API,就可以将Amazon SageMaker指向自定义镜像,而不是内置镜像。

模型训练

Amazon SageMaker的训练作业在基于Amazon EC2实例的分布式环境中运行。API需要实例数量与实例类型一起,才能运行训练作业。如果训练复杂的人工神经网络,SageMaker要求基于K80或P100 GPU的ml.p3.2xlarge或更好类型的实例。

从Jupyter Notebook开始时,训练作业同步运行,显示基本的进度日志,一直等到训练完成再返回。

模型部署

在Amazon SageMaker中部署模型是分两步走的过程。第一步是创建端点配置,该配置指定了用于部署模型的机器学习计算实例。第二步是启动机器学习计算实例,部署模型,并呈现URI进行预测。

端点配置API接受机器学习实例类型和实例的初始计数。如果是推理神经网络,配置可能包括GPU支持的实例类型。端点API按照上一步定义的内容来配置基础设施。

Amazon SageMaker支持在线预测和批量预测。批量预测使用经过训练的模型来推断存储在Amazon S3中的数据集,并将推断结果保存在创建批量转换作业的过程中所指定的S3存储桶中。

与谷歌云机器学习引擎和Azure机器学习服务相比,Amazon SageMaker缺少使用本地计算资源来训练和测试模型的功能。即使是简单的机器学习项目,也需要开发人员创建托管的Notebooks以及用于训练和预测的实例,因而这项服务成本高昂。

预计Amazon会在今年的re:Invent大会上宣布SageMaker的多处改进。

原文标题:Train, Deploy Machine Learning Models with Amazon SageMaker,作者:Janakiram MSV

【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】

【编辑推荐】

  1. 阿里蚂蚁的机器学习算法-一 、二、三面面经,干货速收!
  2. 5G承载网运营难 机器学习技术搞得定
  3. 机器学习十二大经验准则
  4. 2018AI和机器学习界的12个重大收购案
  5. 四大机器学习编程语言对比:R、Python、MATLAB、Octave
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

精通正则表达式(第3版)

随着互联网的迅速发展,几乎所有工具软件和程序语言都支持的正则表达式也变得越来越强大和易于使用。本书是讲解正则表达式的经典之作。本书...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊