优步正悄悄地组建市场上强大的开源深度学习栈

全文共3285字,预计学习时长10分钟

人工智能一直都是非典型的科技趋势。在传统的科技循环中,创新一般始于想颠覆行业现状的初创公司。

但在人工智能业态中,大部分创新发端于大型企业,如谷歌,脸书,优步还有微软。这些企业不仅仅在研究领域独占鳌头,而且定期开源新的框架和工具,从而简化了人工智能技术的应用。

在这样的境况下,优步已成长为当前人工智能技术大环境下最为活跃的开源贡献者之一。

于人工智能而言,优步是一个近乎完美的试验场。优步把大型科创公司所有传统人工智能的要求,和人工智能优先交通方案的见证相结合。优步进而创建了许多机器(深度)学习应用,从用户分类到自动驾驶汽车,遍布各种实际场景。优步所使用的很多技术都是开源的,并且从机器学习社群那里获得广泛的好评。

短短几年的时间,优步就在人工智能领域内开发了不同的项目。以下是小芯整理的一些,供大家参考学习:

注意:我不会涉及Michelangelo和PyML(注:两者均为优步推出的机器学习平台。)这样的机器学习平台,因为它们都是开源的且有详细介绍。

Ludwig:一个为非代码机器学习模型而生的工具箱

Ludwig是一个基于TensorFlow的工具箱,它支持非代码情景下的深度学习模型训练和测试。原则上,Ludwig是根据五个基本原则创建的:

·    无需代码:不需要任何编码技术来训练一个模型,以及使用它得到预测结果。

·    普适性:一种新的基于数据类型的深度学习模型设计方法,使该工具可用于许多不同的情境。

·    灵活性:熟练的用户可以对模型构建及训练有高度的控制,与此同时,对新手也很友好。

·    扩展性:易于添加新的模型架构和新特性数据类型。

·    可理解性:深度学习模型的内核通常被认为是黑盒子,但是Ludwig提供了标准可视化帮助用户理解它们的性能,以及比较这些预测。

Ludwig让数据科学家训练深度学习模型变得更为简单,只需要提供包含训练数据的CSV文件,以及包含模型输入和输出数据的YAML文件。有了这两个数据点,Ludwig就可以执行多任务学习路径,同时预测所有的输出,并评估这些结果。针对这些结果,Ludwig还提供一系列的深度学习模型,这些模型不断得到评估,并且可以组件成最终的架构。优步工程团队用这样一个比喻来解释这个过程:“如果说深度学习库提供的是建造高楼的石料,那么Ludwig提供的就是建造你城市的楼宇。你可以在这些现有的建筑中进行选择,或者添加上你自己的房屋。”

Pyro:一种本地概率编程语言

Pyro是一种深度概率编程语言(PPL),由优步人工智能实验室发布。Pyro建立在PyTorch之上,它基于四个基本原则:

·    通用的:Pyro是一个通用概率编程语言,它可以代表任何可计算的概率分布。这是如何做到的?从具有迭代和递归的通用语言开始(任意Python代码),然后添加随机抽样、观察和推断。

·    可伸缩的:Pyro可以扩展为大型的数据集,所花费的不过比手写代码多那么一点而已。如何做到?通过构建现代黑盒优化技术,利用小批量数据进行近似推理。

·    最小化的:Pyro是敏捷且可维护的。如何做到?Pyro是由强大的、可组合抽象的小核心支持的。只要条件允许,繁重的工作都会交给PyTorch和其他的库来完成。

·    灵活的:需要自动化的时候,Pyro就可以自动化;当想自己掌控全局的时候,Pyro也可以满足该需求。如何做到?Pyro使用高级抽象表达生成和推理模型,同时支持专家轻松定制推理过程。

但这些原则经常将Pyro的应用拉向相反的方向。例如,通用性要求允许在Pyro程序中使用任意的控制结构,但这种通用性使其难以扩展。然而,总的来说Pyro在这些原则之间达到了完美的平衡,这也使其成为现有应用程序首选的概率编程语言之一。

