Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Texar-PyTorch:在PyTorch中集成TensorFlow的最佳特性

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

作者头像
OpenCV学堂
发布于 2019-11-11 05:32:34
发布于 2019-11-11 05:32:34
7480
举报

来源:机器之 授权转载

TensorFlow 和 PyTorch 的框架之争愈演愈烈。二者各有优缺点,选择起来需要费一番脑筋。但是,有句话说得好,「小孩子才做选择,成年人全都要」。为此,来自Petuum Inc 和卡内基梅隆大学的研究者开源了一个通用机器学习包——Texar-PyTorch,结合了 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 的模块,以支持复杂类型的大型数据集。
  • 模型模块:丰富的功能和完美的模块化的机器学习(ML)模型,比如统一接口的序列模型,包括用于文本生成的解码器、注意力机制(attention)和 RNN 等。
  • 训练:开发者基于 TF Estimator 和 keras.Model 的高级 API,设计了更加灵活的训练模块。该模块集模型训练、评估、预测、TensorBoard 可视化于一体,并能与第三方的超参数调优工具完美结合。

Texar-PyTorch 功能

通过结合 TF 中的最佳特性与 PyTorch 的直观编程模型,Texar-Pytorch 为构建 ML 应用提供全面支持:

  • 最先进的模型构建模块—搭建 ML 模型就和搭积木一样,你可以随心所欲地替换模型模块。
  • 简单而高效的数据处理—丰富的内置数据处理模块,适用于常见类型的数据集。用户可以利用简单的接口实现自定义数据处理模块,而无需担心性能问题。
  • 一体化的自定义模型训练模块—不用再写千篇一律的训练代码,也不用为了简洁而牺牲可拓展性。

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

代码示例 1:使用 Texar-PyTorch 搭建并训练条件 GPT-2 模型 (用于摘要生成等任务)。

为何选择 Texar?

  • 同时支持 TensorFlow & PyTorch。有时,你无法选择使用哪个底层框架,而学习新的工具包就和自己编写一样费时。现在,使用 Texar,你可以在这两个框架中使用几乎相同的接口,只需对代码进行最小限度的更改。两个版本的工具包还能共享下载的预训练模型权重。
  • 一个工具包,覆盖所有自然语言处理任务。Texar 提供了自然语言处理任务(尤其是文本生成任务)中常用的大多数神经网络模型。图 1 给出了 Texar 各模块的简介。Texar 内置了最先进的预训练模型,同时还包括了数据处理、建模、训练和评估所需的各类实用方法。一切尽在 Texar 掌握中。
  • 方便新手和行家。无论你是刚刚入门深度学习,还是一名经验丰富的研究员,Texar 都适合你。Texar 提供最先进的内置组件,同时具有足够的灵活性可以自定义。

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

接下来将更详细地介绍 Texar-PyTorch 中建模、数据处理和模型训练这三个关键部分。

建模模块

如图 1 所示,Texar-Pytorch 提供了全套的 ML 模块集。通过精心设计的界面,用户可以通过组合模块自由地构建任意模型。

下面的实例展示了如何灵活运用模块接口,以满足不同的机器学习算法的需要,如最大似然学习和对抗性学习。此外,Texar 为具有不同专业知识的用户提供多个抽象层级的接口。例如:

  • 通过简单地设置解码器参数 decoding_strategy=「train_greedy」,就可以方便地调用常用的解码策略,例如,teacher-forcing 方法。
  • 另一方面,用户可以使用 Helper 类进行更复杂的解码策略,例如,用 GumbelSoftmaxHelper 在对抗学习中使用 Gumbel softmax 解码。经验丰富的用户可以进一步定义新的 Helper 类来定制任意解码策略。

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

总之,使用 Texar-PyTorch 建模具有以下主要优势:

  • 完美的模块化—通过简单地插入/交换几个模块,就可以在不同的使用场景之间进行切换。
  • 多层级的接口—为新手用户提供高层级的简单 API,为专家用户提供底层级的自定义 API。
  • 内置最先进的预训练模块—BERT, GPT-2, RoBERTa, XLNet 等,用于文本编码、分类、序列标记和生成等任务。

数据

Texar-Pytorch 的数据模块旨在为任意 ML 和 NLP 任务提供简单、高效可自定义的数据处理。结合 Tensorflow tf.data 中的最佳实践,这些模块极大地增强了 Pytorch 内置的 DataLoader 模块:

  • 解耦单个实例预处理和批次构建 – 以获得更清晰的程序逻辑和更简便的自定义。
  • 基于缓冲区的随机打乱、缓存和惰性加载 – 以提高效率。
  • 通用的数据集迭代器 – 无需额外的用户配置。
  • 更直观的 APIs – 在项目中获得最佳实践不需要任何专业知识。

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 流处理度量,它允许对度量值进行增量计算。无需等到最后才能看到验证集的结果!

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

问:如果我们还想在每个周期结束后在验证集上评估呢?

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

问:如果我们想在调整学习率`early_stop_patience`次后提前停止训练呢?

答:只需将`action_on_plateau`改为:

