用Uber的方式管理机器学习模型
每一天,Uber公司在全球700个城市规划出数百万次行程,而由此产生的关于交通、首选路线、预计到达/送货时间以及下车地点的信息,则让Uber得以为客户提供更加顺畅的乘车体验。
通过访问来自出租车、驾驶员以及用户的丰富数据集,Uber一直在投资机器学习与人工智能技术以增强自身业务。优步AI实验室由ML研究人员以及众多从业者组成,他们负责将最先进的机器学习技术与优势成果转化为Uber的核心业务。从计算机视觉到会话型AI,再到识别与感知,Uber公司已经成功将ML与AI融入其共享出行平台当中。
自2017年以来,Uber方面一直在分享与机器学习模型的构建、部署以及管理相关的最佳实践。他们使用的一系列内部工具与框架都建立在高人气开源项目基础之上,具体包括Spark、HDFS、Scikit-learn、NumPy、Pandas、TensorFlow以及XGBoost。
Michelangelo 是一套机器学习平台,通过端到端系统对各个团队的工作流程与工具进行标准化。它的出现,使得整个公司的开发人员与数据科学家都能够轻松实现机器学习系统的大规模构建与操作。
Michelangelo构建于一系列开源组件之上,包括HDFS、Spark、Samza、Cassandra、MLLib、XGBoost以及TensorFlow。其利用Uber的数据与计算基础设施构建而成,提供的数据湖足以存储Uber的全部交易与记录数据,Kafka以中间人的形式汇集所有Uber服务记录——包括Samza流式计算引擎、托管Canssandra集群以及Uber的其它内部服务供应与部署工具等等。
Michelangelo主要负责实现典型机器学习工作流程中的以下六个阶段:
1. 管理数据
2. 训练模型
3. 评估模型
4. 部署模型
5. 做出预测
6. 监测预测
这套平台拥有一个数据湖,可供模型在训练与推理期间进行访问。通过指预测与在线推理,应用程序将能够访问其集中数据存储。
Michelangelo为训练中的ML模型提供标准算法,个人开发者与团队也都可以轻松向该平台添加新的算法。在部署模型之前,其会根据各种指标及参数对模型的准确性做出评估。Michelangelo通过UI或API提供端到端的模型部署管理支持。其能够将所部署的每个模型用于在线及离线预测,或者作为与移动应用程序相集成的库。该平台会持续监测预测结果的准确性与速度,从而在必要时触发重新训练。
Michelangelo的用户能够直接通过Web UI、REST API以及监控与报警工具处直接同该平台的组件进行交互。
Uber公司通过PyML对Michelangelo项目进行了扩展,使得Python开发人员能够更轻松地完成模型训练与部署。PyML是一个用于处理Michelangelo流水线的高级API,使得团队能够独立于Michelangelo之外提供独立的自定义算法、框架、工具以及依赖项。
虽然Uber方面并没有开源Michelangelo,但发布了相关说明文档,其中记录了关于实现可扩展机器学习流水线的设计思路与最佳实践。
>>>Horovod——用于TensorFlow的分布式深度学习框架
Horovod 是一套利用GPU资源用于TensorFlow、Keras、PyTorch以及MXNet的分布式训练框架。Uber公司已经开源了Horovod并将其转交给LF AI——Linux基金会下辖的另一机构。顺带一提,LF AI主要关注人工智能、机器学习以及深度学习类项目的运营。
通过将对代码内容的修改量控制在最低水平,Horovod优化了跨多GPU的模型训练方式,其支持目前各类高人气深度学习框架,包括TensorFlow、Keras、PyTorch以及Apache MXNet等。
Uber方面还扩展了百度公司在多GPU上实现的分布式训练成果。百度最初的方案强调了将标准高性能计算技术引入深度学习这一基本想法。
Horovod还与英伟达集合通信库(NCCL)相集成,用以支持跨多个GPU与多台机器的深度学习模型分布式训练。Horovod公开的API能够与各类主流深度学习框架共同配合使用。
Uber的Horovod项目目前以开源形式通过Github 公开交付。
>>>Ludwig——无代码深度学习工具箱
Ludwig 是Uber旗下最有趣的机器学习项目。这是一套开源深度学习工具箱,以TensorFlow为基础构建而成,允许用户有无需编写代码的前提下实现深度学习模型的训练与测试。
Ludwig是一套AutoML平台,其提供一组模型架构集合;用户可以将这些架构组合起来,从而为特定用例创建端到端模型。该工具箱要求将数据集格式化为一个逗号分隔值(CSV)文件,外加一个用于对特征、标签以及训练参数进行描述的YAML文件。Ludwig还提供一个简单的Python API,允许开发人员借此实现模型的训练或加载,以及获取关于新数据的预测结果。
该工具箱支持文本分类、机器翻译、情绪分析、图像分类、图像字幕用例以及其它多种场景。
Ludwig在构建之初即考虑到可扩展性原则,基于数据类型抽象,能够轻松添加对新数据类型以及新模型架构的支持。从业者可以利用它快速训练并测试深度学习模型,允许研究人员通过强大的基准进行性能比较,并提供实验设置选项以通过执行标准数据预处理及可视化确保可比较性。
Ludwig开源项目已经在 Github上公开发布。
{"weixin":{"label":"微信","name":"weixin","selected":true,"value":true,"sortid":"1","shareid":"weixin","sharetitle":"分享到微信","event":"shareToWeiXin","lang":"shareWeb_WeiXin"},"copy":{"label":"复制网址","name":"copy","selected":true,"value":true,"sortid":"2","shareid":"copy","sharetitle":"复制网址","event":"copy_url","lang":"shareWeb_Copy"},"qq":{"label":"QQ好友","name":"qq","selected":true,"value":false,"sortid":"1","shareid":"qq","sharetitle":"分享到QQ","event":"shareToQQ","lang":"shareWeb_QQ"},"sina_weibo":{"label":"新浪微博","name":"sina_weibo","selected":true,"value":true,"sortid":"4","shareid":"sina_weibo","sharetitle":"分享到新浪微博","event":"shareToSinaWB","lang":"shareWeb_SinaWeiBo"},"qq_zone":{"label":"QQ空间","name":"qq_zone","selected":true,"value":true,"sortid":"5","shareid":"qq_zone","sharetitle":"分享到QQ空间","event":"shareToQzone","lang":"shareWeb_QQZone"},"renren":{"label":"人人网","name":"renren","selected":true,"value":true,"sortid":"7","shareid":"renren","sharetitle":"分享到人人网","event":"shareToRenren","lang":"shareWeb_RenRen"},"douban":{"label":"豆瓣网","name":"douban","selected":true,"value":true,"sortid":"8","shareid":"douban","sharetitle":"分享到豆瓣网","event":"shareToDouban","lang":"shareWeb_DouBan"},"baidu_tieba":{"label":"百度贴吧","name":"baidu_tieba","selected":true,"value":true,"sortid":"10","shareid":"baidu_tieba","sharetitle":"分享到百度贴吧","event":"shareToTieba","lang":"shareWeb_TieBa"},"Facebook":{"label":"Facebook","name":"Facebook","selected":true,"value":true,"sortid":"11","shareid":"Facebook","sharetitle":"分享到FaceBook","event":"shareToFacebook","lang":"shareWeb_Facebook"},"Twitter":{"label":"Twitter","name":"Twitter","selected":true,"value":true,"sortid":"12","shareid":"Twitter","sharetitle":"分享到Twitter","event":"shareToTwitter","lang":"shareWeb_Twitter"},"LinkedIn":{"label":"LinkedIn","name":"LinkedIn","selected":true,"value":true,"sortid":"13","shareid":"LinkedIn","sharetitle":"分享到linkedIn","event":"shareToLinkedin","lang":"shareWeb_Linkedin"},"whatsapp":{"label":"whatsapp","name":"whatsapp","selected":true,"value":true,"sortid":"15","shareid":"whatsapp","sharetitle":"分享到whatsapp","event":"shareToWhatsapp","lang":"shareWeb_whatsapp"},"line":{"label":"line","name":"line","selected":true,"value":true,"sortid":"15","shareid":"line","sharetitle":"分享到line","event":"shareToLine","lang":"shareWeb_line"},"qq_weibo":{"label":"腾讯微博","name":"qq_weibo","selected":true,"value":true,"sortid":"3","shareid":"qq_weibo","sharetitle":"分享到腾讯微博","event":"shareToQQwb","lang":"shareWeb_QQWeiBo"},"peopleBlog":{"label":"人民微博","name":"propleBlog","selected":true,"value":true,"sortid":"14","shareid":"propleBlog","sharetitle":"分享到人民微博","event":"shareToPeopleBlog","lang":"shareWeb_peopleBlog"}}