Ludwig 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Ludwig 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议: Apache
开发语言: Python
操作系统: 跨平台
开发厂商: Uber
收录时间: 2019-05-12
提 交 者: 红薯

网约车服务商 Uber 开源并发布了它们开发的 Ludwig,这是一款基于 Google TensorFlow 框架上的开源工具箱。藉由 Ludwig,用户无需再编写任何代码即可进行深度学习的开发。

 

Ludwig Screenshots

在过去的十年中,人们证明了深度学习在视觉、语音和语言方面执行各种各样的机器学习任务非常有效。Uber 将这些深度学习模型用于各种任务,包括客户支持、对象检测、改进地图、简化聊天沟通、预测和防止欺诈。

现在有很多开源库,包括 TensorFlow、PyTorch、CNTK 和 Chainer 等,已经实现了构建此类模型所需的构件,从而可以进行更快、更不易出错的开发。而这些反过来又推动了机器学习研究界和行业从业者采用这种模型,从而在架构设计和行业解决方案方面取得了快速的进展。

Uber AI 决定避免重新发明轮子,在开源库所提供的强大基础之上开发软件包。为此,Uber AI 于 2017 年发布了 Pyro,这是一种基于 PyTorch 的深度概率编程语言,并借助开源社区的力量继续改进。Uber 开发的另一个主要开源人工智能工具是 Horovod,这是由 LF 深度学习基金会(LF Deep Learning Foundation)托管的一个框架,允许在多个 GPU 和多台机器上对深度学习模型进行分布式训练。

Uber 在 TensorFlow 的基础上开发了一款开源深度学习工具箱,命名为 Ludwig,允许用户在无需编写代码的情况下即可训练并测试深度学习模型。

Ludwig 的独特之处在于它能够帮助非专家更容易地理解深度学习,并为经验丰富的机器学习开发者和研究人员提供更快的模型改进迭代周期。通过使用 Ludwig,专家和研究人员可以简化原型设计过程及数据处理,这样他们就可以专注于开发深度学习体系架构,而不是深陷数据整理。

Ludwig

在过去两年里,为了简化应用项目中深度学习模型的使用,因为它们通常需要在不同架构和快速迭代之间进行比较,Uber 内部一直在开发 Ludwig。Uber 已经见证了 Ludwig 对 Uber 自有的几个项目带来的价值,包括人工智能客服助理平台(Customer Obsession Ticket Assistant ,COTA)、驾照的信息提取、司乘之间对话兴趣点的识别、送餐速度预测等等。出于这些原因,Uber 决定开源并发布 Ludwig,因为他们认为目前还没有任何其他解决方案具有相同的易用性和灵活性。

Uber 最初将 Ludwig 设计为通用工具,用于在处理新的应用机器学习问题时简化模型开发和比较过程。为实现这一目标,Uber 从其他机器学习软件汲取了灵感:Weka 和 MLlib,它们直接处理原始数据并提供一定数量的预构建模型的想法;Caffe 定义文件的声明性;scikit-learn,一套简单的编程 API。这些灵感混合在一起,使得 Ludwig 迥异于常见的深度学习库,后者提供张量代数(tensor algebra)原语和很少的其他工具来编码模型,同时使 Ludwig 比 PyText、StanfordNLP、AllenNLP 和 OpenCV 等其他专业库更加通用。

Ludwig 提供了一组模型架构,这些架构可以组合在一起,为给定的用例创建端到端模型。打个比方,如果说深度学习库为你的建筑提供了构建块,那么 Ludwig 就相当于构建城市的构建块,你可以选择可用的建筑物或你自己的建筑物添加到可用的建筑中。

Uber 在 Ludwig 工具箱中提出的核心设计原则是:

  • 无需编码:该工具无需编码技能即可训练模型并将其用于获取预测。
  • 通用性:一种新的基于数据类型的深度学习模型设计方法,使该工具可用于许多不同的用例。
  • 灵活性:经验丰富的用户可以对模型构建和训练进行广泛的控制,而对新手而言,该工具易于使用。
  • 可扩展性:该工具易于添加新的模型架构和新的特征数据类型。
  • 可理解性:深度学习模型内部通常被认为是 “黑盒”,但 Uber 提供了标准的可视化来理解它们的性能并比较它们的预测。

Ludwig 允许用户通过仅提供包含数据的表格文件(如 CSV)和 YAML 配置文件来训练深度学习模型,YAML 配置文件指定表格文件的哪些列是输入特征,哪些列是输出目标变量。配置文件的简单性可以加快原型设计速度,从而有望将编码时间减少到几分钟。如果指定了多个输出目标变量,Ludwig 将执行多任务学习,学习同时预测所有的输出,而这通常需要定制代码。

模型定义可以包含附加信息,尤其是数据集中每个特征的预处理信息,用于每个特征的编码器或解码器,每个编码器和解码器的架构参数以及训练参数。预处理、训练和各种模型架构参数的默认值是依据 Uber 的经验选择的,或者是根据学术文献改变的,这样新手就可以轻松训练复杂的模型。同时,在模型配置文件中分别设置每一项的能力,为专家提供了充分的灵活性。使用 Ludwig 训练的每个模型都将会被保存,并且可以在以后加载来获得对新数据的预测。比如,模型可以被加载到服务环境中,这样就可以在软件应用中提供预测。

