内容简介:作者 | Jeremy Hermann & Mike Del Balso译者 | 王天宇
作者 | Jeremy Hermann & Mike Del Balso
译者 | 王天宇
整理 | Jane
出品 | AI科技大本营
【导读】2017年9月,Uber 在技术社区发表了一篇文章向大家介绍了 Uber 的机器学习平台 —— Michelangelo。随着平台的日渐成熟,Uber 的业务数量与能力也随之增长和提升,机器学习在整个公司的应用范围越来越广。在本篇文章中, 我们将为大家总结 Michelangelo 在过去一年的时间里取得的成果,回顾Michelangelo 的发展历程,并深入探讨 Uber 机器学习平台当前的发展方向和未来目标。
三年时间,从零到一百
2015年,机器学习在 Uber 的应用并不广。但随着公司的规模扩大,业务需要也越来越复杂,需要用到机器学习的地方越来越多。如何在公司范围内部署机器学习迅速成为 Uber 的战略重点。
Michelangelo 最初的重点是实现大规模批量训练,并进行批量预测。随着时间的推移,Uber 加入了集中式特征存储、模型性能报告、低延迟实时预测服务、深度学习工作流以及许多其他的组件与集成环境。在短短三年内,Uber 已经拥有技术先进的机器学习 工具 和基础平台,以及上百个机器学习案例。
Uber 的机器学习用例
Uber 将机器学习用在了各种各样的业务中。在这一部分,我们将为大家介绍在过去三年的时间里几个 Michelangelo 的典型用例,它们体现了机器学习在 Uber 业务中的多样性和影响力:
▌ Uber Eats
Uber Eats 使用基于 Michelangelo 的多个模型来做预测,以便食客每次打开 APP 都可以有更好的体验。基于机器学习的排名模型会根据历史数据和用户当前的进程信息,来推荐合适的餐馆和菜品。基于 Michelangelo,优食也会根据预测到达时间、历史数据以及餐馆的实时信息,来估算餐食的送达时间。
▌ 市场预测
Uber 的市场团队利用了各种时空预测模型,这些模型能够预测未来各个地点和时间乘坐者的需求,以及司机是否有空。根据所预测的供需不平衡情况,Uber 系统可以提醒司机提前去往最有机会接客的地点。
▌ 客户支持
在 Uber 平台,每天约有 1500 万次出行记录。人们经常把钱包或手机遗忘在车内,或通过Uber 的帮助系统提交各种问题。这些问题单将被提交至客服代表。基于 Michelangelo 的机器学习模型被应用于此,使问题的解决过程更加自动化,并大大提升了速度。
▌ 乘车检查
自 2010 年的第一条 Uber 乘坐记录以来, 每次出行时地图都会使用 GPS 数据。 所以我们知道自己何时处于何地,以及是谁在驾驶。但Uber 希望可以做得更多。利用 GPS 的力量和司机的智能手机中的其他传感器,Uber 的技术可以检测到可能发生的车祸。例如,如果在一次旅程中出现长时间的意外停车,乘客和司机都会收到一条提醒,可提供交通事件援助。
▌ 预计到达时间(ETAs)
对公司来说,最重要的指标之一就是各种预估时间。精确的预估时间对好的用户体验至关重要,这些指标被输入无数其他的内部系统中,来协助判定价格和路线。
Uber 的地图服务团队开发了一个复杂的分段路线系统,用来计算基本的预估时间值。这些基本的预估时间具有相同类型的错误。地图服务团队发现他们可以使用机器学习模型来预测这些错误,并用预测的错误来进行修正。由于这个模型正逐个应用在各个城市,Uber 团队发现预估到达时间的准确性大幅提升,在某些情况下,平均预估到达时间的误差减小了 50% 以上。
▌ 一键聊天
一键聊天的功能基于自然语言处理模型,模型可以预测并展示最有可能的回复,使乘客与司机之间的交流更加高效。司机只需按一下按钮,即可回复乘客的消息,从而避免分心。
▌ 自动驾驶车辆
Uber 的自动驾驶汽车系统使用深度学习模型来实现各种功能,包括物体检测和路线规划。建模人员用 Michelangelo 的 Horovod 在大量 GPU 机器上进行高效的分布式训练。
Uber 如何一步步拓展机器学习的应用场景
作为一支平台团队,Uber 团队的使命是充分利用机器学习的价值,并加速其在公司各个方面的应用。 对于数据科学家 ,Uber 的工具简化了机器学习系统构建与部署过程中的生产和运行。 对于工程师 ,Uber 的机器学习工具简化了这些系统背后的数据科学(如特征工程、建模、评估等),使他们无需数据科学家的帮助,就可以轻松训练出质量足够高的模型。 最后,对于在建立机器学习系统方面经验丰富的工程团队 ,Uber 还提供 Michelangelo 的机器学习基础组件,以实现自定义的配置和工作流。
能够在 Uber 这样的公司成功扩展机器学习,需要的不仅仅是技术实力,还有组织与设计流程方面的因素。接下来我们就为大家分析一下 Uber 成功的三个关键因素:组织、流程和技术。
Michelangelo 机器学习平台的核心战略支柱
▌ 组织
对于构建高质量的解决方案并将其成功部署来说,让对的人解决对的问题显得尤为重要。例如,如果一个新项目需要计算机视觉方面的知识,那么 什么样的组织结构有利于 Uber 高效地分配专家资源,从而保证合适的优先级呢?
经过几次迭代,Uber 目前具备以下几种主要角色和职责:
Uber 机器学习系统中的组织关联
1.产品团队
团队发现,如果产品工程团队具有自己在生产中构建和部署的模型,效果是最好的。例如,Uber 的地图服务团队就拥有预测 Uber 预计到达时间(ETA)的模型。产品团队经常配备使用 Uber 机器学习平台来构建与部署模型的全套技能。当他们需要额外的技术时,可以从研究或专家团那队得到帮助。
2.专家团队
当产品工程团队遇到超出能力范围的机器学习问题时,他们可以向内部专家团队求助。Uber 有各个领域的专家,如自然语言处理、计算机视觉、推荐系统、预测,来与产品团队协同构建量身定制的解决方案。例如在COTA 项目中专家团队携手产品团队,为 Uber 业务和用户创造了巨大的影响力。
3.研究团队
专家和产品工程团队经常与 Uber 的 AI 研究小组(AI Labs)合作,协同解决问题,并为未来的研究指明方向。一般来说,研究团队不用写用于生产的代码,但他们在实际问题上与其他团队的合作非常紧密。当研究员们开发了新的技术和工具时,平台工程团队就会将其集成到公司的平台上,以便新技术可以为全公司所使用。
4.机器学习平台团队
Michelangelo 平台团队创建并执行了通用的机器学习工作流和工具箱,产品工程团队可以直接用来构建、部署以及运用机器学习解决方案。
Uber 的系统越来越高端,需要解决的问题也越来越复杂,随着日渐增长的灵活性、可扩展性,以及特定领域的机器学习开发经验,需求也增长了起来。Uber 也正在开发一些其他的更面向特定领域的平台,来实现一些不适用于 Michelangelo 工作流的特定用例。
▌ 流程
Uber 的机器学习服务日渐成熟,许多流程对团队的生产力和效率都起到了作用。分享最佳的机器学习实践经验和建立更加结构化的流程,对指明团队方向和避免重复错误都是至关重要的。
▌ 技术
任何机器学习系统在技术方面都存在无数细节。在 Uber的系统中有以下几个尤为重要的高级领域:
-
端到端的工作流:机器学习不仅仅是训练模型,你需要支持整个机器学习工作流:管理数据、评估模型、部署模型、作出预测、以及监控预测。
-
把机器学习当作软件工程:团队把机器学习的开发与软件开发做类比,然后将软件开发的模式和方法用到机器学习中。
-
模型开发速度:机器学习模型的开发是一个迭代的过程,具有创新性且高质量的模型来自大量的重复试验。因此,模型的开发与迭代速度至关重要。
-
模块化与层次化的架构:在处理大多数普通的机器学习用例时,提供端到端的工作流非常重要,但在处理不太常见且更专业的用例时,有可以进行自定义组装的原始组件就变得尤为关键。
1.端到端的工作流程
早期 Uber 就认识到,要在公司内成功开展机器学习需要的不仅仅是训练好模型,更需要对整个工作流提供稳定且可扩展的支持。另外团队还发现,同样的工作流可以应用到多个场景中,包括传统机器学习和深度学习,有监督、无监督以及半监督学习,批量、在线和移动部署,时间序列预测。让一个工具做多种工作并不是重点,但拥有一套可以解决工作流中所有步骤的集成工具是非常重要的。
2.把机器学习看作软件工程
Michelangelo 团队的一个重要原则是,把机器学习看作软件工程。实际的开发和运行机器学习应该和软件工程一样,是一个迭代、严格、经过测试的、且有方法支持的过程。例如,一旦团队认识到一个模型就像编译的软件库,便会在一个严格且可控制版本的系统中,跟踪模型的训练配置,就像控制库源代码的版本一样。跟踪配置这一操作非常重要,因为之后可以将其重复利用,创建新的模型。
3.模型开发速度
创建可靠的机器学习系统是一门学问,需要进行多次迭代才能达到好的效果。迭代速度影响着机器学习在整个组织的扩展,以及一个团队面对问题的解决效率。Michelangelo 团队的首要任务是让数据科学团队提高速度。团队的速度越快,试验的次数越多,也就能测试更多的猜想,从而得到更好的结果。
下图展示了Uber 所考虑的标准机器学习开发流程的思路,以及不同的反馈循环。团队始终在考虑这一流程,并收缩这些循环,使数据科学中的迭代变得更加容易快捷。
机器学习项目的工作流程
4.模块化且层次化的产品
团队在开发 Michelangelo 时遇到的问题之一是:在为常见的机器学习工作流提供端到端支持的同时,还要使那些不常见的工作流保持灵活性。
最初,这个平台和基础组件组成了一个单独的系统。当系统变得更加复杂时, 需要解决的问题也变得更加多样且复杂。一些团队希望将 Michelangelo 的部分组件与他们自己的组件相结合,构成新的工作流。其他团队需要专门的开发工具来处理他们的用例,但从头开始构建这些工具很显然是不合理的。因此,团队对 Michelangelo 的架构进行了一些重大修改,尽可能地利用现有系统。
现在,团队正在将 Michelangelo 的架构分解成明确的基础架构层,让团队可以利用它们来构建更复杂的平台,例如自然语言处理或视觉应用。一旦完成这些工作,就将拥有两个用户群:使用 Michelangelo 平台构建和部署模型的模型构建者,和使用 Michelangelo 基础组件构建定制解决方案或复杂平台的机器学习系统构建者。
主要经验教训
在过去的三年里,通过构建 Michelangelo 并将机器学习在整个 Uber 进行拓展,整个团队从成功与失败中获得了许多经验教训。在一些案例中,有时候第一次就把事情做对了,但更多的时候团队需要经过反复多次的尝试,才能找到最适合的方法。可以和企业、技术团队负责人,每一个开发人员分享的经验有以下几点:
-
让开发人员使用他们偏好的工具。
-
数据是机器学习中最难的部分,同时也是最重要的部分。
-
要使开源和商业组件实现大规模运行,需要付出很多努力。
-
考虑长期的愿景,根据用户的反馈进行多次开发。
-
实时的机器学习服务很难做到完美。
旅程才刚刚开始,仍有许多工作在等着Uber 。这也是一个不断发展的领域,会有更多的东西需要大家学习。
原文链接:
https://eng.uber.com/scaling-michelangelo/?utm_source=wanqu.co&utm_campaign=Wanqu+Daily&utm_medium=website
——【完】——
精彩推荐
2018 中国大数据技术大会 将于 12 月 6 - 8 日 在新云南皇冠假日酒店举行。汇聚超百位国内外实力讲师从学界翘楚到行业一线大拿:
管晓宏:中国科学院院士;
张宏江:源码资本投资合伙人;
张晓东: 美国俄亥俄州立大学 Robert M. Critchfield 讲席教授;
陈性元:北京信息科学技术研究院副院长;
周靖人:阿里巴巴集团副总裁;
李浩源:Alluxio 公司创始人&CEO
......
全方位立体解读大数据时代的技术进程,为众技术爱好者奉上一场优质干货盛宴。
以上所述就是小编给大家介绍的《Uber如何在公司范围内部署机器学习》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 使用golang写一个高性能端口扫描器,支持IP范围,端口号范围
- jQuery日期范围选择器
- ThinkPHP模板范围判断标签使用
- JavaScript生成指定范围的时间列表
- [译] Ruby 2.6 增加无穷范围
- 保持安全控制范围成功保护混合云
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Parsing Techniques
Dick Grune、Ceriel J.H. Jacobs / Springer / 2010-2-12 / USD 109.00
This second edition of Grune and Jacobs' brilliant work presents new developments and discoveries that have been made in the field. Parsing, also referred to as syntax analysis, has been and continues......一起来看看 《Parsing Techniques》 这本书的介绍吧!