Ludwig TensorFlow 框架的开源工具箱

开源网站开源项目 24-06-18 10:50:41

网约车服务商 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

[Ludwig TensorFlow 框架的开源工具箱]相关推荐
PHPEMS PRO 在线模拟考试系统

PHPEMS PRO 在线模拟考试系统

PHPEMS面向企业的版本,精简了功能,添加了redis和分库支持。 PHPEMS在线模拟考试系统主要用于构建在线考……...

SysBench 性能测试工具

SysBench 是一个基于 LuaJIT 的可编写多线程基准测试工具。它最常用于数据库基准测试,但也可用于创建不……...

BusyBox Unix常用工具包

BusyBox Unix常用工具包

BusyBox 是一个集成了一百多个最常用 linux 命令和工具的软件。BusyBox 包含了一些简单的工具,例如 ls……...

ACE 面向对象的网络开发包

ACE 面向对象的网络开发包

ACE 是一个面向对象的工具开发包,它实现了通信软件的基本设计模式。ACE面向在UNIX和Win32平台上开发高性……...

Forge TLS 协议的本地实现

Forge 是一个 TLS 协议的本地实现,一个实用的加密程序以及一组利用多网络资源开发 Web 应用的工具。 Tra……...

今日开源
  1. ZYS 高性能服务框架

    ZYS 高性能服务框架

    核心特性 1.基于swoole提供分布式服务器通讯服务2.基于thrift提供rpc远程调用服务3.基于HTML5提供在线网络直播平台服务4.基于swoole提供同步异步数据库连接池服务5.基于swoole提供异步任务服务器6.基于vmstat提供……

    开源软件 2024-06-30

  2. Knative 基于 Kubernetes 与 Istio 的 Serverless 架构方案

    Knative 基于 Kubernetes 与 Istio 的 Serverless 架构方案

    Knative(发音为 kay-nay-tiv)是谷歌开源的一套 Serverless 架构方案,它扩展了 Kubernetes,提供了一组中间件,提高了构建可在本地、云和第三方数据中心等地方运行的现代化、以源为中心且基于容器的应用的能力。……

    开源软件 2024-06-30

  3. Untangle Linux安全网关模块

    Untangle Linux安全网关模块

    Untangle Gateway 是一个Linux下开源的的网关模块,支持垃圾过滤、URL阻截、反病毒蠕虫等多种功能,详细的屏幕截图请看下面链接: http://untangle.com/index.php?option=com_content&task=view&id=242&am……

    开源软件 2024-06-30

返回顶部小火箭