流形(Manifold):机器学习模型的调试和解释工具集

流形技术是用于调试和解释大规模机器学习模型的优步技术。基于此项技术,优步工程团队想要完成一些非常具体的目标:

·调试机器学习模型中的代码错误。

·了解一个模型的优缺点,无论是单独来看还是与其他模型比较。

·比较和整合不同的模型。

·通过检查和性能分析收集到的结果纳入模型迭代。

为了实现这些目标,流形将机器学习分析过程分为三个主要阶段:检查、解释和改进。

· 检查:在分析过程的第一部分,用户设计一个模型,并试图调查和比较该模型与其他现有模型。在这个阶段,用户比较典型的性能指标,如准确度、精确度/查全率和ROC曲线,以获得新模型是否优于现有模型的粗粒度信息。

· 解释:这一阶段的分析工作尝试去解释前一阶段提出的不同假设。这个阶段依靠比较分析来解释特定模型的一些症状。

· 改进:在这一阶段,用户试图把从解释中提取的知识编码到模型中并测试性能,以验证前一阶段给出的解释。

Plato构建大规模会话代理的框架

优步建立了Plato研究对话系统(PRDS),来解决构建大规模会话应用程序的挑战。从概念上讲,PRDS是一个在不同环境下创建、训练和评估会话式AI代理的框架。从功能角度来看,PRDS包括以下功能:

·    语音识别(将语音转换为文本);

·    语言理解(从文本中提取含义);

·    对话状态跟踪(迄今为止所说的和所做的信息汇总)

·    应用程序接口调用(搜索数据库,查询应用程序接口等)

·    对话决策(生成代理人反应的抽象含义);

·    语言生成(将抽象意义转换为文本)

·    语音合成(将文本转换为语音)

PRDS是基于模块化思想设计的,目的是在会话系统中纳入最新的研究成果,并不断发展平台的每个组件。在PRDS中,每个组件都可以通过交互在线或离线进行训练,并集成到核心引擎中。从训练的角度来看,PRDS支持与人和模拟用户的交互。后者通常用于研究场景中引发人工智能代理的对话,而前者更具有现场交互的代表性。

Horovod: 一个规模化的深度学习训练框架

Horovod是在社区中非常流行的优步机器学习栈之一,它已经被DeepMind或OpenAI这样的人工智能研究团队所采用。从概念上讲,Horovod是一个大规模运行分布式深度学习训练任务的框架。

Horovod利用诸如OpenMPI之类的消息传递接口堆栈,使训练任务能够在高度并行的分布式基础设施上运行,而不需要任何修改。在Horovod管理一个分布式TensorFlow训练任务只需要简单的四个步骤:

1.        hvd.init()初始化 Horovod。

2.       config.gpu_options.visible_device_list= str(hvd.local_rank())为每个TensorFlow进程分配一个 GPU。

3.       opt=hvd.DistributedOptimizer(opt)依靠Horovod优化器包装任何常规的TensorFlow优化器,它负责平均梯度使用环减。

4.       hvd.BroadcastGlobalVariablesHook(0) 将第一个进程的变量应用到其他所有进程,以确保初始化的一致性。

 

来源:Pexels

 

优步的许多开源版本都是受到他们的研究成果的启发。优步人工智能研究网站是一个现象级的论文目录,突出优步在人工智能研究方面的最新努力。

而这些只是优步工程团队贡献的一部分,已经被人工智能研究和开发社区持续采用。

随着优步继续大规模实施人工智能解决方案,我们可以看到新的创新框架简化了数据科学家和研究人员对机器学习的应用过程。

推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:刘鉴楠、王品一

相关链接:

https://towardsdatascience.com/uber-has-been-quietly-assembling-one-of-the-most-impressive-open-source-deep-learning-stacks-in-b645656ddddb

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

发布了794 篇原创文章 · 获赞 2643 · 访问量 42万+

猜你喜欢

转载自blog.csdn.net/duxinshuxiaobian/article/details/104404055
今日推荐