Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性

Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性

机器之心编译

机器之心编辑部

TensorFlow 和 PyTorch 的结构之争愈演愈烈。二者各有优缺点,挑选起来需求费一番脑筋。可是,有句话说得好,「小孩子才做挑选,成年人全都要」。为此,来自Petuum Inc 和卡内基梅隆大学的研究者开源了一个通用机器学习包——Texar-PyTorch,结合了 Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性TensorFlow 和 PyTorch 中的许多有用功用与特性。

项目地址:https://github.com/asyml/texar

Texar-PyTorch 对各类不同的机器学习使命有着广泛的支撑,尤其是自然言语处理(NLP)和文本生成使命。 依据其已有的 TensorFlow 版别,Texar-PyTorch 结合了 TensorFlow 和 PyTorch 中的许多有用功用与特性。一起,Texar-PyTorch 具有高度可定制性,供给了不同笼统层级的 API,以便利新手和经验丰厚的用户。 Texar-PyTorch 将有用的 TensorFlow (TF) 模块交融进了 PyTorch,明显增强了 PyTorch 现有的功用。这些模块包含:

  • 数据:内置常用的预处理、创立批次(batching)、迭代、随机打乱办法。全部办法均采纳最佳实践,并能够结合缓存与慵懒加载到达高功率。该项目也完成了相似 TFRecord 的模块,以支撑杂乱类Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性型的大型数据集。
  • 模型模块:丰厚的功用和完美的模块化的机器学习(ML)模型,比方一致接口的序列模型,包含用于文本生成的解码器、注意力机制(attention)和 RNN 等。
  • 练习:开发者依据 TF Estimator 和 k标签10eras.Model 的高档 API,规划了愈加灵敏的练习模块。该模块集模型练习、评价、猜测、TensorBoard 可视化于一体,并能与第三方的超参数调优东西完美结合。

Texar-PyTorch 功用 经过结合 TF 中的最佳特性与 PyTorch 的直观编程模型,Texar-Pytorch 为构建 ML 运用供给全面支撑:

  • 最先进的模型构建模块—建立 ML 模型就和搭积木相同,你能够为所欲为地替换模型模块。
  • 简略而高效的数据处理—丰厚的内置数据处理模块,适用于常见类型的数据集。用户能够运用简略的接口完成自界说数据处理模块,而无需忧虑功用问题。
  • 一体化的自界说模型练习模块—不必Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性再写千人一面的练习代码,也不必为了简练而献身可拓展性。

代码示例 1 演示了运用 Texar-PyTorch 建立并练习用于摘要生成或机器翻译的条件GPT-2 模型的完好代码。

代码示例 1:运用 Texar-PyTorch 建立并练习条件 GPT-2 模型 (用于摘要生成等使命)。

为何挑选 Texar?

  • 一起支撑 TensorFlow & PyTorch。有时,你无法挑选运用哪个底层结构,而学习新的东西包就和自己编写相同费时。现在,运用 Texar,你能够在这两个结构中运用简直相同的接口,只需对代码进行最小限度的更改。两个版别的东西包还能同享下载的预练习模型权重。
  • 一个东西包,掩盖全部自然言语处理使命。Texar 供给了自然言语处理使命(尤其是文本生成使命)中常用的大多数神经网络模型。图 1 给出了 Texar 各模块的简介。Texar 内置了最先进的预练习模型,一起还包含了数据处理、建模、练习和评价所需的各类有用办法。全部尽在 Texar 把握中。
  • 便利新手和行家。不管你是刚刚入门深度学习,仍是一名经验丰厚的研究员,Texar 都合适你。Texar 供给最先进的内置组件,一起具有满意的灵敏性标签19能够自界说。

图 1:Texar 为数据处理、模型架构、丢失函数、练习、评价以及一系列先进的预练习 ML/NLP 模型 (例如,BERT, GPT-2 等) 供给了全套的模块。

接下来将更具体地介绍 Texar-PyTorch 中建模、数据处理和模型练习这三个要害部分。 建模模块

如图 1 所示,Texar-Pytorch 供给了全套的 ML 模块集。经过精心规划的界面,用户能够经过组合模块自由地构建恣意模型。 下面的实例展现了怎么灵敏运用模块接口,以满意不同的机器学习算法的需求,如最大似然学习和对立性学习。此外,Texar 为具有不同专业知识的用户供给多个笼统层级的接口。例如:

  • 经过简略地设置解码器参数 decoding_strategy=「train_greedy」,就能够便利地调标签10用常用的解码战略,例如,teacher-forcing 办法。
  • 另一方面,用户能够运用 Helper 类进行更杂乱的解码战略,例如,用 GumbelSoftmaxHelper 在对立学习中运用 Gumbel sTexar-PyTorch:在PyTorch中集成TensorFlow的最佳特性oftmax 解码。经验丰厚的用户能够进一步界说新的 Helper 类来定制恣意解码战略。

代码示例 2:构建预练习的 GPT-2 言语模型,运用最大似然学习和对立学习 (运用 BERT 作为判别器) 进行微调。

总归,运用 Texar-PyTorch 建模具有以下首要优势:

  • 完美的模块化—经过简略地刺进/交流几个模块,就能够在不同的运用场景之间进行切换。
  • 多层级的接口—为新手用户供给高层级的简略 API,为专家用户供给底层级的自界说 API。
  • 内置最先进的预练习模块—BERT, GPT-2, RoBERTa, XLNet 等,用于文本编码、分类、序列符号和生成等使命。

数据

