2019年2月,优步发布Ludwig,一个开源的、免代码的深度学习(DL)工具箱这为非程序员和高级机器学习(ML)实践者提供了为各种DL任务开发模型的能力。通过使用跨越文本分类、自然语言理解、图像分类和时间序列预测等领域的用例,Ludwig为用户提供了轻松训练和测试DL模型的能力,以及调整参数以探索架构、比较模型和改进性能的能力。
今天,我们很兴奋地发布了Ludwig版本0.3,它提供了几个更新,将我们的框架带到下一个级别。在路德维希不断增长的用户和贡献者社区的帮助和支持下,并与斯坦福大学的合作Hazy雷竞技是骗人的Research小组,我们的团队开发了新功能,提高了Ludwig的架构,扩展了其自动化机器学习(Automl)功能,为用户提供了更多选项,并克服了以前的限制版本0.2。
版本0.3的路德维希船带有:
- 一种高参数优化机制,挤压模型的额外性能。
- 无代码集成拥抱脸s变形金刚存储库,让用户访问最先进的预先训练的模型GPT-2那T5.那电器, 和DistilBERT用于自然语言处理任务,包括文本分类、情感分析、命名实体识别、问答等。
- 一个新的,更快的,模块化和可扩展的后端基于Tensorflow 2.。
- 支持许多新的数据格式,包括TSV,Apache Parquet,JSON和JSONL。
- 盒子外面k-fold交叉验证能力。
- 与之集成重量和偏见用于监控和管理多个模型培训过程。
- 一种新的矢量数据类型,支持弱监督的噪声标签。
模块化是这个版本的主要主题:一个新的后端,改进了代码结构,允许增强可扩展性,使添加新的编码器、新的数据格式、新的集成和新的特性类型更加容易。采用相同的模块化原理设计了新的hyperopt特征,便于添加新的采样器和执行器。所有这些改进使Ludwig成为一个比以前版本更好的平台,并且为将来的扩展和改进打下了更坚实的基础。
我们非常感谢开源社区的许多贡献,并鼓励其他人参与Ludwig为未来版本的发展。
Hyperparameter优化
深度学习模型通常有几个hyperparameters相关培训过程(如学习速率或优化器使用),模型的维度体系结构(如层数或过滤器),甚至架构选择本身(如是否使用变压器或复发性网络编码文本输入)。在数据集上寻找产生最佳性能的参数是一项耗时的工作,可以通过超参数优化技术自动化。
为此,我们引入了一个新命令,hyperopt,基于用户的期望配置和超参数执行自动化的Hyper参数优化。在Ludwig风格中,键入的Quand参数是键入的,这些类型会影响它们将如何进行采样和优化。支持的Quand参数类型是漂浮那int, 和类别。要从配置中设置HyperParameter的值,用户可以使用点表示法(例如。training.learning_rate那utterance.num_layers或training.optimizer.type)。
例如,可以通过指定其最小值,最大值和比例来定义浮动超级参数,例如:
可以通过指定仅限最小值和最大值来定义int zervandameter,例如:
类别超参数可以通过指定一组可能的值来定义,例如:
此外,用户可以指定他们想使用的超参数优化采样器以及他们想如何执行他们的优化。路德维希目前支持网格那随机的,和Pysot.策略,后者利用Pysot.使用贝叶斯优化策略,并可以按串行顺序在本地执行优化,并行执行优化,或在集群上使用纤维,优步的开源分布式计算库。
最后,用户可以通过描述该功能和度量来指定优化的度量标准:
下面是如何利用Ludwig新的超参数优化特性的完整示例:
为了在给定模型上执行封路数据计优化,用户只需运行:
超参数优化的输出可以通过两个新的可视化命令进行可视化:hyperopt_report.对于可视化的性能分布在个别和对超参数和hyperopt_hiplot.用于比较所有参数组合。

