内容简介:继TensorFlow更新后,PyTorch 也迎来了最新的 1.4 版。本次更新是最后一个支持 Python2 的版本,同时增加了对分布式模型并行、移动端、Java 程序等方面的支持。紧接着TensorFlow更新到 2.1 版之后,PyTorch 在今天也更新到了 1.4 版本。
继TensorFlow更新后,PyTorch 也迎来了最新的 1.4 版。本次更新是最后一个支持 Python 2 的版本,同时增加了对分布式模型并行、移动端、 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、损失函数、卷积、嵌入等多个方面的代码。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 自建云盘系列——Seafile (支持分布式存储)
- 分布式监控系统 WGCLOUD,支持进程流量指标监控
- 纯golang im即时通讯系统(支持分布式)
- 分布式监控系统 WGCLOUD 更新,支持自定义告警脚本
- SpringBlade 2.5.0 发布,集成 Seata 支持分布式事务
- ApiBoot 2.2.1.RELEASE 发布,支持分布式全局日志
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Microsoft.NET框架程序设计
Jeffrey Richter / 李建忠 / 清华大学出版社 / 2003-11 / 68.00元
《Microsoft.NET框架程序设计》(修订版)是《微软.NET程序员系列》丛书之一,主要介绍如何开发面向Microsoft.NET框架的各种应用程序。Microsoft.NET框架是微软公司推出的新平台,包含通用语言运行时(CLR)和.NET框架类库(FCL)。《Microsoft.NET框架程序设计》(修订版)将深入解释CLR的工作机制及其提供的各种构造,同时还将讨论FCL中一些重要的类型......一起来看看 《Microsoft.NET框架程序设计》 这本书的介绍吧!