Texar-Pytorch 的数据模块旨在为恣意 ML 和 NLP 使命供给简略、高效可自界说的数据处理。结合 Tensorflow tf.dataTexar-PyTorch:在PyTorch中集成TensorFlow的最佳特性 中的最佳实践,这些模块极大地增强了 Pytorch 内置的 DTexar-PyTorch:在PyTorch中集成TensorFlow的最佳特性ataLoader 模块:

  • 解耦单个实例预处理和批次构建 – 以取得更明晰的程序逻辑和更简洁的自界说。
  • 依据缓冲区的随机打乱、缓存和慵懒加载 – 以进步功率。
  • 通用的数据集迭代器 – 无需额定的用户装备。
  • 更直观的 APIs – 在项目中取得最佳实践不需求任标签20何专业知识。

Texar-PyTorch 内置数据模块

关于常见类型的数据集,Texar-Pytorch 现已包含了能够运用的模块,如下图 2 所示。

图 2:Texar-Pytorch 内置很多 ML 和 NLP 使命的数据模块。 特别的是,RecordData 相当于 TensorFlow 闻名的 TFRecordData,后者以二进制格局读取文件,然后答应从文本到图画的恣意数据类型。太酷了,不是吗?更重要的是 – 它的运用方法与 TFRecordData 相似。下面的比如阐明晰全部。

假定你想运转一个图画描绘模型。每个数据示例一般包含一个图画、一个描绘和其他元信息。怎么运用 Texar-Pytorch 如下。

代码示例 3:运用 Texar-Pytorch RecordData 加载杂乱的图画标题数据。

创立自界说数据集 用户能够自界说怎么处理数据实例和创立批次,而 Texar 将为你处理缓存、慵懒处理和迭代。下面的示例阐明晰这一点。

代码示例 4:对输入文本履行 BPE 分词的自界说数据集。 练习器 每逢开端一个新的项目时,你是否厌烦了一次又一次地编写练习和评价代码?你是否需求一个 API 来完成自动化练习,并装备日志记载、保存中心模型、可视化和超参数调优功用? 你是否期望 API 灵敏习惯你的非传统算法,例如,在对立学习中替换优化多个丢失函数?Texar 练习器(Executor)是你的不贰挑选。 Executor 与广泛运用的 TF Estimator 和 tf.keras.Model 相似,可是愈加轻量级,更易自界说。 为了演示 Executor 的功用,开发者展现了一般的练习代码,并与 Executor 作比照: 假定咱们期望在项目中具有以下功用:

  • 每隔 logging_step 次迭代,在命令行、日志文件和 Tensorboard 上记载进展。
  • 每隔`validate_steps`次迭代在验证集上评价模型,运用 BLEU 来评价模型功用。
  • 假如验证成果有所改进,保存当时模型权重。假如接连`patience`次验证成果都没有改进,那么载入之前存储的模型权重,并调整学习率。

上面的过程描绘了一个很常见的练习循环。以下是一般的练习循环的实例:

代码示例 5:典型的手写 train-eval 循环。

代码十分冗长。当你需求增加或更改一些功用时,工作会变得愈加杂乱。现在,假如运用 Executors,该代码将是什么姿态?

代码示例 6:运用 Executor 的相同 train-eval 循环。

Executor 在命令行的输出如下:

在这里,你能够看到验证 BLEU 分数是依据已有成果不断更新的。这要归功于 Executor 流处理衡量,它答应对衡量值进标签5行增量核算。无需比及最终才干看到验证集的成果!

正如咱们所见,运用 Executor 的代码结构化更强,可读性更高。它还具有更强的可扩展性:

问:假如咱们还想在每个周期完毕后在验证集上评价呢?

答:只需将` validate_every` 更改为:

问:假如咱们想在调整学习率`early_stop_patience`次后提早中止练习呢?

答:只需将`action_on_plateau`改为:

问:假如咱们还想丈量单词等级的丢失呢?

答:只需在`valid_metrics`中增加一个新的衡量即可:

问:假如咱们想要进行超参数调优并屡次练习模型,该怎么办?

:只需为你想要测验的每一组超参数创立 Executor。因为 Executor 担任模型创立之外的全部进程,所以不需求忧虑耗费额定的内存或意外地保存曾经运转的目标。这是一个在 Hyperopt 中运用 Executor 的示例。

问:假如在每个Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性周期完毕后,咱们想把当时的模型权重上传到服务器,发送一封电子邮件报告进展,然后出门去遛狗,该怎么操作?

:很古怪,但没问题。只需在你挑选的条件下注册一个自界说操作,并做你想做的任何工作:

Texar-TF 与 Texar-PyTorch 相互切换

假如你是 Texar-TF 用户,毫不费力就可切换到 Texar-PyTorch。比较 Texar TensorFlow,Texar PyTorch 具有简直相同的接口,能够轻松切换底层结构。

虽然有相似的接口,但开发者也遵从每个结构的编码风格,这样你无需学习一种新的子言语。为此,他们更改了一些较低层级的可扩展接口,以便严密匹配对应结构的原生规划。大多数更改都在数据和练习器模块中,但正如你所见,它们十分简单上手。 开端运用 Texar-PyTorch

请拜访该项意图 GitHub repository,并依照装置阐明进行操作。有用的资源包含:

  • 文档:标签19该项目对每个模块和功用都有具体的文档。
  • 链接:https://texar-pytorch.readthedocs.io/en/latest/
  • 示例:开发者强烈建议咱们检查项目中的示例,以了解在实践中怎么运用 Texar。这些示例都有清晰的文档记载,涵盖了丰厚的用例。
  • 链接:https://github.com/asyml/texar-pytorch/blob/master/examples/README.md
  • ASYML 东西库:查找到全部 Texar 资源的快速链接。
  • 链接:https://asyml.io/

Tags:

Add a Comment

电子邮件地址不会被公开。 必填项已用 *标注