超级计数器优化架构易于扩展,我们计划在不久的将来与额外的采样器和执行者集成,如RayTune。
由于Kaushik Bokka,Jiale Zhi和David Erilsson的贡献,Ludwig版本0.3具有比上述示例更多的参数。了解有关官方Ludwig中的新版本的HyperParameter优化功能的更多信息用户指南。
变形金刚
近年来,使用预训练的变压器对于ML模型开发,在许多自然语言处理任务中引入了大量改进。在Ludwig版本0.2中,我们引入了对伯特的支持,这是一种预训练的变压器。在版本0.3中,我们通过添加集成来扩展此功能拥抱脸s变形金刚存储库使用户能够在其集合中访问和微调任何变压器模型。
这是一个示例输入功能:
input_features:
此功能使任何人都可以培训艺术NLP模型的状态而不撰写任何代码,并且由于Avanika Narayan的贡献和拥抱脸部团队的支持而成为可能。有关新文本编码器的更多详细信息,请检查用户指南。
新的后端
在这个释放中,Ludwig在引擎盖下发生了很多变化。最初,Ludwig围绕Tensorflow 1设计及其图形抽象范例。释放后Tensorflow 2.,它允许一种命令式编程范式,并围绕面向对象原则对api进行了大大改进的重构,我们决定完全移植Ludwig以利用这些改进。不幸的是,范式的转变意味着路德维希的一些组件必须从头开始重写。尽管如此,路德维格0.3版发布了一个改进的、更模块化的、更易于扩展的基于TensorFlow 2的后端,提供了更大的灵活性。
现在,用户只需扩展TensorFlow 2层对象和相应的输出尺寸即可通过简单地编写自己的编码器和解码器:
除了简化模型组件的定义外,(例如,编码器,解码器和组合器),Ludwig的新TensorFlow 2后端使用户可以轻松分享其预磨削的模型和模块。在未来,我们打算通过启动模型集线器来制作更易于访问的模型共享。我们将保留社区发布此令人兴奋的新增添加!
新的数据格式
到目前为止,Ludwig的一个主要限制是,当使用编程api时,它只支持CSV文件作为输入格式和Pandas DataFrames。在0.3版中,我们增加了对许多新的流行数据格式的支持:内存格式字典那excel.那羽毛那FWF.那hdf5那HTML.表,json那jsonl.那par那泡菜那情景应用程序那SPSS.那萨拉纳和TSV.。
用户可以使用CLI接口和程序化API中的特定Data_Format参数指定其输入的数据格式。如果未指定,则Ludwig将根据对象类型或文件扩展名自动弄清楚格式。
这是一个CLI使用示例
重量和偏见
重量和偏见是一种工具,可让用户跟踪其模型培训流程和结果。由Chris Van Pelt和Boris Dayma领导的权重和偏差团队为Ludwig版本0.3贡献了新的一体化,允许在Ludwig培训的模型在其平台中自动监视,因此可以通过以下方式跟踪和实验不同的运行和实验一个可视界面。
要使用路德维希的新权重和偏差集成,用户只需添加-wandb.参数到它们的命令。这将允许训练和实验被跟踪,并与相应的权重和偏差页面互动。
这是一个使用示例:
在这里你可以找到一个COLAB.玩这个集成!
K折叠交叉验证
K-fold交叉验证是一种广泛应用于机器学习的实验协议,它将数据集分解为多个折叠,并在多个实验过程中使用每个折叠作为验证集,其余的折叠作为训练集。这可以防止对特定开发或测试集的过拟合,因为模型在所有测试集上的性能都是平均的。
由于深度学习模型通常受到大量数据的培训,因此开发和测试集足够大,我们是自信的模型性能将概括到同一分布中的解开数据。然而,当深度学习通过在预先训练的模型上传输学习将较小的数据集应用于较小的数据集时,单个开发或测试集的模型性能可能不是良好的指示模型将概括到未遵守数据,并且更容易过度装满。在这种情况下,使用k折叠交叉验证可能非常有用。在关键贡献者Jim Thompson的帮助下(谁也帮助移植到Tensorflow 2),我们将K-Fold交叉验证功能添加到Ludwig版本0.3。
利用Ludwig的K折叠交叉验证非常简单;用户只需要指定数据集,折叠次数和配置,如下例所示:
矢量数据类型
Ludwig支持的数据类型中的新增添加是矢量功能。此数据类型具有输入编码器和输出解码器。输入编码器允许用户提供整个向量作为输入,可以通过单独的模型或来自传感器或其他事件检测设备的相干观察组来获得。编码器允许用户指定一堆完全连接的图层,以将输入向量映射到隐藏的向量。另一方面,解码器允许用户通过同时执行多元回归来预测一次性的整个值矢量。这也允许通过将嘈杂的分布作为目标提供噪声的模型培训,就像发生的事情一样噪声敏感损失用于弱监督和蒸馏技术。
基于用户反馈的更小的改进
Ludwig v0.3包含大量的错误修复和所有领域的次要改进,包括新的编码器,度量标准,改进的测试覆盖,改进的文档,通过笔记本的新示例,更快,更灵活的预处理,以及支持的新语言文本预处理。通过查看更新后,了解有关这些改进的更多信息路德维希用户指南和更新日志。
向前进
随着HyperParameter Optimization的增加,Ludwig版本0.3已凝固自身作为开源自动化,深度学习模型的培训和开发的强大解决方案。
在将过渡到Tensorflow 2和与变压器库集成的同时,使我们能够更好地支持预磨料模型,我们将来打算扩大我们对所有数据类型的预磨模模型,包括图像。
我们希望这些新增的项目和改进的文档将帮助用户开始使用该软件并更好地支持我们现有的用户和贡献者,而没有任何可能!
有兴趣进一步了解路德维希吗?看看我们的官方网站看我们的视频教程!!
致谢
我们要感谢我们所有的惊人的开源贡献者:
Jim Thompson为新的后端和K-Fold交叉验证,Kaushik Bokka,David Eriksson和Jiale Zhi提供了帮助,他们的帮助在封锁率优化,Avanika Narayan和拥抱脸队(特别是托马斯和朱利安)的帮助在变形金刚集成,重量和偏见团队(特别是克里斯和鲍里斯)的帮助,为他们的一体化,以及所有有助于改善Ludwig的人!
我们也要感谢Chris教授Ré和整个斯坦福大学的Hazy研究小组支持这个发布。雷竞技是骗人的


















