查看原文
其他

惊艳!Uber 的豪华开源深度学习“全家桶”

Jesus Rodriguez CSDN 2020-02-17
作者 | Jesus Rodriguez
译者 | Arvin
编辑 | 夕颜
出品 | CSDN(ID:CSDNnews)

人工智能已经成为一种非典型的技术趋势。在传统的技术周期中,创新通常始于初创公司试图颠覆行业的现有企业。就人工智能而言,该领域的大部分创新来自于谷歌、脸书、优步或微软等公司的大型企业实验室。这些公司不仅在令人印象深刻的研究方面处于领先地位,而且还定期开放源代码,以简化人工智能技术的采用。在这种背景下,优步已经成为当前生态系统中开源人工智能技术最活跃的贡献者之一。在短短几年的时间里,优步定期在人工智能生命周期的不同领域开展开源项目。今天,我想回顾一下我最喜欢的优步的几个顶级机器学习开源项目。
 
优步是人工智能技术近乎完美的游乐场。该公司将大型领头羊科技公司的所有传统人工智能需求与人工智能驱动的交通场景结合起来。因此,优步一直在从客户分类到自动驾驶汽车等各种各样的场景中构建机器/深度学习应用。优步团队使用的许多技术都是开源的,并得到了机器学习社区的赞誉。让我们来看看我最喜欢的一些。需要说明的是,我接下来不会介绍像Michelangelo或PyML这样的技术,因为它们都是开源的。

Ludwig:无代码机器学习模型的工具箱


Ludwig是一个基于TensorFlow的工具箱,无需编写代码即可训练和测试深度学习模型。从概念上讲,Ludwig是根据五个基本原则创建的:
  • 无需编码:无需编码技能即可训练模型并将其用于获取预测。
  • 通用性:一种新的基于数据类型的深度学习模型设计方法,使工具可以跨许多不同的用例使用。
  • 灵活性:经验丰富的用户对模型的建立和训练具有广泛的控制权,而新用户则会发现它易于使用。
  • 可扩展性:易于添加新的模型架构和新的特征数据类型。
  • 可理解:深度学习模型内部通常被认为是黑盒子,但是我们提供了标准的可视化来理解它们的性能并比较它们的预测。

使用Ludwig,数据科学家可以通过简单地提供一个CSV文件来训练一个深度学习模型,该文件包含了训练数据以及一个包含模型输入和输出的YAML文件。利用这两个数据点,Ludwig执行一个多任务学习例程,同时预测所有输出并评估结果。在幕后,Ludwig提供了一系列的深度学习模型,这些模型可以不断地进行评估,并可以在最终的架构中进行组合。优步工程团队使用以下类比来解释此过程:“如果深度学习库提供了建造建筑物的基础,Ludwig提供了建造城市的建材,你可以在可用的建材中进行选择,也可以将自己的建材添加到可用的集合。” 

Pyro:一种原生概率编程语言

Pyro是由优步人工智能实验室发布的一种深度概率编程语言(PPL)。Pyro建立在PyTorch之上,并基于以下四个基本原则:
  • 通用的:Pyro是一个通用的PPL -它可以表示任何可计算的概率分布。即从使用迭代和递归(任意Python代码)的通用语言开始,然后添加随机抽样、观察和推理。
  • 可拓展的:Pyro可以扩展到大型数据集,并且比手工编写的代码开销更小。即通过构建现代的黑盒优化技术,使用小批量数据进行近似推理 。
  • 最优的:Pyro是敏捷的和可维护的。即Pyro是用一个强大的、可组合的抽象的小内核实现的。只要有可能,就将繁重的工作委派给PyTorch和其他库。
  • 灵活的:Pyro的目标是在你需要时实现自动化和控制。即Pyro使用高级抽象来表达生成和推理模型,同时允许专家轻松定制推理。
 