问:如果我们还想测量单词级别的损失呢?

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

问:如果我们想要进行超参数调优并多次训练模型,该怎么办?

:只需为你想要测试的每一组超参数创建 Executor。由于 Executor 负责模型创建之外的所有进程,所以不需要担心消耗额外的内存或意外地保留以前运行的对象。这是一个在 Hyperopt 中使用 Executor 的示例。

问:如果在每个周期结束后,我们想把当前的模型权重上传到服务器,发送一封电子邮件汇报进度,然后出门去遛狗,该如何操作?

:很奇怪,但没问题。只需在你选择的条件下注册一个自定义操作,并做你想做的任何事情:

Texar-TF 与 Texar-PyTorch 互相切换

如果你是 Texar-TF 用户,毫不费力就可切换到 Texar-PyTorch。相比 Texar TensorFlow,Texar PyTorch 具有几乎相同的接口,可以轻松切换底层框架。

尽管有类似的接口,但开发者也遵循每个框架的编码风格,这样你无需学习一种新的子语言。为此,他们更改了一些较低层级的可扩展接口,以便紧密匹配对应框架的原生设计。大多数更改都在数据和训练器模块中,但正如你所见,它们非常容易上手。

开始使用 Texar-PyTorch

请访问该项目的 GitHub repository,并按照安装说明进行操作。实用的资源包括:

  • 文档:该项目对每个模块和功能都有详细的文档。
  • 链接:https://texar-pytorch.readthedocs.io/en/latest/
  • 示例:开发者强烈建议我们查看项目中的示例,以了解在实践中如何使用 Texar。这些示例都有明确的文档记录,涵盖了丰富的用例。
  • 链接:https://github.com/asyml/texar-pytorch/blob/master/examples/README.md
  • ASYML 工具库:查找到所有 Texar 资源的快速链接。
  • 链接:https://asyml.io/
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenCV学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Transformers2.0让你三行代码调用语言模型,兼容TF2.0和PyTorch
参考链接: 在Python中使用BERT Tokenizer和TensorFlow 2.0进行文本分类
用户7886150
2021/01/15
1.2K0
继Facebook开源PyTorch3D后,谷歌开源TensorFlow 3D场景理解库
3D 计算机视觉是一个非常重要的研究课题,选择合适的计算框架对处理效果将会产生很大的影响。此前,机器之心曾介绍过 Facebook 开源的基于 PyTorch 框架的 3D 计算机视觉处理库 PyTorch3D,该库在 3D 建模、渲染等多方面处理操作上表现出了更好的效果。
机器之心
2021/03/15
5820
继Facebook开源PyTorch3D后,谷歌开源TensorFlow 3D场景理解库
Transformers2.0让你三行代码调用语言模型,兼容TF2.0和PyTorch
最近,专注于自然语言处理(NLP)的初创公司 HuggingFace 对其非常受欢迎的 Transformers 库进行了重大更新,从而为 PyTorch 和 Tensorflow 2.0 两大深度学习框架提供了前所未有的兼容性。
Python数据科学
2019/10/03
2.4K0
重磅!谷歌开源TensorFlow 3D场景理解库
3D 计算机视觉是一个非常重要的研究课题,选择合适的计算框架对处理效果将会产生很大的影响。此前,机器之心曾介绍过 Facebook 开源的基于 PyTorch 框架的 3D 计算机视觉处理库 PyTorch3D,该库在 3D 建模、渲染等多方面处理操作上表现出了更好的效果。
3D视觉工坊
2021/03/19
8780
重磅!谷歌开源TensorFlow 3D场景理解库
基于tensorflow 1.x 的bert系列预训练模型工具
内置有自定义的Trainer,像pytorch一样使用tensorflow1.14,具体使用下边会介绍。
机器学习AI算法工程
2021/10/14
1.1K0
基于tensorflow 1.x 的bert系列预训练模型工具
Keras还是TensorFlow?深度学习框架选型实操分享
深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从。如 Google 的 TensorFlow、亚马逊的 MXNet、Facebook 支持的 PyTorch、Theano、Caffe、CNTK、Chainer、百度的 PaddlePaddle、DSSTNE、DyNet、BigDL、Neon 等等。
AI科技大本营
2018/10/22
1.9K0
Keras还是TensorFlow?深度学习框架选型实操分享
深度学习:Pytorch 与 Tensorflow 的主要区别(2)
目前,Python 深度学习领域已经涌现出多个由科技界巨头如 Google、Facebook 和 Uber 等公司公开发布的框架,这些框架旨在帮助开发者构建先进的计算架构。对于刚接触这一领域的你来说,深度学习是计算机科学中的一个分支,它通过模仿人脑结构的人工神经网络,赋予计算机以类似人类的智能,使其能够解决现实世界的问题。
数据科学工厂
2024/05/27
6040
深度学习:Pytorch 与 Tensorflow 的主要区别(2)
深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)
深度学习框架在当今人工智能和机器学习领域中占据着至关重要的地位。其中,TensorFlow 由 Google 开发,自 2015 年发布以来,凭借其灵活的计算图、自动微分功能以及跨平台支持等特点,迅速成为主流深度学习框架之一。它在图像识别、自然语言处理、语音识别等多个领域都有广泛应用。例如,在图像识别任务中,通过卷积神经网络能够准确识别物体、人脸和车辆等。
正在走向自律
2024/12/18
8750
深度学习(八) TensorFlow、PyTorch、Keras框架大比拼(8/10)
PyTorch Lightning特性及使用示例
PyTorch Lightning 提供了一系列内置功能,如自动混合精度训练、模型检查点保存、学习率调度等,简化了模型训练的流程。
用户7353950
2024/11/23
4630
PyTorch Lightning特性及使用示例
Transformers2.0让你三行代码调用语言模型,兼容TF2.0和PyTorch
最近,专注于自然语言处理(NLP)的初创公司 HuggingFace 对其非常受欢迎的 Transformers 库进行了重大更新,从而为 PyTorch 和 Tensorflow 2.0 两大深度学习框架提供了前所未有的兼容性。
机器之心
2019/09/29
1K0
Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!
总的来说,这四个工具箱各有各的优点,适合不同的任务和学习阶段。 你想盖什么样子的“房子”(解决什么问题),就选择合适的工具箱。 接下来让我们去了解一下他们吧
小白的大数据之旅
2024/11/26
2.3K0
Python深度学习框架:PyTorch、Keras、Scikit-learn、TensorFlow如何使用?学会轻松玩转AI!
TensorFlow 2.0发布在即,高级API变化抢先看
作者 | Sandeep Gupta, Josh Gordon, and Karmel Allison
AI科技大本营
2018/12/26
1.1K0
PyTorch和Tensorflow版本更新点
导语:今天为大家带来最近更新的Pytorch的更新点介绍,另外,小编Tom邀请你一起搞事情!,源代码可以扫描二维码进群找小编获取哦~ Tensorflow 主要特征和改进 •在Tensorflow库中添加封装评估量。所添加的评估量列表如下: 1. 深度神经网络分类器(DNN Classifier) 2. 深度神经网络回归量(DNN Regressor) 3. 线性分类器(Linear Classifier) 4. 线性回归量(Linea rRegressor) 5. 深度神经网络线性组合分类器(DNN L
IT派
2018/03/28
2.9K0
PyTorch和Tensorflow版本更新点
为什么要用 PyTorch、TensorFlow 框架
并非每个回归或分类问题都需要通过深度学习来解决。甚至可以说,并非每个回归或分类问题都需要通过机器学习来解决。毕竟,许多数据集可以用解析方法或简单的统计过程进行建模。
代码医生工作室
2019/09/08
1.3K0
深度学习工具和框架详细指南:PyTorch、TensorFlow、Keras
在深度学习的世界中,PyTorch、TensorFlow和Keras是最受欢迎的工具和框架,它们为研究者和开发者提供了强大且易于使用的接口。在本文中,我们将深入探索这三个框架,涵盖如何用它们实现经典深度学习模型,并通过代码实例详细讲解这些工具的使用方法。
平凡之路.
2024/11/21
1.7K0
TensorFlow和PyTorch的实际应用比较
TensorFlow和PyTorch是两个最受欢迎的开源深度学习框架,这两个框架都为构建和训练深度学习模型提供了广泛的功能,并已被研发社区广泛采用。但是作为用户,我们一直想知道哪种框架最适合我们自己特定项目,所以在本文与其他文章的特性的对比不同,我们将以实际应用出发,从性能、可伸缩性和其他高级特性方面比较TensorFlow和PyTorch。
deephub
2023/02/01
4.7K0
最新自然语言处理库transformers
Transformers是TensorFlow 2.0和PyTorch的最新自然语言处理库
石晓文
2020/03/09
2.6K0
最新自然语言处理库transformers
机器学习入门实战:用TensorFlow和PyTorch解决实际问题
先来了解一下TensorFlow的基本概念,其实TensorFlow是一个开源的机器学习框架,是由开发,它广泛应用于各种机器学习任务,包括图像识别、自然语言处理等,而且它强大的计算图和自动微分功能,让构建和训练复杂的模型变得简单高效。
三掌柜
2025/01/26
1540
华为诺亚AutoML框架-Vega:(2) 代码结构
之前的华为诺亚实验室AutoML框架-Vega:(1) 介绍 已经介绍了相比于其他的AutoML框架, Vega框架的优点和特性。本文将从代码结构的角度来介绍Vega,帮助大家对Vega有一个全局的了解,主要起到一个帮助索引查找的作用。
marsggbo
2021/01/29
7180
Github项目推荐 | awesome-bert:BERT相关资源大列表
awesome-bert:BERT相关资源大列表 by Jiakui 本项目包含BERT 相关论文和 github 项目。 项目地址: https://github.com/Jiakui/awesom
AI研习社
2019/03/14
2.3K0
推荐阅读
相关推荐
Transformers2.0让你三行代码调用语言模型,兼容TF2.0和PyTorch
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档