QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

为什么你应该关注 Amazon SageMaker

  • 2017-11-30
  • 本文字数:3013 字

    阅读完需:约 10 分钟

2014 年,AWS 在 re:Invent 上发布 Lambda 服务的时候,很多开发者尚未意识到这个服务能给他们带来怎样的好处。时隔三年,Lambda 服务已经成为了“Serverless”和“Function as a Service”开发范式的代表,并且已经承担起为数不少的企业关键业务。可以说,Lambda 服务为应用开发领域开辟了一片全新的游戏场地。

在 InfoQ 编辑看来,AWS CEO Andy Jassy 在今年的 re:Invent 大会上发布的 Amazon SageMaker 也是一个改写游戏方式的关键标志,而这一次的游戏场地是在人工智能领域(2017 年 AWS re:Invent 的产品发布列表见之前的这篇报道)。

在2017 年的今天,阻碍人工智能技术被广泛应用的最主要的门槛是什么?

芯片、框架、算法、数据量?这些领域当然还有很大成长空间,但很难说是当前的最大门槛。有人说,最大的门槛是准确率还不够,尤其是toC 领域的自然语言处理这样的场景,机器对人的表达方式的理解还远远达不到可以正常交流的水平。对于这个准确率的问题,每个体验过相关服务的读者应该都有自己的判断。但如果说这个问题为真,那么下一个问题是:为什么在这些领域,准确率提高得还不够快?

用机器学习来解决一个问题是建立在一个假设之上:针对任何一个问题,我们是能够根据固定数量的变量,得到一个足够好的模型,从而对其进行有效的解释与预测的。所以,基于这样的一个假设,那么准确率低的问题,就是一个模型不够好的问题。

模型不够好有很多原因,可能是因为训练数据不够,也可能是因为算法不合适,或者算法的参数没选择到最合适的组合。训练数据不够,就要多采集数据、多存储数据、多清洗数据。算法不合适,可能是因为参数的调试还没做到位,可能因为参数的调试需要耗费太多时间和其他成本所以在一个局部最优解就停下了,也可能是因为使用的框架(引擎)不合适。至于哪个框架更合适,可能需要多试几个框架,乃至于可能当前市面上流行的框架都不合适,需要一个新的框架。

对于以上各种可能的问题来源,Andy Jassy 提出了一个也许是更根本的问题:

也许,我们在建模这个层面的人手太少了?

根据InfoQ 编辑所了解,目前市面上有一些业务做得很好的大数据公司,他们的技术团队/ 数据团队有80% 的精力都用来做什么工作呢?

数据准备。

剩下的20% 精力,又有很大部分是用在部署集群、安装框架、调优这些“杂活儿”上面了。

从当前的客观情况来看,这是把数据分析业务做好的一个基本功。然而从理想世界的角度来看,这样的现状是相当惊人的浪费。AI 领域大牛李飞飞,她有多少时间是用在改进框架和算法上,有多少时间是投入到标记那320 万张图片上?

这就好比在云计算出现之前,一个开发者想要开发一个应用,可能80% 的时间是用在买服务器、安装操作系统、调试数据库、部署扩容备份等等跟开发应用无关的事情上了。现在的数据领域,跟那个年代的应用开发领域其实是非常相似的——一半以上的时间都不是用来产出的。

有些开发者可能还没动手就被这些麻烦事儿吓跑了。坚持在这个领域深耕的数据科学家们,他们的精力也用不到刀刃上。这就是AWS 发布SageMaker 的立场:让有能力去改进框架和算法的开发者,尽可能少花费精力在那些跟主业无关的事情上。

简单的看一下SageMaker 的基本用法——如何训练一个模型。以下内容来自 AWS 布道师 Randall Hunt 发布的博客

首先,在 AWS 的后台新建一个 Notebook 用来放置你的代码和一些配置信息。新建好的 Notebook 下面会自带一个叫做 sample-notebooks 的目录,里面包含了一些预置的算法:

无论是哪种算法,代码大致上是下面这个结构:

复制代码
def train({1}
channel_input_dirs, hyperparameters, output_data_dir,
model_dir, num_gpus, hosts, current_host):
#给训练代码占座
pass
def save(model):
#找个地方保存模型文件
pass

首先,channel input dirs:训练数据从哪儿来?可以是本地的一个目录,也可以是云端的。自从 S3 支持对象级别的查询之后,S3 在这几年已经变成一个挺流行的 Data Lake 选项。现在有了新发布的 S3 Select ,这个 Data Lake 的查询变得更高效了。而且现在还有了 Glacier Select ,于是那些冷数据也可以直接被拿来当作训练数据(题外话:Andy Jassy 说这两个 Select 功能是研发了一年的时间做出来的。你怎么看?我真心觉得还挺快的。)

然后,hyperparameters:这一个步骤就是 SageMaker 的第一个魔法所在了。看看教程中是怎么定义这个 hyperparameter 的:

复制代码
hyperparameters={
'batch_size': 128,
'epochs': 50,
'learning_rate': 0.1,
'momentum': 0.9
}

传统来说,这些 hyperparameter 的初始设置可能对最终的模型质量有很大的影响。比如这个 learning rate,如果设置太低,则学习得太慢;如果设置太高,可能压根跑不出来结果。于是乎,数据科学家们不得不一次又一次的试错,一直试错到他们觉得足够好,或者他们觉得足够烦了为止。

SageMaker 的第一个魔法就在于这一个步骤的自动化:把试错这件事交给机器来做,直到机器认为足够好了为止——机器可是从来都不会厌烦的。