这些原则常常将Pyro的实现拉向相反的方向。例如,通用要求在Pyro程序中允许任意的控制结构,但是这种通用性使得难于扩展。然而,总的来说,Pyro在这些功能之间实现了出色的平衡,从而成为现实应用中最好的PPL之一。

Manifold:用于机器学习模型调试和解释的工具集

Manifold是优步的技术,用于大规模调试和解释机器学习模型。有了Manifold,优步工程团队希望实现一些非常切实的目标:调试机器学习模型中的代码错误;单独或与其他模型比较,了解一个模型的优缺点;比较和集成不同的模型;将通过检查和性能分析收集到的见解合并到模型迭代中。
 
为了实现这些目标,Manifold将机器学习分析过程分为三个主要阶段:检查,解释和改进。
 
  • 检查:在分析过程的第一部分中,用户设计模型,并尝试调查模型结果并将其与其他现有结果进行比较。在此阶段中,用户将比较典型的性能指标,例如准确性,精度/召回率和接收器工作特性曲线(ROC),以粗粒度了解新模型是否优于现有模型。
  • 解释:分析过程的这一阶段试图解释上一阶段提出的不同假设。此阶段依靠比较分析来解释特定模型的某些症状。
  • 优化:在此阶段,用户尝试通过将从解释中提取的知识编码到模型中并测试性能来验证从上一阶段生成的解释。

Plato:大规模构建会话智能体的框架


优步建立了Plato研究对话系统(Plato Research Dialogue System, PRDS),以应对构建大规模会话应用的挑战。从概念上讲,PRDS是一个用于在不同环境中创建、训练和评估人工智能会话智能体的框架。从功能的角度看,PRDS包括以下组件:
语音识别(将语音转录为文本)
语言理解(从该文本中提取含义)
状态跟踪(有关到目前为止所说的和完成的操作的汇总信息)
API调用(搜索数据库,查询API等)
对话政策(生成代理响应的抽象含义)
语言生成(将抽象含义转换为文本)
语音合成(将文本转换为语音)
PRDS的设计考虑了模块化,以便将最新的研究纳入对话系统中,并不断发展平台的每个组件。在PRDS中,可以在线(通过交互)或离线训练每个组件,并将其合并到核心引擎中。从训练的角度来看,PRDS支持与人类和模拟用户的交互。后者通常用于在研究场景中启动人工智能对话智能体,而前者更能代表实时交互。

Horovod:大规模深度学习训练框架

Horovod是社区中非常受欢迎的优步机器学习堆栈之一,并已被DeepMind和OpenAI等AI巨头的研究团队采用。从概念上讲,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优化器,该优化器使用ring-allreduce来平均梯度。
  4. hvd.BroadcastGlobalVariablesHook(0)将变量从第一个进程广播到所有其他进程,以确保一致的初始化。

优步人工智能研究:人工智能研究的常规资源

最后,我们要特别提到的是优步对人工智能研究的积极贡献。优步的许多开源发布都受到了他们研究工作的启发。优步人工智能研究网站是一个非凡的论文目录,突出了优步在人工智能研究方面的最新成果。
 
这些是优步工程团队的一些贡献,它们经常被人工智能研究和开发社区采用。随着优步继续大规模实施人工智能解决方案,我们应该会持续看到新颖且创新的框架,这些框架可以简化数据科学家和研究人员对机器学习的采用。


本文为 CSDN 翻译,转载请注明来源出处。

原文链接:
https://towardsdatascience.com/uber-has-been-quietly-assembling-one-of-the-most-impressive-open-source-deep-learning-stacks-in-b645656ddddb
推荐阅读 
OPPO 回应“不务正业”生产口罩;旧款 iPhone 降速被罚 2500 万欧元;Angular 9.0.0 发布| 极客头条
“瘟疫”笼罩下的物联网危与机
JavaScript 造就年薪超过 10 万美元的开发者们!
只需1分钟,这个网站用AI分离歌曲的人声、伴奏和乐器声
想要AI优先?数据优先才行
10 大趋势带你预见 DeFi 2020!
你点的每一个在看,我认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存