经验教训帖:一起去揭开Uber式的机器学习秘密!

点击上方关注,All in AI中国

作者Jesus Rodriguez

经验教训帖:一起去揭开Uber式的机器学习秘密!

在过去的几年中,Uber公司一直是开源机器学习技术最活跃的贡献者之一。虽然像谷歌或Facebook这样的公司已经将他们的贡献集中在新的深度学习堆栈上,如TensorFlow、Caffe2或PyTorch。而Uber公司的工程团队真正专注于在现实世界中大规模构建机器学习的工具和最佳实践。Michelangelo、Horovod、PyML、Pyro等技术是Uber公司对机器学习生态系统贡献的一些例子。由于只有少数公司正在开发大规模的机器学习解决方案,Uber的课程和指导对于机器学习从业者来说变得更有价值(我当然学到了很多,并经常写有关优步的努力)。

最近,Uber公司的工程团队发布了对Michelangelo(米开朗基罗)机器学习平台运营前三年的评估报告。如果我们去掉Michelangel的所有细节,Uber公司的报告表明,得到了一些并不显著却具有价值的经验和教训,从组织机器学习之旅开始。我将尝试采用更通用的方式总结一些关键要点,这些方法可适用于任何主流机器学习场景。

https://eng.uber.com/scaling-michelangelo/

什么是Michelangelo?

Michelangelo是优步公司机器学习堆栈的核心部分。从概念上讲,Michelangelo可以被视为Uber公司内部机器学习工作负载的机器学习即服务(ML-as-a-Service)平台。从功能的角度来看,Michelangelo在机器学习模型生命周期的不同方面实现自动化,允许不同的Uber公司的工程团队大规模构建、部署、监控和操作机器学习模型。具体来说,Michelangelo在一个非常复杂的工作流程中抽象出机器学习模型的生命周期:

经验教训帖:一起去揭开Uber式的机器学习秘密!

Michelangelo背后的架构使用基于HDFS、Spark、Samz、Cassandra、MLLib、XGBoost和TensorFlow等现代技术但复杂的堆栈。

经验教训帖:一起去揭开Uber式的机器学习秘密!

Michelangelo为Uber公司的不同部门提供数百种机器学习方案。例如,Uber Eats使用在Michelangelo机器学习平台上运行的机器学习模型来对餐馆推荐进行排名。同样,Uber公司应用程序中难以置信的精确估计到达时间(ETA)是使用在Michelangelo平台运行的非常复杂的机器学习模型计算的,这些模型逐段估算估计到达时间(ETA)。

为了在数十个数据科学团队和数百个模型中实现这种级别的可扩展性,Michelangelo需要提供非常灵活和可扩展的架构以及相应的工程流程。Michelangelo的第一个版本在2015年部署,三年中在部署了数百个机器学习模型之后,Uber公司得到了一些重要的经验教训。

(1)训练和开发需要有自己的基础设施

如果你正在构建单个模型,那么很有可能利用相同的基础设施和工具进行训练和开发。如果要构建一百个模型,则该方法不起作用。Uber公司的Michelangelo使用名为Data Science Workbench(DSW)的专有工具集来训练大型GPU集群和不同机器学习工具包的模型。除了一致的基础设施之外,Michelangelo的DSW抽象出机器学习训练过程的常见任务,如数据转换和模型组合等。

https://eng.uber.com/dsw/

(2)需要监控多个模型

我在这个领域中的一位导师表示,"做出愚蠢预测的模型比根本不能预测的模型更糟糕。"即使对训练和评估数据执行得无懈可击的模型,当面对新的数据集时,也会做出愚蠢的预测。从这个角度来看,模型监控和仪表是现实世界机器学习解决方案的关键组成部分。Uber公司的Michelangelo配置机器学习模型以记录生产中的预测,然后将它们与实际情况进行比较。此过程会生成一系列精度指标,可用于评估模型的性能。

(3)数据是最难实现的事情

在机器学习解决方案中,数据工程师花费大量时间在数据集上运行提取和转换例程,以选择随后由训练和生产模型使用的特征。Michelangelo简化这一过程的方法是建立一个通用的功能库,允许不同的团队在他们的模型中共享高质量的功能。同样,Michelangelo提供监测工具来评估特定功能。

(4)机器学习应该作为软件工程过程来衡量

我知道这听起来微不足道,但远非如此。大多数组织都将其机器学习工作与其他软件工程任务区分开来。确实很难使传统的敏捷或瀑布流程来适应机器学习解决方案,但是有很多与机器学习领域相关的软件工程实践。Uber公司强调机器学习是一个软件工程过程的观点,并为Michelangelo提供了一系列工具来强制执行机器学习模型的正确生命周期。

版本控制、测试或部署是Uber公司的Michelangelo严格执行的一些软件工程方面。例如,一旦Michelangelo认识到模型就像编译软件库,它就会在严格的版本控制系统中跟踪模型的训练配置,就像控制库的源代码一样。同样,Michelangelo运行全面的测试套件,在将模型部署到生产环境之前对模型进行评估,以确保其正确运行。

(5)实现自动化

在机器学习解决方案中,微调和优化超参数是一个永无止境的任务。很多时候,数据科学工程师花费更多的时间来找到正确的超参数配置,而不是构建模型本身。为了应对这一挑战,Uber公司的Michalangelo推出了一种名为AutoTune的优化即服务工具,该工具使用最先进的黑盒贝叶斯优化算法来更有效地搜索最佳的超参数集。Michalangelo的AutoTune的想法是使用机器学习来优化机器学习模型,使数据科学工程师能够将更多时间集中在模型的实现而不是优化。

从机器学习的角度来看,Uber公司可以被认为是世界上最丰富的实验室环境之一。Uber公司的数据科学家处理的任务规模和复杂程度在业内首屈一指。Michalangelo运营前三年的情况表明,实施大规模机器学习解决方案仍然是一项非常复杂的工作。从Michalangelo那里学到的经验教训是组织开始他们的机器学习之旅的一个令人难以置信的见解来源。

经验教训帖:一起去揭开Uber式的机器学习秘密!

文章来源:https://towardsdatascience.com/doing-machin

相关推荐