其余的训练参数定义比较直观,就不多介绍了。要跑训练的时候,假设你要用 MXNet 这个框架配合一个你写好的 cifar10 算法,那么你就这么写(点击这里查看AWS 提供的sample notebook - cifar10.py 文件的详细内容,以及AWS Github 账号上的 SageMaker Python SDK 。这个文件使用了 Gluon API 。):

复制代码
import sagemaker
from sagemaker.mxnet import MXNet
m = 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")

于是你就有了四个 P2 实例开始帮你跑训练了!当训练跑完的时候,你就有了一个模型 m,可以拿来做预测了。至于这四个 P2 实例,它们会被自动释放,不用去管它们。这是 SageMaker 的第二个魔法:忘记你的服务器,也不用折腾各种框架的安装部署这些底层工作。SageMaker 上的这些框架都是已经优化好的,你自己部署的话,效果多半不会比它更好。

预测的执行也仅仅需要下面这一个指令,不需要在主机层面搞东搞西:

predictor = m.deploy(initial_instance_count=1, instance_type='ml.c4.xlarge')

比如,可以把想要做预测的在线实时数据——比如一张 Twitter 上的新照片——通过一个 Flask App 丢过去:

复制代码
@app.route('/invocations', methods=["POST"])
def invoke():
data = request.get_json(force=True)
return jsonify(predict.download_and_predict(data['url']))

然后你就可以得到你的预测结果——比如说,这张照片的拍摄地点。

那么你要问了,SageMaker 对于数据准备这个最大的“杂活儿”有啥帮助呢?

SageMaker 有一个 preprocess 数据的功能。至于这个功能能做到什么程度,还得试试才知道,详细情况可以参考这个文档。我想,恐怕暂时还不能跟那些专门提供数据准备服务的质量相比,因为这个文档里面同时也推荐了 Marketplace 上的相关服务

不过,能够节省下创建实例、安装框架、训练试错这些方面的工作,已经是一个很大的进步。现在,开发者只要有一个 AWS 账号就可以体验 SageMaker,而且现在是有两个月的免费额度的,正是尝鲜的最佳时机。AWS 的开发者文档网站已经更新了 SageMaker 的详细说明,可以在此查看。期待看到 SageMaker 之后的发展情况。

2017-11-30 00:303734

评论

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

Redis面试题:基本数据类型与底层存储结构

Linux服务器开发

redis 面试题 Linux服务器开发 Linux后台开发 BAT面试题

集结创新力量,2022航天宏图&华为云杯PIE软件开发者大赛正式开启

科技热闻

电脑就是我的安全感|ONES 人物

万事ONES

招聘 软件工程师

在线JSON转HTML,TABLE表格工具

入门小站

工具

【网络安全】网络安全的重要性你知道吗?

行云管家

网络安全

教你两分钟做出一个精美好用的404页面

源字节1号

前端开发 后端开发 网页开发

3. 堪比JMeter的.Net压测工具 - Crank 进阶篇 - 认识bombardierdate

MASA技术团队

C# .net 测试 压测 测试工具

恒源云(GpuShare)_MaskFormer:语义分割可以不全是像素级分类

恒源云

语义分割 像素分割 MaskFormer

《Mybatis 手撸专栏》第1章:开篇介绍,我要带你撸 Mybatis 啦!

小傅哥

小傅哥 mybatis 手写Mybatis

Linux之uniq命令

入门小站

Linux

在线HTML压缩格式化工具

入门小站

工具

母婴后浪品牌频出,各个细分市场有哪些发展潜力?

易观分析

母婴

OceanBase 源码解读(八):事务日志的提交和回放

OceanBase 数据库

oceanbase 源码解读

小程序容器轻松打造轻应用生态平台

Speedoooo

APP开发 小程序容器 轻应用 快应用 超级app

centos7.6安装MySQL5.7采坑指南

云原生

MySQL 数据库 sql centos

小程序容器技术,App热更新与敏捷开发新方案

Speedoooo

敏捷开发 APP开发 热更新 小程序容器 动态更新

收藏很久的资源整合网站,一个网站一个世界

小炮

大咖说|试衣到家 CEO:我们卖的不是衣服,是服务

大咖说

阿里巴巴 科技 时尚产业 试衣到家

如何进行高效的版本管理,版本管理的方法

阿里云云效

云计算 阿里云 项目管理 云原生 版本管理

运维审计系统是堡垒机么?跟堡垒机有啥区别?

行云管家

运维 堡垒机 运维审计系统

什么技术,让浩鲸科技拿下中国移动大奖?

鲸品堂

中国移动

敏捷实践|好的用户故事怎么写?

LigaAI

用户故事 敏捷实践

深入浅出事务的本质,附 OceanBase 事务解析14问!

OceanBase 数据库

oceanbase OceanBase 社区版

ironSource 推出全球首个跨渠道应用营销平台 ironSource Luna

科技热闻

Centos7安装Nginx

云原生

nginx centos 部署

“StarRocks 极客营” 重磅来袭,和技术大牛一起推开数据库梦想之门!

StarRocks

数据库 大数据 StarRocks

成都大运会“数智竞技邀请赛”启动 开悟平台为全球青年提供竞技舞台

科技热闻

聊聊数仓中TPCD-DS&TPC-H与查询性能的那些事儿

华为云开发者联盟

编辑器 GaussDB(DWS) TPCD-DS TPC-H 查询性能

VuePress 博客之 SEO 优化(五)添加 JSON-LD 数据

冴羽

Vue 前端 vuepress SEO 博客搭建

TDesign 更新周报(2022年3月第3周)

TDesign

数字化原住民|ONES 人物

万事ONES

软件 招聘 软件工程师

为什么你应该关注Amazon SageMaker_亚马逊云科技_sai_InfoQ精选文章