点击我爱计算机视觉标星,更快获取CVML新技术


本文转载自机器之心。

机器之心报道

参与:一鸣、Jamin

继 TensorFlow 更新后,PyTorch 也迎来了最新的 1.4 版。本次更新是最后一个支持 Python2 的版本,同时增加了对分布式模型并行、移动端、Java 程序等方面的支持。

紧接着 TensorFlow 更新到 2.1 版之后,PyTorch 在今天也更新到了 1.4 版本。

本次更新的重点是增加了很多重要的新特性,包括给用户提供 Build 级别的移动端定制化支持、增加分布式模型并行训练、让 Java 程序能够运行 TorchScript 等。此外还有 JIT、C++、分布式训练、Eager 前端、PyTorch Mobile 等方面的功能改进和 Bug 修复。

值得注意的是,本次 PyTorch 更新是最后一个支持 Python2 的版本,同时也是最后一个支持 C++11 的版本。官方提示说,用户应当开始迁移到 Python3,并使用 C++14 开始编译工作。对于其他详细信息,感兴趣的读者可以查阅更新文档。

更新文档:https://github.com/pytorch/pytorch/releases

增加多项新特性

在本次版本更新中,PyTorch 最大的变化在于增加了多项新的特性,无疑让 PyTorch 变得更好用了。

支持分布式模型并行训练

1.4 版最大的亮点在于对分布式模型并行训练增加了支持。官方表示,随着 RoBERTa 等万亿级别参数的大型模型出现,人们越来越需要模型并行训练了。因此本次版本会提供一个分布式 RPC(Romote Procedure Call)框架。这一框架可以远程运行函数,在不复制真实数据的情况下查询远程对象。此外 PyTorch 还提供了 autograd 和优化器 API,能够透明地运行后端并跨 RPC 边界更新参数。

相对应的,PyTorch 引入了名为 torch.distributed.rpc 的库。这是一个有基本构建单元的代码库,用于构建能够在模型训练和推断时远程运行的函数。具体来说,这一个库有四个主要部分:RPC、Remote Reference、Distributed Autograd 和 Distributed Optimizer。使用方法可参考官方文档。

为 PyTorch Mobile 提供 Build 级别的支持

在 1.3 中实验性地推出了 Pytorch Mobile 之后,本次版本更新增加了更多对移动端的支持,如 fine-grain 级别的定制化构建脚本。这可以让移动端开发者优化代码库的大小,只包括他们的模型所使用的算子。同时,在运行过程中显著减少对设备空间的占用。早期的结果说明,一个定制化的 MobileNetV2 比 PyTorch 的移动端库构建出来的要小 40% 到 50%。

对 Java binding 的支持

除了对 Python 和 C++的支持以外,本次更新增加了对 Java binding 的实验性支持。基于在 PyTorch Mobile 中对安卓开发的交互界面,用户可以从任何 Java 程序中调用 TorchScript 模型。当然,在本次更新中,Java binding 只在 Linux 版本上存在,且只能进行模型推理。官方将会在后续更新中扩展支持。

torch.optim 更新

除了以上三个重要特性外,还有一个新的小特性值得注意。torch.optim.lr_scheduler 现已支持「链式更新(chaining)」。即用户可以定义两个 schedulers,并交替在训练中使用。

具体代码如下:

>>> import torch
>>> from torch.optim import SGD
>>> from torch.optim.lr_scheduler import ExponentialLR, StepLR
>>>
>>> model = [torch.nn.Parameter(torch.randn(2, 2, requires_grad=True))]
>>> optimizer = SGD(model, 0.1)
>>>
>>> scheduler1 = ExponentialLR(optimizer, gamma=0.9)
>>> scheduler2 = StepLR(optimizer, step_size=3, gamma=0.1)
>>>
>>> for epoch in range(4):
>>>     print(epoch, scheduler2.get_last_lr()[0])
>>>
>>>     optimizer.step()
>>>     scheduler1.step()
>>>     scheduler2.step()0 0.1
1 0.09000000000000001
2 0.08100000000000002
3 0.00729000000000002
4 0.00656100000000002

其他的新特性更新包括对分布式、JIT 等方面的更新。

功能改进和 Bug 修复

在改进方面值得注意的是对 C++的多项 API 进行了更新和调整,此外还有对 JIT、ONNX 的改进,以及 AMD 硬件的支持等。另外,nn.GELU 正式成为了激活函数的一种。

C++更新的 API 包括:

  • Torch::nn modules:包括卷积层、池化层、损失层、归一化层、激活层、Dropout 层、嵌入层等。

  • Torch::nn::functional functions:包括卷积、池化、损失、归一化、相似度等方面的函数。

在改进之余,PyTorch 1.4 还修复了大约 30 个 Bug,涵盖 CUDA、损失函数、卷积、嵌入等多个方面的代码。


TF & PyTorch学习群

学习交流TensorFlow、PyTorch深度学习框架的使用,欢迎加入52CV-TF & PyTorch群,扫码添加CV君拉你入群,如已为CV君其他账号好友请直接私信,

(请务必注明:框架):

喜欢在QQ交流的童鞋可以加52CV官方QQ群:805388940。

