生产型机器学习已经没那么困难了?
作者 | Caleb Kaiser
译者 | 香槟超新星
出品 | CSDN(ID:CSDNnews)
封面图源自视觉中国
在软件工程的诸多领域内,生产用例是相当标准化的。以Web开发为例,要在Web应用中实现身份认证,你不会去创造一个数据库,自己写出散列功能,或者去设计一个新的认证方法。你会从几个明确定义的方法之中选一个,并利用标准的工具手段。
然而,对于机器学习来说,这种标准化还不存在。想要建立一个从模型训练到部署的一体化pipeline,团队不得不自己构建解决方案,基本上都是从零开始。
因此,该领域对于许多工程师来说都是触不可及的,而进一步,对于那些没有能力请专家的公司来说,也是如此。
但是,这种局面正在发生变化。模型的生产化正在变得越来越常规化。方法正在逐步标准化,工具的选择正在逐步成熟,到最后,非专业的ML工程师的也能搭建出软件了。
“将模型投入生产”是什么意思?
只要看一看你每天使用的那些软件,Gmail、Uber、Netflix,或者任何哪个你喜欢的社交媒体平台,你就会看到许多由机器学习驱动的功能:自动完成电子邮件,语音转文字,对象检测,ETA预测等。
虽然这些模型背后的数学是机器学习领域的科研人员要操心的事情,但能将其转化为产品的架构却应该为所有开发者所熟知:
从软件工程的角度来看,一个训练好的模型也只是一个API罢了,将模型投入生产意味着将其部署为一个微服务(microservice)。
注意:其他形式的模型部署(例如,对于没有连接到互联网的设备)也是存在的,但那不是本文的重点。
你想搭建出类似Gmail的Smart Compose这样的东西吗?把一个语言模型部署为web服务,用文本ping终端,然后在你的前端显示预测结果。你想实现一个像Facebook的推荐标签(Suggested Tagging)那样的东西吗?还是同样的流程:部署一个图像识别模型,然后就像使用其他web服务一样了。
但是,虽然用手比划着对别人说“把你的模型部署成微服务就好了”是很容易的,但如何做到却是个很有挑战性的问题。
不久前,想要部署一个实时推理模型,还需要先回答几个问题:
你要如何编写一个能从你的模型中生成预测结果的API?
将该API部署到生产中的最佳方式是什么?
如何实现生产型Web服务所需要的所有基础设施功能?比如自动缩放、监控、负载均衡、滚动更新等等。
根据你模型的特性的不同(它是用什么框架训练出来的,需要多少算力和内存,能处理什么类型的数据等等),答案可能会有很大的差异。
这就是为什么大型科技公司有专门的ML基础设施团队,也是大多数初创公司在生产中用不起ML的原因。
而现在,上面的问题都有了标准答案。
要想从你的模型中生成预测,你就用你的框架所附带的服务库(TensorFlow/TF Serving,PyTorch/TorchServe)。要想把你的模型封装成API并部署,你需要使用一个模型服务平台(请容我无耻的插播一句:我参与Cortex的维护,它是我们的开源模型服务平台,地址:https://github.com/cortexlabs/cortex)。
现在,任何一个软件工程师拿到一个模型以后,无论这个模型是由他们的数据科学团队训练好的,还是他们微调以后的开源模型,又或者只是一个普通的预训练模型,都能够把它变成一个web服务投入生产了,而不需要非得成为机器学习或Kubernetes专家。
举例:文本生成并不是只有Gmail的Smart Compose能做到
如果你在过去几年中用过Gmail,你一定对Smart Compose很熟悉。在你输入邮件内容时,它负责让Gmail给出一些建议的回复。
虽然Google肯定是有一个复杂的需要大量投资的ML pipeline的,但如果你想搭建一些模仿Smart Compose功能的东西,你不需要Google那样的资源就可以做到。
这方面的一个例子:AI Dungeon,一款由ML驱动的choose-your-own-adventure游戏。(地址:https://aidungeon.io/)
从底层来看,AI Dungeon 是 OpenAI 的 GPT-2(一种最先进的语言模型)微调后的版本,被部署为 Web 服务的形式。用户将他们的词汇提交给模型微服务,然后它就会回复一个故事。
介绍一下,GPT-2是非常大的。一个训练好的模型超过5GB,进行一项预测能够完全占用GPU。在不久前,探索如何将其大规模地部署为微服务,是一个重大的基础设施项目。你需要:
将其托管到有足够空间/GPU来为预测服务的实例上。
配置autoscaling来处理任意数量的并发用户。
实施各种成本优化方案,以保持你的云计算总花销在可控范围内。
而这每个任务中都包含许多需要解决的子问题。你autoscale的时候,是应该依据内存利用率,还是依据队列中的请求数量?你是否能顺利地处理故障切换(failover),来让自己可以放心地通过现货实例来节省成本?
在谷歌,这些事情都是有ML基础架构团队负责的,而AI Dungeon则是仅由一位工程师独立打造出来的。
正如Nick Walton(AI Dungeon背后的工程师)在其关于将AI Dungeon扩展到超过100万用户的文章中所解释的那样,他所要做的就只是编写他的预测API,并让他的模型服务平台(Cortex)实现基础架构的自动化。(文章地址:https://medium.com/@aidungeon/how-we-scaled-ai-dungeon-2-to-support-over-1-000-000-users-d207d5623de9)
注:即使对那些不熟悉转移学习的人来说,AI Dungeon用很少的数据获得最先进的结果的故事也非常有趣。
设计模型应该是很有挑战性的。
而将它们投入生产则应该是很枯燥的。
几年前,生产型ML的瓶颈会限制AI Dungeon的产生。而现在,AI Dungeon只是众多ML原生创业公司中的一个。
比如说Glisten,它就将多个模型结合在一起,从而产出一个可以用来从图像中提取产品信息的API。
图源:Glisten.ai
尽管Glisten每月要处理各个公司成千上万的产品,但它也只是一家只有两人的初创公司而已。只有他们不需要基础设施团队,这一点才有可能实现。
而且,生产型ML的大众化并不仅仅只影响着初创公司。比如说,下面这位工程师,就决定在被隔离期间部署一个对话模型,并录下自己对着对话模型说话的视频,以此来打发时间。
视频地址:https://youtu.be/ZnjlV2-qD1c
这些只是工程师们正在着手的项目中的几个例子,他们的资源很少,而且通常也缺乏DevOps的专业知识。然而这些项目之所以重要,不仅仅是因为它们本身就很有趣,还因为它们代表了机器学习生态系统中的一个进步。
随着机器学习生产化问题的解决,ML科研人员和软件工程师之间的壁垒被打破了。研究方面的突破能更快地体现在产品的特性上。结果就是,我们所有人都会从中受益。
GitHub链接:
https://github.com/cortexlabs/cortex
原文链接:
https://towardsdatascience.com/production-machine-learning-isnt-hard-anymore-932bd91e138f
本文为CSDN翻译文章,转载请注明出处。
推荐阅读
饿了么交易系统5年演化史
360金融首席科学家张家兴:别指望AI Lab做成中台
我们想研发一个机器学习框架,6 个月后失败了
那个分分钟处理 10 亿节点图计算的 Plato,现在怎么样了?
中国 App 出海“变形记”
詹克团反攻比特大陆:一场失去人心的自我挽留
-
你点的每个“在看”,我都认真当成了AI
生产型机器学习已经没那么困难了?相关推荐
- 没那么简单,没那么困难
10年前就总是口头上挂着说要去弄linux下的gcc编译,不幸这10年接触的项目都跟linux无缘,今天终于有机会折腾一下gcc-- 最大的感觉,gcc对语法的检查真是严格!vc各种放过我的地方,gc ...
- 二十英里法则--实现定下的目标,其实或许没那么困难(部分转载)
心理学家吉姆·柯林斯有一个非常著名的"二十英里法则" 01 每天走二十英里的人为什么先到终点 从美国西海岸圣地亚哥到某个地方有大约有三千英里的路程,这段路程地貌十分地复杂,而且经常 ...
- 饿了么交易系统5年演化史
作者 | 挽晴 来源 | 阿里巴巴中间件(ID:Aliware_2018) 个人简介: 2014年12月加入饿了么,当时参与后台系统的研发(Walis+Javis=>Walle),主要面向客服和 ...
- css修改select选择框option被选中的背景颜色_这五个有用的 CSS 属性完全被我忽视了...
作者 | Desiré译者 | 苏本如,责编 | 郭芮头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews) 以下为译文: 各位网友,大家好!?今天,我想在这里和大家分享一些我 ...
- 比 TensorFlow Lite 快 15.6 倍!业界首个移动 GPU BNN 加速引擎 PhoneBit 开源
头图 | CSDN 下载自视觉中国 在过去的几年里,深度神经网络(DNN)已经在计算机视觉和其他领域取得了巨大的进展.然而,由于深度神经网络较高的计算复杂度,以及移动设备性能和功率限制,导致深度神经网 ...
- 如何快速在 Springboot 中集成拦截器? | 原力计划
作者 | 才疏学浅 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 话不多说,直接上货! 拦截器的作用 拦截器提供了一种机制,在访问action前后进行一些操作,因为拦截器的这个特性,那 ...
- 任天堂连遭数据泄露,《动森》太火爆惊动黑客?
[编者按]任天堂 Switch 在今年大卖特卖,甚至被炒成了理财产品.但用户的激增,也给黑客带来了可乘之机.不久前,任天堂确认超过 16 万账户被黑客入侵.而近日又爆出了史上最大的数据泄露. 作者 | ...
- 仅需 5 步,用 JavaScript 直接通过前端发送电子邮件
作者 | Mateusz Iwaniuk 译者 | 明明如月,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 文章配套代码: https://github.com/iwaniukooo ...
- 华为副总裁回应应用删除用户图片;美国拟允许华为参与 5G 标准建设;Firefox 76.0 发布 | 极客头条...
整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦 ...
最新文章
- 运维企业专题(9)RHCS集群工具介绍
- HDR-100-24N LRS-100-24 漏电测量
- NLP、CV、ML全覆盖,这份私藏论文清单你一定要看看
- leetcode 162. Find Peak Element | 162. 寻找峰值(二分法找局部最大值)
- 【Paddle 经验分享】利用PaddleHub 2.x 完成文本分类训练的坑
- Django---Model操作
- 【leetcode】Search for a Range
- Android Canvas简单使用
- 动图,用Python追踪NBA球员的运动轨迹
- 手机app通达信添加自定义公式(分时T+0)为例子讲解
- linux不显示无线网卡驱动安装失败,无线网卡在Linux下安装
- 动手深度学习PyTorch(三)模型选择、欠拟合和过拟合
- AppData文件夹下Local,Locallow和Roaming
- 兼容android模拟器的微信apk,Android模拟器中安装apk的方法
- 马斯克:让我成功的其实是工程思维
- java poc_无回显命令执行PoC编写指南(Apache Shiro Java反序列化)
- Kruise Rollout v0.2.0 版本发布:支持 Gateway API、StatefulSet 分批发布等能力
- easyui treegrid
- CVE-2021-30461 - VoIPMonitor未授权远程代码执行漏洞
- Linux安装mysql详细步骤