Ludwig v0.2 发布,Uber 开源 AI 工具包

Ludwig 0.2 已经发布,Ludwig 基于 Google TensorFlow 框架上的开源工具箱,用户无需再编写任何代码即可进行深度学习的开发。0.2 版本为其深度学习工具箱增加了新特性和其他改进, 包括许多新工具、引擎盖下的一些改进和 50 多个错误修复。主要包括与 Comet.ml 集成、添加了 Google 的 Bert 自然语言模型、实现音频/语音、H3(地理空间)和日期(时态)特性、对可视化 API 进行重大改进,以及包含服务功能等内容。

具体内容如下:

Comet.ml

Comet.ml 这是一个便利 AI 代码和实验管理的实用程序,特别是 DougBlank,提供了一个新的 Comet.ml 集成。它可以从统一的仪表板自动监视模型。通过可定制的面板,用户可以比较实验设计、捕获模型配置更改以及记录测试结果和细节,在模型训练时查看实时性能图表,并分析超参数以建立更好的模型。

用户只需添加 –comet 参数并配置他们的 comet.config 文件即可。

BERT 编码器

BERT 是一种基于转换器体系结构的文本数据编码模型,它是以一种自我监督的方式对大量文本数据进行训练的。在 Ludwig 的可用文本编码器列表中添加了一个 Bert 编码器,以便允许在受监督的数据很小但性能要求很高的情况下使用。这意味着从此以后,任何人都可以获得最先进的文本分类器,而无需编写一行代码。

Audio/speech 特性

音频特征的加入不仅为更多的应用打开了大门,如说话人识别和自动语音识别等,而且还为多模态任务提供了额外的信号。它们在预处理方面的工作方式类似于图像特征,因为在这两种情况下都需要指定文件路径,以便 Ludwig 可以从它们加载数据,而编码类似于序列和时间序列特征。

在默认情况下,它们被映射为一维原始信号,但短时间傅里叶变换和群延迟特征提取也可以通过改变预处理参数来实现,并获得许多语音模型中使用的经典特征。下面是如何在 YAML 模型定义中添加音频/语音功能的示例:

H3 特性

通过 H3 集成,用户可以向 Ludwig 模型提供六角形数据,而无需任何额外的操作。此外,还提供了三个新的编码器,通过编码 H3 整数的分量(模式、基本六边形和低分辨率单元),将其编码成一个潜在的表示形式。

第一个编码器,即 Embedded,嵌入每个组件,并通过对嵌入的求和来聚合它们。第二种是 weighted_sum,在第一个基础上加了学习权重来组合嵌入。第三种是 RNN,嵌入组件,使用递归神经网络将它们组合起来,遵循层次结构中从更细粒度的六边形到最细粒度的六角的顺序依赖关系。

下面是如何将H3特性添加到 YAML 模型定义文件中:

Date 特性

0.2 版本添加了一种简单的方法来支持 Ludwig 中的日期和时间戳。此功能允许用户将发生在某一天或某一特定时间的事件输入到 Ludwig,以获得关于它们的预测。另外还为日期提供了两个编码器:第一个,embed,独立嵌入每个组件,然后连接得到的表示;第二个,wave,用一个周期函数对每个分量进行编码,并将结果连在一起。

下面是如何向 YAML 模型定义文件中添加日期特性的示例:

服务器

0.2 版允许用户直接将经过训练的模型服务到核心的 Ludwig 库中,官方采用了 FastAPI 库来生成一个 REST 服务器,该服务器可以被查询以获得预测。

为了直接向 Ludwig 提供经过培训的模型,用户只需运行:

然后,他们将能够查询模型以获得如下预测:

可视化 API

解决可视化问题,提供一个选项来指定一个输出路径,在其中保存图幅,而不是在一个新窗口中显示它们。这种功能可以这样使用:

解决可视化问题的第二种方法是在 API 中提供函数,这些函数可以在笔记本中以编程方式调用。以前通过命令行可用的每个函数现在也可以通过 API 获得。以下是一个例子:

为了添加此功能,官方重构了所有的可视化代码,使其更加清晰、封装更好、更易于测试。

spaCy 预处理

在这个新版本中,还引入了向平台核心库提供经过培训的人工智能模型的能力,它还添加了意大利语、西班牙语、德语、法语、葡萄牙语、荷兰语、希腊语和多语言标记(开放源码 spacy nlp 库的最新版本)。

以上是主要的更新内容,详情见发布说明

猜你喜欢

转载自www.oschina.net/news/108596/ludwig-v-0-2-released