铜灵 发自 凹非寺 量子位 出品 | 公众号 QbitAI
今天,PyTorch 1.2.0版正式发布。
官方表示,和1.1版本相比,新版本在使用体验上又往前迈进了一大步。主要新增/改动的功能包括:
- 完善TorchScript环境,提供了新的将模型编译为TorchScrip的API
- 扩展ONNX模型的导出的支持
- 增强对Transformer架构的模块级支持
- 此外,TensorBoard现在也能快速开始使用了
对于这一系列的更新,Reddit网友开心得不得了。
有网友评价,Transformer层非常棒,此前需要用自己的自定义图层,现在终于不用去维护它了。
TensorBoard不再是一个实验性的功能了。RIP,浏览器。
总之,1.2.0版本的PyTorch更方便更好用了。一起围观下具体更新。
四大更新
TorchScript编译器
TorchScript编译器最早是在1.0版本出现的,可以将PyTorch模型转换为静态图表征,可用于Python不可用的受限环境中的优化和执行。
新版本中扩展了TorchScript对PyTorch模型中使用的Python子集的支持,提供了一种新的、更易于使用的API,用于将模型编译为TorchScript。
此前,TorchScript编译器将模型逐步转换为TorchScript,将编译后的代码与Python无缝混合。有了新的API,能将nn.Modules 转换为ScriptModules。
看一下示例用法:
扩展ONNX导出
作为开源的模型交换格式,让不同的框架以相同格式存储模型数据并交互,ONNX的出现为开发人员节约了不少时间。
在PyTorch最新版中,开发者进一步扩展了ONNX导出。
主要包括:
- 支持多种Opset,包括在Opset 10中导出dropout、slice、flip和interpolate
- 改进ScriptModule,支持多个Tensor factory和tuples作为输入和输出
- 新支持了十几个额外的PyTorch operator,还能对其进行自定义
- 改进bug~
nn.Transformer模块
在PyTorch 1.2.0版本中,包含了一个标准的nn.Transformer模块,这个模块完全依赖于注意机制来理清输入和输出之间的全局依赖关系。其中的各个组件可以独立使用。
- 例如,nn.TransformerEncoder可以单独使用,不需要更大nn.Transformer。新API包括:
- nn.Transformer
- nn.TransformerEncoder和nn.TransformerEncoderLayer
- nn.TransformerDecoder和nn.TransformerDecoderLayer
Tensorboard
此外还有一处更新。现在输入from torch.utils.tensorboard import SummaryWriter即可直接使用了。
只要安装了TensorBoard,这些实用程序就可以将PyTorch模型和标准记录到目录中,用户可在TensorBoard UI中进行可视化。
更新×3
这次更新的不止PyTorch 1.2,还有torchvision 0.4,torchaudio 0.3和torchtext 0.4。
torchvision 0.4版本,包含了:
可用于读/写视频和音频文件的IO原语(I/O primitives),支持任意编码和格式。
一个标准视频数据集,兼容torch.utils.data.Dataset和torch.utils.data.DataLoader。
基于Kinetics-400数据集构建的预训练模型,可用于视频(训练脚本)的动作分类。
用于训练你自己视频模型的参考训练脚本
torchaudio 0.3主要针对让机器解释音波,新版本中围绕标准化、复数(complex number)、转换(重新采样)进行改进,还更新了torchaudio的转换接口。
torchtext 0.4针对的时NLP研究,可以用于处理基于原始文本的数据。
此次更新的版本中,包含了很多流行监督学习带“one-command”数据加载的baseline,此外,还更新了如何用新数据集进行文本分类分析的教程。
传送门
PyTorch介绍: https://pytorch.org/blog/pytorch-1.2-and-domain-api-release/
GitHub地址: https://github.com/pytorch/pytorch/releases
— 完 —