首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch 1.4 来了!春节假期好好研究

Pytorch 1.4 来了!春节假期好好研究

作者头像
HyperAI超神经
发布2020-02-17 14:05:52
9680
发布2020-02-17 14:05:52
举报
文章被收录于专栏:HyperAI超神经HyperAI超神经

By 超神经

内容导读:近日,Facebook 发布了 PyTorch 1.4,新版本增加了诸多新的功能,包括为 PyTorch Mobile 进行 build 级别自定义的功能,和一些新的实验性功能,包括对模型并行训练和 Java binding 的支持。此外完成了多项 API 更新并修复了一些 Bug。

关键词:Pytorch 1.4 版本升级 Facebook

1 月 15 日,Facebook 正式发布了 PyTorch 1.4,这是自 2019 年 10 月发布的 Pytorch 1.3 之后,时隔三月迎来的另一次版本升级。

PyTorch 官方博客宣布新版本发布

新版本最大的变化,有增加了支持分布式模型并行训练、为 PyTorch Mobile 提供 Build 级别的支持、加入了对 Java binding 的支持,以及增加了剪枝方法。此外,还对音频,视觉和文本域库进行了升级。

Facebook 也强调到,这会是最后支持 Python2 的版本,同时也是最后一个支持 C++11 的版本,并建议用户开始迁移到 Python3,并使用 C++14 开始编译工作。

支持分布式模型并行训练

随着模型的规模(例如 RoBERTa )不断增加,已经到达了数十亿个参数,并行训练对于研究人员来说,变得越来越重要。

新版本提供了分布式 RPC (Romote Procedure Call) 框架,以支持分布式模型并行训练。

这一框架可以远程运行函数,在不复制真实数据的情况下查询远程对象,同时 PyTorch 还提供了 autograd 和优化器 API,能够透明地运行后端并跨 RPC 边界更新参数。

另外,PyTorch 还引入了 torch.distributed.rpc 库,这是一个有基本构建单元的代码库,可用于构建能够在模型训练和推断时远程运行的函数。

这个库有四个主要部分:RPC、Remote Reference、Distributed Autograd 和 Distributed Optimizer。

为 PyTorch Mobile 提供 Build 级别的支持

面向 iOS 和 Android 设备的 PyTorch Mobile,是在 PyTorch 1.3 中首次出现,其速度的提升主要由于量化、谷歌 TPU 的支持,以及 JIT 编译器的升级。

PyTorch Mobile 发布之时的功能

在 PyTorch 1.4 中,PyTorch Mobile 添加了更多功能支持,最主要的是以细粒度级别自定义构建脚本的功能。

这项功能使移动开发人员,可以通过仅包括其模型所使用的运算符,来优化库的大小,并在此过程中有效减少设备占用的空间。

在实际的实验中表明,一个定制化的 MobileNetV2 ,比 PyTorch 的移动端库构建出来的要小 40% 到 50%.

新增对 Java binding 的支持

本次的另一个重点更新在于加入了对 Java 的支持。具体而言,在 PyTorch支持 Python 和 C ++ 的基础上,本次更新了对 Java binding 的实验性支持。

在 PyTorch Mobile 中对安卓开发的交互界面中,用户现在可以从任何 Java 程序中,调用 TorchScript 模型。

但略显遗憾的是本次更新中,Java binding 只能在 Linux 版本上使用,且只能进行模型推理,官方表示会在后续更新中扩展其功能。

新增剪枝方法的支持

PyTorch 1.4 为 nn.utils.prune 模块,带来了现成的剪枝方法,以简化决策树或人工神经网络。

在 ML 环境中,这可以用来克服所谓的过拟合,即模型对训练数据的适应性太强,从而使其不太适合泛化。

PyTorch 1.4 集成了现成的技术,可进行随机剪枝和基于幅度的剪枝(MTB)。后者是一种简单但最有效的剪枝算法,可在每次训练后删除重量最小的部分。

from torch.nn.utils import prune
t = torch.rand(2, 5)
p = prune.L1Unstructured(amount=0.7)
pruned_tensor = p.prune(t)

可通过调用代码实现此功能

除了用于修剪的现成类之外,开发人员还可以创建自己的类作为 BasePruningMethodcreate 的子类。

对域库进行了升级

在 PyTorch 1.4 中,域库也得到了升级,通过使用常见的数据集,模型和转换对它们进行了补充。

本次发布了视觉、音频、文本三个域库的新版本。

torchvision v0.5

torchvision v0.5 的改进,主要集中在增加对生产部署的支持,包括量化,对 TorchScript 和 ONNX 等的支持。

torchaudio v0.4

torchaudio v0.4 的改进集中在增强当前可用的转换,数据集和后端支持上。

torchtext v0.5

torchtext v0.5 主要集中在对数据集加载器 API 的改进上,包括与核心 PyTorch API 的兼容性,但还增加了对无监督文本标记化的支持。

PyTorch 官推对域库更新做了介绍

除了上述重点提及的更新,PyTorch 1.4 还进行了其他的一些更新或升级,包括修复了约 30 个 Bug,涵盖到 CUDA、损失函数、卷积、嵌入等多个方面的代码。

更多详细内容,请查看官方文档:

https://github.com/pytorch/pytorch/releases

—— 完 ——

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 HyperAI超神经 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档