写点什么

Amazon SageMaker – 加快机器学习进程

  • 2019-11-04
  • 本文字数:2579 字

    阅读完需:约 8 分钟

Amazon SageMaker – 加快机器学习进程

机器学习是许多初创公司和企业的关键技术。尽管经历了数十年的投入和改进,开发、训练和维护机器学习模型的过程仍然繁琐且欠缺通用性。将机器学习技术集成到应用程序中的过程往往需要一个专家团队进行为期数月的调整和修补,而且设置还不一致。企业和开发人员需要一个端到端、开发到生产的机器学习管道。

Amazon SageMaker 简介

Amazon SageMaker 是一种完全托管的端到端机器学习服务,数据科研人员、开发人员和机器学习专家可以快速、大规模地构建、训练和托管机器学习模型。这极大地推进了您所有的机器学习工作,让您能够将机器学习技术迅速融入生产应用程序。



Amazon SageMaker 包含三个主要组件:


  • 编写:零设置托管式 Jupyter 笔记本 IDE,可进行数据探索、清理和预处理。您可以在一般实例类型或 GPU 驱动实例上运行上述功能。

  • 模型训练:分布式模型构建、训练和验证服务。您可以使用内置的通用监督式和非监督式学习算法和框架,也可以借助 Docker 容器创建自己的训练。训练可以扩展到数十个实例以支持更快的模型构建。从 S3 读取训练数据,并将模型构件存放到 S3。模型构件是数据相关的模型参数,而不是允许您从模型进行推理的代码。这种问题隔离策略简化了将经过 Amazon SageMaker 培训的模型部署到物联网设备等其他平台的过程。

  • 模型托管:一种模型托管服务,可通过 HTTPS 终端节点调用模型获取实时推理。这些终端节点能够扩展以支持流量,允许您同时对多个模型进行 A/B 测试。同样,您可以使用内置软件开发工具包构建这些终端节点,也可以利用 Docker 镜像提供自定义配置。


这些组件中的每一个都可以独立使用,这使得使用 Amazon SageMaker 填补现有管道中的空白变得极其简单。也就是说,在端到端管道中使用此服务时,您可以获得一些非常强大的功能。

使用 SageMaker

我打算构建、训练和部署一个基于 Apache MXNet 的图像分类器。我将使用 Gluon 语言、CIFAR-10 数据集和 ResNet V2 模型架构。

使用 Jupyter 笔记本编写


创建笔记本实例时,它会启动一个 ML 计算实例,其中包含深度学习应用中常见的 Anaconda 包和库、一个 5 GB ML 存储卷和几个演示各种算法的示例笔记本。我可以选择配置 VPC 支持来在我的 VPC 中创建一个 ENI,以方便、安全地访问我的资源。


待实例完成预配置后,我就可以打开笔记本开始编写代码了!


模型训练

对于任何类型的 Amazon SageMaker 常见框架训练,您都可以实现类似下面的简单训练接口。为简洁起见,这里省略了实际的模型训练代码:


Python


def train(    channel_input_dirs, hyperparameters, output_data_dir,    model_dir, num_gpus, hosts, current_host):    pass
def save(model): pass
复制代码


我打算在 Amazon SageMaker 基础设施上的 4 个 ml.p2.xlarge 实例上创建一个分布式训练作业。我已经下载了本地所需的全部数据。


Python


import sagemakerfrom sagemaker.mxnet import MXNetm = MXNet("cifar10.py", role=role,           train_instance_count=4, train_instance_type="ml.p2.xlarge",          hyperparameters={'batch_size': 128, 'epochs': 50,                            'learning_rate': 0.1, 'momentum': 0.9})
复制代码


现在,我们构建好了模型训练作业,可以通过下面的调用为其提供数据: m.fit("s3://randall-likes-sagemaker/data/gluon-cifar10")


导航到作业控制台,可以看到系统正在运行此作业!


托管和实时推理

现在,我的模型已完成训练,可以开始生成预测了!我使用跟以前相同的代码创建和启动一个终端节点。


Python


predictor = m.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge')
复制代码


调用终端节点的操作十分简单,直接运行: predictor.predict(img_input)!


这就是一个代码不足 100 行的端到端机器学习管道。


下面我们再演练一个示例,了解一下如何只使用 Amazon SageMaker 的模型托管组件。

使用自定义 Docker 容器

Amazon SageMaker 为 Docker 容器定义了一个简单的规范,让您能够轻松编写自定义训练算法或自定义推理容器。


我有一个基于此处所述架构的现有模型,我打算托管此模型进行实时推理。


我创建了一个简单的 Dockerfile 和 flask 应用程序来提供推理。


由于加载模型和生成预测的代码因实际应用而异,此处省略了这些代码。从本质上说,我构建了一个方法来从输入 URL 下载图像,然后将此图像数据传递给 MXNet 模型进行预测。


Python


from flask import Flask, request, jsonifyimport predictapp = Flask(__name__)
@app.route('/ping')def ping(): return ("", 200)
@app.route('/invocations', methods=["POST"])def invoke(): data = request.get_json(force=True) return jsonify(predict.download_and_predict(data['url']))
if __name__ == '__main__': app.run(port=8080)
复制代码


FROM mxnet/python:latestWORKDIR /appCOPY *.py /app/COPY models /app/modelsRUN pip install -U numpy flask scikit-imageENTRYPOINT ["python", "app.py"]EXPOSE 8080
复制代码