image

图 1:可以在 Ludwig 的模型描述文件中指定几个输入和输出特征,它们的组合涵盖了许多机器学习任务。


Ludwig 引入的主要新思想是数据类型特定编码器和解码器的概念,这为 Uber 带来了高度模块化和可扩展的架构:支持的每种数据类型(文本、图像、类别等)都有特定的预处理功能。简言之,编辑器将原始数据映射到张量,而解码器则将张量映射到原始数据。

通过这种设计,用户可以访问组合器(架构的胶合组件),他们组合了来自所有输入编码器的张量,并进行处理,然后返回用于输出解码器的张量。例如,Ludwig 的默认合并多个数据组合器连接不同编码器的输出,将它们传递到完全连接的层,并提供最终激活作为输出解码器的输入。其他组合器可用于其他用例,通过实现简单的函数接口即可轻松添加更多的组合器。

通过组合这些特定于数据类型的组件,用户可以在各种任务上构建 Ludwig 训练模型。例如,通过组合文本编码器和类别编码器,用户可以获得文本分类器;而组合图像编码器和文本解码器则可获得图像字幕模型。

每种数据类型可以有多个编码器和解码器。例如,文本可以使用卷积神经网络(CNN)、递归神经网络(RNN)或其他编码器进行编码。然后,用户可以直接在模型定义文件中指定要使用的参数及超参数,而无需编写任何代码。

这种灵活多样的编码器 - 解码器架构使经验不足的深度学习从业者能够轻松地训练各种机器学习任务的模型,例如文本分类、对象分类、图像字幕、序列标记、回归、语言建模、机器翻译、时间序列预测和问答系统等。这就开启了各种用例,而这些用例对毫无经验的从业者而言通常是遥不可及的,并且还允许在一个领域中有经验的用户去接触新的领域。

目前,Ludwig 包含了二进制值、浮点数、类别、离散序列、集合、包、图像、文本和时间序列的编码器和解码器,以及加载一些预训练的模型(例如词嵌入)的功能。Uber 还计划在未来版本中继续扩展支持的数据类型。

除了可用性和灵活的架构外,Ludwig 还为非程序员提供了额外的好处。Ludwig 集成了一组用于训练、测试模型和获取预测的命令行实用程序。为了进一步提高可用性,工具箱还提供了一套编程 API,用户可以只需几行代码即可训练和使用模型。

此外,它还包括一套其他工具,用户评估模型,通过可视化来比较它们的性能和预测,并从中提取出模型权重和激活。

最后,通过使用开源分布式训练框架 Horovod,在多个 GPU 上以本地和分布式的方式训练模型,这一做法使得在模型上迭代和快速获得结果成为可能。

介绍内容来自 InfoQ

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

Ludwig 的相关博客

Uber发布史上最简单的深度学习框架Ludwig!

昨日,Uber官网重磅宣布新开源深度学习框架Ludwig,不需要懂编程知识,让专家能用的更顺手,让非专业人士也可以玩转人工智能,...

Linux安装并使用Ludwig训练模型

一、在Python3环境安装Ludwig:   1、使用pip安装:pip install ludwig   2、源码编译安装:     git clone git@git...

虽然我不会写代码,但是搞定深度学习和人工智能只是小菜一碟

人工智能、深度学习、爬虫算法、架构框架、Java、PHP、C++……听起来好像都很厉害的样子,但是如果我不是一名程序员,不会写代...

机器学习平台和深度学习平台

谷歌公司推出一款机器学习的平台(AutoML(可视化工具(AutoML Vision)))新推出两个功能 :自然语言处理 AutoML Natural L...

MySQL总结

如何完整卸载MySQL http://blog.csdn.net/ludwig_/article/details/52634587 MySQL5.7.17安装及配置图文教程 http://www.jb5...

计算机完全卸载mysql

编写时间:15:07:02(2018年9月23日) 1.停止mysql服务。   “运行”——>“cmd”——>输入“net stop mysql;”      看...

上市的Uber背后有哪些强大的开源项目

当地时间5月10日上午,出行巨头Uber在纽交所挂牌上市,Uber崛起背后的技术文化,也是众多专家们研究的对象之一,本文将和大家...

《逻辑的乐趣》—趣味十足的BBC纪录片

今天给大家推荐一部BBC的纪录片——《逻辑的乐趣》(The Joy of Logic), 逻辑不仅影响各领域学科的发展,也深刻影响着人类的...

C语言注释符号

同学们认为注释很简单,那我来看看下面的代码是否正确? 1.似是而非的问题 1 int main() 2 { 3 int/*...*/i; 4...

Ludwig 的相关问答

还没有任何问答,马上提问

评论 (2)

加载中
支持
2019/05/14 15:50
回复
举报
..
2019/05/14 10:48
回复
举报
更多评论
2 评论
85 收藏
分享
返回顶部
顶部