高效模型学习ai系统好不好(就能训练测试深度学习模型)
高效模型学习ai系统好不好(就能训练测试深度学习模型)Ludwig提供了一套AI架构,可以组合起来,为给定的用例创建端到端的模型。对于AI专家来说,Ludwig可以简化原型设计和数据处理过程,从而让他们能够专注于开发深度学习模型架构。刚刚,Uber宣布开源Ludwig,一个基于TensorFlow的工具箱。有了它,不用写代码就能够训练和测试深度学习模型。Uber表示,对于AI开发者来说,Ludwig可以帮助他们更好地理解深度学习方面的能力,并能够推进模型快速迭代。
乾明 发自 凹非寺
量子位 报道 | 公众号 QbitAI
让代码的归代码,让AI的归AI。
在不写代码就能进行AI开发的道路上,Uber今日又往前踏了一步。
刚刚,Uber宣布开源Ludwig,一个基于TensorFlow的工具箱。
有了它,不用写代码就能够训练和测试深度学习模型。
Uber表示,对于AI开发者来说,Ludwig可以帮助他们更好地理解深度学习方面的能力,并能够推进模型快速迭代。
对于AI专家来说,Ludwig可以简化原型设计和数据处理过程,从而让他们能够专注于开发深度学习模型架构。
训练只需数据文件和配置文件Ludwig提供了一套AI架构,可以组合起来,为给定的用例创建端到端的模型。
开始模型训练,只需要一个表格数据文件(如CSV)和一个YAML配置文件——用于指定数据文件中哪些列是输入特征,哪些列是输出目标变量。
如果指定了多个输出变量,Ludwig将学会同时预测所有输出。
使用Ludwig训练模型,在模型定义中可以包含附加信息,比如数据集中每个特征的预处理数据和模型训练参数, 也能够保存下来,可以在日后加载,对新数据进行预测。
灵活组合,适用多种任务对于Ludwig支持的数据类型(文本、图像、类别等),其提供了一个将原始数据映射到张量的编码器,以及将张量映射到原始数据的解码器。张量是线性代数中使用的数据结构。
内置的组合器,能够自动将所有输入编码器的张量组合在一起,对它们进行处理,并将其返回给输入解码器。
Uber表示,通过组合这些特定于数据类型的组件,用户可以将Ludwig用于各种任务。比如,组合文本编码器和类别解码器,就可以获得一个文本分类器。
每种数据类型有多个编码器和解码器。例如,文本可以用卷积神经网络(CNN),循环神经网络(RNN)或其他编码器编码。
用户可以直接在模型定义文件中指定要使用的参数和超参数,而无需编写单行代码。
基于这种灵活的编码器-解码器架构,即使是经验较少的深度学习开发者,也能够轻松地为不同的任务训练模型。
比如文本分类、目标分类、图像字幕、序列标签、回归、语言建模、机器翻译、时间序列预测和问答等等。
多种功能,不断拓展为了让工具变得更好用,Ludwig还提供了各种工具:
- 用于训练、测试模型和获得预测的命令行程序;
- 用于评估模型并通过可视化比较预测结果的工具;
- 用于用户训练或加载模型,并获得对新数据预测的Python编程API。
此外,Ludwig还能够使用开源分布式培训框架Horovod,在多个GPU上训练模型,并快速迭代。
目前,Ludwig有用于二进制值,浮点数,类别,离散序列,集合,袋(bag),图像,文本和时间序列的编码器和解码器,并且支持选定的预训练模型。
Uber表示,未来将为每种数据类型添加几个新的编码器,比如用于文本的Transformer,ELMo和BERT,以及用于图像的DenseNet和FractalNet。
还将添加其他的数据类型,比如音频、点云和图形,同时集成更多可扩展的解决方案来管理大数据集,如Petastorm。
来个例子,上手看看在这个例子中, 训练的是一个根据书名、作者、描述和封面来预测一本书的类型和价格的模型。数据集的形式如下所示:
模型使用书名、作者、描述和封面来作为输入,类型和价格作为输出,模型的配置文件是这样的:
input_features: – name: title type: text – name: author type: category – name: description type: text – name: cover type: image output_features: – name: genre type: category – name: price type: numerical training: epochs: 10
然后输入在控制台中,输入下列命令,开始训练。
ludwig train –data_csv path/to/file.csv –model_definition_file model_definition.yaml
然后,Ludwig会在训练、验证和测试集中对数据进行随机分割,进行预处理,并为四个输入建立四个不同的编码器,为两个输出目标建立一个组合器和两个解码器。
并在训练集上训练模型,直到验证集的精确度停止提高或者达到十个训练周期。
默认情况下,文本特征由CNN编码器编码,但是也可以使用RNN编码器,使用状态大小为200的双向LSTM来编码书名。
我们只需要将书名编码器的定义更改为下面这样:
name: title
type: text
encoder: rnn
cell_type: lstm
bidirectional: true
如果想改变训练参数,如周期数、学习率和批尺寸(batch size),可以这样改变模型配置:
input_features: – … output_features: – … training: epochs: 100 learning_rate: 0.001 batch_size: 64
训练结束之后,可以将训练的结果可视化,比如下图这样,显示训练周期中函数的损失和准确性。
也能够使用模型去预测新数据的结果,如果数据集中有ground truth信息,还能够进行对比,结果如下图所示:
此外,Ludwig还会提供一个简单的Python编程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()
各种操作指南,在Uber提供的Ludwig用户指南中都有详细介绍,请收好传送门:
用户指南:
https://uber.github.io/ludwig/user_guide/
GitHub项目地址:
https://github.com/uber/ludwig
— 完 —
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态