我将这个图像推送到 ECR,然后导航到 Amazon SageMaker 中的模型控制台来创建一个新模型。



创建新模型后,我还预配置了一个终端节点。



现在我可以从 AWS Lambda 或任何其他应用程序调用此终端节点了!我设置了一个 Twitter 账户来展示这个模型。您可以通过 Twitter 向 @WhereML 推送一张图片,看看它能否猜出位置!


Python


import boto3import jsonsagemaker = boto3.client('sagemaker-runtime')data = {'url': 'https://pbs.twimg.com/media/DPwe4kMUMAAWCd_.jpg'}result = sagemaker.invoke_endpoint(    EndpointName='predict',  Body=json.dumps(data))
复制代码

定价

作为 AWS 免费套餐的一部分,您可以免费开始使用 Amazon SageMaker。在前两个月,您每月可以免费使用:250 小时的 t2.medium 笔记本用量、50 小时的 m4.xlarge 用量和 125 小时的 m4.xlarge 用量。超出免费套餐部分的定价因地区而异,但基于以下要素计费:实例用量 (秒)、存储 (GB) 和传入/传出服务的数据量 (GB)。


Jeff 告诉我,在今年的 re:Invent 大会举办之前,不要撰写“太过重磅”的文章。显然,我没把持住。在 re:Invent 2017 发布的众多美妙产品中,Amazon SageMaker 是我最喜欢的服务。我已经迫不及待想要知道我们的客户能够利用这个令人兴奋的工具套件完成哪些“壮举”了。


本文转载自 AWS 技术博客。


原文链接:


https://amazonaws-china.com/cn/blogs/china/sagemaker/


2019-11-04 08:00668

评论

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

【TiDB 社区升级互助材料】TiFlash 最佳实践&上线前准备& FAQ

TiDB 社区干货传送门

版本升级

TIDB 新特性解读 (7.0~7.5)

TiDB 社区干货传送门

版本升级 集群管理 版本测评 新版本/特性解读 7.x 实践

实“智”名归!天翼云论文被国际顶会IEEE CVPR收录!

天翼云开发者社区

人工智能 云计算

以数字守护汉字!天翼云TeleDB数据库获GB 18030最高级别认证!

天翼云开发者社区

数据库 云计算

利用LangChain构建的智能数据库操作系统

霍格沃兹测试开发学社

基于LangChain实现数据库操作的智能体

测吧(北京)科技有限公司

测试

微信小程序直接生成鸿蒙App的路径

Onegun

鸿蒙 鸿蒙开发

恢复误删的 TiDB 集群:从 Kubernetes 全毁情况下恢复

TiDB 社区干货传送门

算法人生(12):从“优先级队列算法”到“”六点优先工作法”

养心进行时

人工智能 算法 优先队列算法 六点优先工作法 工作方法

天翼云助农上演“科技大片”,绘就数字春耕新图景!

天翼云开发者社区

云计算 云电脑

解构复合人工智能系统(Compound AI Systems):关键术语、理论、思路、实践经验

Baihai IDP

程序员 AI LLM 白海科技 企业号 5 月 PK 榜

FonePaw Data Recovery for Mac:专业的数据恢复方案

iMac小白

这款工具让开发变得没门槛了

Tp_jh

容器 云原生 K8s 多集群管理 云端开发 生成式AI

TiDB 学习/认证的哪些事儿

TiDB 社区干货传送门

学习&认证&课程

星辰考古:TiDB v1.0 再回首

TiDB 社区干货传送门

版本升级 新版本/特性发布

一文介绍某行数据库升级原则

TiDB 社区干货传送门

版本升级 管理与运维

Remote Desktop Manager for mac(远程桌面管理器)v2024.1.8.6中文激活版

iMac小白

算法人生(10): 从“惰性求解”看“积极拖延”如何提高效率

养心进行时

算法 拖延 惰性求解 算法思路

算法人生(13):从“Scrum”看“PDCA时间管理法”

养心进行时

Scrum 敏捷 时间管理 PDCA 敏捷项目管理

Multitouch for Mac激活版下载:触控板手势增强软件

iMac小白

TiDB在线DDL操作对业务到底有没有影响

TiDB 社区干货传送门

实践案例 7.x 实践

浅谈云主机在VPC中进行迁移的使用场景和操作方法

天翼云开发者社区

云计算 云主机

EndNote 21 for Mac 大客户授权(文献管理软件)v21.3永久激活版

iMac小白

EndNote for Mac EndNote 21 EndNote 21下载 EndNote 破解版

算法人生(14):从“探索平衡策略”看“生活工作的平衡之道”

养心进行时

人工智能 平衡 强化学习 探索平衡策略

7个维度告诉你,产品经理是如何取舍“需求”的?

养心进行时

需求管理 需求 需求迭代

算法人生(15):从“智能任务调度算法”到“15-45-90时间管理法”

养心进行时

人工智能 算法 时间管理 智能调度

算法人生(11):从“梯度提升树(GBDT)”看“2/8时间管理法”

养心进行时

机器学习 算法 时间管理 梯度提升树 GBDT

Paste Queue for Mac(剪切板管理工具)v1.6.2永久激活版

iMac小白

Paste Queue下载 Paste Queue破解版 Paste Queue激活版 Paste Queue mac

谈谈天翼云对等连接

天翼云开发者社区

云计算 天翼云

Amazon SageMaker – 加快机器学习进程_语言 & 开发_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章