(不会时时在线,如果没能及时通过还请见谅)


长按关注我爱计算机视觉

PyTorch 1.4 最新版放出:支持Python2的最后一版,支持分布式模型并行、Java程序、移动端等多项新功能...相关推荐

  1. 模型部署到移动端_Pytorch1.4来了!定制移动端构建、支持分布式模型并行训练等...

    1月16日,Facebook发布了PyTorch 1.4,对音频.视觉和文本库进行了升级. 在最新版本中,PyTorch 最大的变化在于增加了支持分布式模型并行训练.为 PyTorch Mobile ...

  2. 2020年python2停止更新_Python核心团队计划2020年停止支持Python2,NumPy宣布停止支持计划表...

    Python核心团队计划在2020年停止支持Python 2.NumPy项目自2010年以来一直支持Python 2和Python 3,并且发现支持Python 2对我们有限的资源增加了负担:因此,我 ...

  3. Python核心团队计划2020年停止支持Python2,NumPy宣布停止支持计划表

    Python核心团队计划在2020年停止支持Python 2.NumPy项目自2010年以来一直支持Python 2和Python 3,并且发现支持Python 2对我们有限的资源增加了负担:因此,我 ...

  4. 2021软件保护系统WinLicense v3.1.1.0最新版17项新功能邀你体验!

    随着软件普及程度.互联网技术的发展,以及正版软件购买用户数量和软件版本的增加,软件的保护变得越来越重要.而我们常见的软件保护方式有软件授权和软件加密. WinLicense是一个功能强大的保护系统,专 ...

  5. h5邮件的邮箱 支持_Coremail发布H5邮箱移动模板新版本,多项新功能让办公更便捷...

    近日,Coremail论客发布了邮箱客户端H5邮箱移动模板新版本Hxphone4.1.2,据Coremail产品经理介绍:此次更新的版本不仅对原有的协同模块功能.安全模块功能进行了更新完善,在收发信的 ...

  6. edge安装包_Chromium版Edge浏览器将支持多平台,Windows版支持IE模式

    在昨天的微软西雅图Build 2019开发者大会上,微软表示Chromium版Edge浏览器不止会登录Windows系统(包括Win7),还会登录安卓.iOS和MacOS系统,此外会带来包括更好的安全 ...

  7. PyTorch 1.6正式发布!新增自动混合精度训练、Windows版开发维护权移交微软

    点击上方"视学算法",选择加"星标"置顶 重磅干货,第一时间送达 本文转载自:机器之心 刚刚,Facebook 通过 PyTorch 官方博客宣布:PyTorc ...

  8. linux内核5.3支持cpu,Linux 5.3版内核重磅发布:支持中国兆芯x86 CPU

    经过两个月的开发和八个RC候选版本之后,Linus Torvalds今天终于正式发布了Linux Kernel 5.3版内核.虽然因为旅游耽误了一个星期,但是这个版本带来了诸多重磅更新,值得等待和升级 ...

  9. ​微信Android版支持改微信号,淘宝硬核拒绝改名要求;5G 套餐价格松动;Kotlin 1.4 第二个预览版发布|极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

最新文章

  1. 收到淘宝实习生转化面试的通知
  2. MYSQL专题-使用Binlog日志恢复MySQL数据
  3. linux计划任务执行bin文件,Linux任务计划和周期性任务执行
  4. 分布式监控之Zabbix-Server
  5. Mr.J--Bootstrap使用
  6. mfc大观之二(类识别)
  7. Java EE第七周
  8. 上拉刷新下拉加载PullToRefreshLayout
  9. 算法笔记_171:历届试题 小朋友排队(Java)
  10. 使用VueJs开发单页面应用经验总结
  11. Cron定时任务应用到Thinkphp – 贤生博客
  12. 爬虫_抓取猫眼电影TOP100
  13. pyspider 文档介绍
  14. 1050: [HAOI2006]旅行comf
  15. Unity UI 动画 工具
  16. abc237 D(想了一个小时结果跟模拟双向链表的插入一毛一样,老废物了,思路不清晰,建议remake)
  17. 基于layui和ThinkPHP6开发的通用后台管理框架
  18. 渗透测试学习笔记之案例五
  19. WEB漏洞-逻辑越权之登录脆弱及支付修改
  20. opencv 实现照片美颜功能 html5版(源码)

热门文章

  1. CentOs基础操作指令(用户管理、组管理)
  2. Golang笔记——map
  3. linux怎么设置ftp为主动模式,linux设置ftp服务器为主动模式
  4. php调用谷歌翻译,PHP调用谷歌翻译 | 学步园
  5. python写脚本入门-学习Python的教程?:python 脚本菜鸟教程
  6. 电视盒安装php,全志a20安卓电视盒子安装可道云kodexplorer服务-编译安装php7.3+nginx...
  7. python 程序运行计时 动态,在python中运行计时器几分钟
  8. linux设置主机路由的接口,linux – 添加到特定主机的路由会发出特定的接口
  9. oracle日期修改格式化,oracle日期格式化的实现
  10. debug assertion failed是什么意思?_如何使用 pdb 来性感 debug 你的 Python 代码?