人工智能、深度学习、爬虫算法、架构框架、Java、PHP、C++……听起来好像都很厉害的样子,但是如果我不是一名程序员,不会写代码,怎么能轻松玩转这些高级关键词,和 IT 领域的大咖进行深入交流呢?
Uber 近期就开源了这么一个神奇的项目,即使不会写代码,也能轻松入门深度学习,这绝对是史上门槛门槛最低的深度学习框架,从小朋友到老大爷,全都能轻松开始深度学习之旅。
Ludwig是一个建立在TensorFlow之上的工具箱,它允许用户在不需要编写代码的情况下训练和测试深度学习模型。用户只需要提供一个包含数据的CSV文件,一个列表作为输入,一个列表作为输出,Ludwig就将为你完成其余的工作:训练、测试、可视化、分布式训练等等。
安装Ludwig只需要一行代码:
pip install ludwig
训练模型:
ludwig train
--data_csv file.csv
--model_definition definition.yaml
模型预测:
ludwig predict
--data_csv data.csv
--model path_to_model
可视化:
ludwig visualize
--visualization learning_curves
--training_statistics train_statistics.json
当然,对于熟悉Python的用户,Ludwig也提供了非常简单易用的API:
from ludwig import LudwigModel
# train a model
model_definition = {...}
model = LudwigModel(model_definition)
train_stats = model.train(training_dataframe)
# or load a model
model = LudwigModel.load(model_path)
# obtain predictions
predictions = model.predict(test_dataframe)
model.close()
可视化工具允许你分析模型的训练和测试性能,并对它们进行比较。
Ludwig在构建时考虑了可扩展性原则,很容易添加对新数据类型和新模型体系结构的支持。工程人员可以使用它快速训练和测试深度学习模型,研究人员也可以使用它来获得强有力的基线版本,并方便进行对比,并通过执行标准数据预处理和可视化来确保模型可比性。
核心设计原则是:
无需编码:不需要编码技能来训练模型也不需要编码用它进行预测。
通用性:一种新的基于数据类型的深度学习模型设计方法,使该工具可以跨许多不同的应用领域使用。这点无比强大!
灵活性:经验丰富的用户对模型构建和训练可进行有效的控制,而新手会容易上手。
可扩展性:易于添加新的模型体系结构和新的特征数据类型。
可理解性:深度学习模型内部通常被认为是黑匣子,但是该库提供标准的可视化来理解它们的性能并比较它们的预测。
Ludwig 提供了一套 AI 架构,可以组合起来,为给定的用例创建端到端的模型。开始模型训练,只需要一个表格数据文件(如 CSV)和一个 YAML 配置文件——用于指定数据文件中哪些列是输入特征,哪些列是输出目标变量。如果指定了多个输出变量,Ludwig 将学会同时预测所有输出。使用 Ludwig 训练模型,在模型定义中可以包含附加信息,比如数据集中每个特征的预处理数据和模型训练参数, 也能够保存下来,可以在日后加载,对新数据进行预测。
对于 Ludwig 支持的数据类型(文本、图像、类别等),其提供了一个将原始数据映射到张量的编码器,以及将张量映射到原始数据的jie码器(张量是线性代数中使用的数据结构)。内置的组合器,能够自动将所有输入编码器的张量组合在一起,对它们进行处理,并将其返回给输入jie码器。
Uber 表示,通过组合这些特定于数据类型的组件,用户可以将 Ludwig 用于各种任务。比如,组合文本编码器和类别jie码器,就可以获得一个文本分类器。
每种数据类型有多个编码器和jie码器。例如,文本可以用卷积神经网络(CNN),循环神经网络(RNN)或其他编码器编码。用户可以直接在模型定义文件中指定要使用的参数和超参数,而无需编写单行代码。
Ludwig 采用的这种灵活的编码器-jie码器架构,即使是经验较少的深度学习开发者,也能够轻松地为不同的任务训练模型。比如文本分类、目标分类、图像字幕、序列标签、回归、语言建模、机器翻译、时间序列预测和问答等等。
此外,Ludwig 还提供了各种工具,且能够使用开源分布式培训框架 Horovod。目前,Ludwig 有用于二进制值,浮点数,类别,离散序列,集合,袋(bag),图像,文本和时间序列的编码器和jie码器,并且支持选定的预训练模型。
GitHub 地址:https://github.com/uber/ludwig