Facebook推出PyTorch 1.4,支持自定义脚本构建和Java绑定
2020年01月17日 由 KING 发表
146828
0
PyTorch是当今最受欢迎的机器学习框架之一。Facebook今天发布了PyTorch 1.4,对音频、视觉和文本库进行了升级。
PYTORCH 1.4
PyTorch 1.4版本增加了新功能,包括为PyTorch Mobile进行细粒度构建级别自定义的功能,以及新的实验性功能,包括对模型并行训练和Java语言绑定的支持。
PyTorch Mobile-构建级别自定义
在1.3版本的PyTorch Mobile开源之后,PyTorch 1.4添加了更多的移动支持,包括以细粒度级别自定义构建脚本的功能。这使移动开发人员可以通过仅包括其模型所使用的运算符来优化库的大小,并在此过程中显着减少其设备占用的空间。初步结果表明,例如,定制的MobileNetV2比预构建的PyTorch移动库小40%至50%。
用于选择性地仅编译MobileNetV2所需的运算符的示例代码段:
# Dump list of operators used by MobileNetV2:
import torch, yaml
model = torch.jit.load('MobileNetV2.pt')
ops = torch.jit.export_opnames(model)
with open('MobileNetV2.yaml', 'w') as output:
yaml.dump(ops, output)
# Build PyTorch Android library customized for MobileNetV2:
SELECTED_OP_LIST=MobileNetV2.yaml scripts/build_pytorch_android.sh arm64-v8a
# Build PyTorch iOS library customized for MobileNetV2:
SELECTED_OP_LIST=MobileNetV2.yaml BUILD_PYTORCH_MOBILE=1 IOS_ARCH=arm64 scripts/build_ios.sh
分布式模型并行训练(实验性)
随着模型的规模(例如RoBERTa)不断增加到数十亿个参数,模型并行训练对于帮助研究人员突破极限变得越来越重要。此版本提供了分布式RPC框架,以支持分布式模型并行训练。它允许远程运行功能和引用远程对象,而无需复制实际数据,并提供autograd和Optimizer API以透明地向后运行并跨RPC边界更新参数。
Java绑定(实验性)
除了支持Python和C ++,此版本还增加了对Java绑定的实验性支持。基于PyTorch Mobile中为Android开发的界面,新的绑定使你可以从任何Java程序调用TorchScript模型。请注意,Java绑定仅可用于此版本的Linux,并且仅用于推断。有关如何在Java中使用PyTorch的信息,请参见下面的代码片段:
Module mod = Module.load("demo-model.pt1");
Tensor data =
Tensor.fromBlob(
new int[] {1, 2, 3, 4, 5, 6}, // data
new long[] {2, 3} // shape
);
IValue result = mod.forward(IValue.from(data), IValue.from(3.0));
Tensor output = result.toTensor();
System.out.println("shape: " + Arrays.toString(output.shape()));
System.out.println("data: " + Arrays.toString(output.getDataAsFloatArray()));
域库
PyTorch域库(例如torchvision,torchtext和torchaudio)使用常见的数据集,模型和转换对PyTorch进行了补充。我们很高兴与PyTorch 1.4核心版本一起共享所有三个域库的新版本。
torchvision0.5
torchvision 0.5的改进主要集中在增加对生产部署的支持,包括量化,TorchScript和ONNX。一些亮点包括:
- 现在,torchvision中的所有模型都可以使用torchscript编写,从而使其更易于移植到非Python生产环境中
- ResNets,MobileNet,ShuffleNet,GoogleNet和InceptionV3现在已经具有经过预先训练的模型的量化对象,并且还包括用于进行量化意识训练的脚本。
- 与Microsoft团队合作,我们增加了对所有型号的ONNX支持,包括Mask R-CNN。
torchaudio 0.4
torchaudio 0.4的改进集中在增强当前可用的转换,数据集和后端支持上。重点包括:
- SoX现在是可选的,并且新的可扩展后端分派机制公开了SoundFile作为SoX的替代方法。
- 数据集的界面已统一。这样可以添加两个大型数据集:LibriSpeech和Common Voice。
- 现在提供了新的滤波器(例如双二阶),数据增强(例如时间和频率屏蔽),变换(例如MFCC),增益和抖动以及新的特征计算(例如增量)。
- 转换现在支持批处理并且是jitable。
- 具有语音活动检测功能的交互式语音识别演示可用于实验。
torchtext0.5
torchtext 0.5主要集中在对数据集加载器API的改进上,包括与核心PyTorch API的兼容性,但还增加了对无监督文本标记化的支持。重点包括:
- 为SentencePiece添加了绑定,以实现无监督的文本标记化。
- 添加了一个新的无监督学习数据集-enwik9。
- 对PennTreebank,WikiText103,WikiText2,IMDb进行了修订,以使其与torch.utils.data兼容。