Uber如何在公司范围内部署机器学习

栏目: 数据库 · 发布时间: 6年前

内容简介:作者 | Jeremy Hermann & Mike Del Balso译者 | 王天宇

Uber如何在公司范围内部署机器学习

作者 | 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 系统可以提醒司机提前去往最有机会接客的地点。

Uber如何在公司范围内部署机器学习

客户支持

在 Uber 平台,每天约有 1500 万次出行记录。人们经常把钱包或手机遗忘在车内,或通过Uber 的帮助系统提交各种问题。这些问题单将被提交至客服代表。基于 Michelangelo 的机器学习模型被应用于此,使问题的解决过程更加自动化,并大大提升了速度。

Uber如何在公司范围内部署机器学习

乘车检查

自 2010 年的第一条 Uber 乘坐记录以来, 每次出行时地图都会使用 GPS 数据。 所以我们知道自己何时处于何地,以及是谁在驾驶。但Uber 希望可以做得更多。利用 GPS 的力量和司机的智能手机中的其他传感器,Uber 的技术可以检测到可能发生的车祸。例如,如果在一次旅程中出现长时间的意外停车,乘客和司机都会收到一条提醒,可提供交通事件援助。

Uber如何在公司范围内部署机器学习

预计到达时间(ETAs)

对公司来说,最重要的指标之一就是各种预估时间。精确的预估时间对好的用户体验至关重要,这些指标被输入无数其他的内部系统中,来协助判定价格和路线。

Uber 的地图服务团队开发了一个复杂的分段路线系统,用来计算基本的预估时间值。这些基本的预估时间具有相同类型的错误。地图服务团队发现他们可以使用机器学习模型来预测这些错误,并用预测的错误来进行修正。由于这个模型正逐个应用在各个城市,Uber 团队发现预估到达时间的准确性大幅提升,在某些情况下,平均预估到达时间的误差减小了 50% 以上。

Uber如何在公司范围内部署机器学习

一键聊天

一键聊天的功能基于自然语言处理模型,模型可以预测并展示最有可能的回复,使乘客与司机之间的交流更加高效。司机只需按一下按钮,即可回复乘客的消息,从而避免分心。

自动驾驶车辆

Uber 的自动驾驶汽车系统使用深度学习模型来实现各种功能,包括物体检测和路线规划。建模人员用 Michelangelo 的 Horovod 在大量 GPU 机器上进行高效的分布式训练。

Uber如何在公司范围内部署机器学习

Uber 如何一步步拓展机器学习的应用场景

作为一支平台团队,Uber 团队的使命是充分利用机器学习的价值,并加速其在公司各个方面的应用。 对于数据科学家 ,Uber 的工具简化了机器学习系统构建与部署过程中的生产和运行。 对于工程师 ,Uber 的机器学习工具简化了这些系统背后的数据科学(如特征工程、建模、评估等),使他们无需数据科学家的帮助,就可以轻松训练出质量足够高的模型。 最后,对于在建立机器学习系统方面经验丰富的工程团队 ,Uber 还提供 Michelangelo 的机器学习基础组件,以实现自定义的配置和工作流。

能够在 Uber 这样的公司成功扩展机器学习,需要的不仅仅是技术实力,还有组织与设计流程方面的因素。接下来我们就为大家分析一下 Uber 成功的三个关键因素:组织、流程和技术。

Uber如何在公司范围内部署机器学习

Michelangelo 机器学习平台的核心战略支柱

组织

对于构建高质量的解决方案并将其成功部署来说,让对的人解决对的问题显得尤为重要。例如,如果一个新项目需要计算机视觉方面的知识,那么 什么样的组织结构有利于 Uber 高效地分配专家资源,从而保证合适的优先级呢?

经过几次迭代,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 所考虑的标准机器学习开发流程的思路,以及不同的反馈循环。团队始终在考虑这一流程,并收缩这些循环,使数据科学中的迭代变得更加容易快捷。

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如何在公司范围内部署机器学习


以上所述就是小编给大家介绍的《Uber如何在公司范围内部署机器学习》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Java性能优化权威指南

Java性能优化权威指南

Charlie Hunt、Binu John / 柳飞、陆明刚 / 人民邮电出版社 / 2014-3 / 109.00 元

Java性能优化圣经!Java之父重磅推荐! 本书由曾任职于Oracle/Sun的性能优化专家编写,系统而详细地讲解了性能优化的各个方面,帮助你学习Java虚拟机的基本原理、掌握一些监控Java程序性能的工具,从而快速找到程序中的性能瓶颈,并有效改善程序的运行性能。 Java性能优化的任何问题,都可以从本书中找到答案!一起来看看 《Java性能优化权威指南》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具