点击上方“视学算法”,选择加"星标"置顶

重磅干货,第一时间送达

本文转载自:机器之心

刚刚,Facebook 通过 PyTorch 官方博客宣布:PyTorch 1.6 正式发布!新版本增加了一个 amp 子模块,支持本地自动混合精度训练。Facebook 还表示,微软已扩大了对 PyTorch 社区的参与,现在拥有 PyTorch 在 Windows 上的开发和维护所有权。

相比于以往的 PyTorch 版本,本次即将发布的 PyTorch 1.6 有哪些吸引人的地方呢?

总的来说,PyTorch 1.6 版本包括许多新的 API、用于性能改进和性能分析的工具,以及对基于分布式数据并行(DDP)和远程过程调用(RPC)的分布式训练的重大更新。一些亮点包括:

  • 在英伟达的帮助下增加了对自动混合精度(AMP)训练的本地支持,并且具有稳定的功能;

  • 增加了对 TensorPipe 的本地支持;

  • 在前端 API 增加了对复杂张量的支持;

  • 提供张量级内存消耗信息的新分析工具;

  • 分布式数据并行(DDP)训练和远程过程调用(RPC)包的大量改进和新功能。

PyTorch 官方博客表示,从此版本开始,PyTorch 的特性将分为 Stable(稳定版)、Beta(测试版)和 Prototype(原型版)。需要注意的是,Prototype 特性不包含在二进制包中,但可以通过使用 Nightly 从源代码构建或通过编译器标志(compiler flag)来使用。

此外,Facebook 还宣布,他们将把 Windows 版 PyTorch 的开发维护权移交给微软。

在 Windows 系统上运行 PyTorch 一直都是一种不愉快的体验,显然微软也看到了这一点。他们在 Pytorch 的博客中表示:

「在 PyTorch 1.6 中,我们为核心 PyTorch 及其域库提供了与 Linux 相同的测试覆盖率,同时将教程测试自动化,以此来改进 Windows 的核心质量。在 PyTorch 社区的帮助下,我们将测试覆盖范围添加到三个域库中:TorchVision、TorchText 和 TorchAudio。在 PyTorch 的后续版本中,我们将继续改进。根据收到的社区反馈,下一步的改进方向应该会聚焦于分布式训练支持和更好的 pip 安装体验。」

除了本地 Windows 体验,在今年的 Build 2020 大会上,微软还宣布了一个为 WSL 提供 GPU 计算支持的计划,PyTorch 将在其中起到不小的作用。现阶段,WSL2 已获得对 GPU 的初始支持,其中就包含对 PyTorch 的支持,WSL 用户可以直接运行本地 PyTorch 程序,进行机器学习,不需要传统的虚拟机或双引导设置。

性能与分析

[STABLE] 自动混合精度(AMP)训练

AMP 使用户可以轻松启用自动混合精度训练,从而在 Tensor Core GPU 上实现更高的性能并节省多达 50%的内存。使用本地支持的 torch.cuda.amp API,AMP 为混合精度提供了方便的方法,其中某些运算使用 torch.float32 (float)。其他运算使用 torch.float16(half)。有些运算,如线性层和卷积,在 float16 中要快得多。而另一些运算,比如缩减,通常需要 float32 的动态范围。混合精度尝试将每个运算与其相应的数据类型相匹配。

[BETA] FORK/JOIN 并行

新版本增加了对语言级构造的支持,以及对 TorchScript 代码中粗粒度并行的运行时的支持。这种支持对于一些情况非常有用,比如在集成中并行运行模型,或者并行运行循环网络的双向组件,它还允许为任务级并行释放并行架构(例如多核 CPU)的计算能力。

TorchScript 程序的并行执行是通过 torch.jit.fork 和 torch.jit.wait 两个 primitive 实现的。下面的例子展示了 foo 的并行执行:

[BETA] 内存分析器

「torch.autograd.profiler」API 现在包含一个可以让你检查 CPU 和 GPU 模型内不同算子的张量内存开销的内存分析器。

该 API 的用法如下所示:

分布式训练 & RPC

[BETA] 用于 RPC 的 TENSORPIPE 后端

PyTorch 1.6 为 RPC 模块引入了一个新的后端,它利用了 TensorPipe 库(一个针对机器学习的 tensor-aware 点对点通信 primitive,旨在补充 PyTorch 中分布式训练的现有 primitive)。TensorPipe 的成对和异步特性使其能够应用于数据并行之外的新的网络范式:客户端 - 服务器方法以及和模型和 pipeline 并行训练。

[BETA] DDP+RPC

PyTorch Distributed 支持两种强大的范式:用于对模型进行完全同步数据并行训练的 DDP 和支持分布式模型并行的 RPC 框架。在此之前,这两个特性是独立工作的,用户不能混用它们来尝试混合并行范式。

从 PyTorch 1.6 开始,该框架允许 DDP 和 RPC 无缝协作,这样用户就可以结合这两种技术来实现数据并行和模型并行。

[BETA] RPC - 异步用户函数

RPC 异步用户函数( Asynchronous User Function)支持执行用户定义函数时在服务器端生成和恢复的能力。在此特性之前,当被调用方处理请求时,一个 RPC 线程将一直等待,直到用户函数返回。

前端 API 更新

[BETA] 复数

Pythorch1.6 版本提供了对复杂张量的 beta 级支持。包括 torch.complex64 和 torch.complex128 dtypes。

复数在数学和工程中经常出现,特别是在信号处理中,复值神经网络是一个活跃的研究领域。复张量的 beta 版将支持通用的 PyTorch 和复张量功能,以及 Torchaudio、ESPne 等所需的功能。

更新的域库

TORCHVISION 0.7

torchvision 0.7 引入了两个新的预训练语义分割模型,即 FCN ResNet50 和 DeepLabV3 ResNet50,它们都在 COCO 上进行了训练,并且使用的内存占用空间小于 ResNet101。此外还引入了 AMP(自动混合精度),该功能可为不同的 GPU 运算自动选择浮点精度,从而在保持精度的同时提高性能。

TORCHAUDIO 0.6

torchaudio 现在正式支持 Windows,微软负责 Windows 版本。此版本还引入了一个新模块(包含 wav2letter)、若干新功能(contrast, cvm, dcshift, overdrive, vad, phaser, flanger, biquad)、新数据集(GTZAN,CMU)和一个新的可选 sox 后端,支持 TorchScript。

参考链接:https://pytorch.org/blog/pytorch-1.6-released/

https://tech.sina.com.cn/roll/2020-07-29/doc-iivhvpwx8021377.shtml

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

  1. float32精度_PyTorch 1.6来了:新增自动混合精度训练、Windows版开发维护权移交微软...

    刚刚,Facebook 通过 PyTorch 官方博客宣布:PyTorch 1.6 正式发布!新版本增加了一个 amp 子模块,支持本地自动混合精度训练.Facebook 还表示,微软已扩大了对 Py ...

  2. PyTorch 1.6 发布:原生支持自动混合精度训练并进入稳定阶段

    PyTorch 1.6 稳定版已发布,此版本增加了许多新的 API.用于性能改进和性能分析的工具.以及对基于分布式数据并行(Distributed Data Parallel, DDP)和基于远程过程 ...

  3. pytorch显卡内存随训练过程而增加_PyTorch重大更新:将支持自动混合精度训练!...

    AI编辑:我是小将 混合精度训练(mixed precision training)可以让模型训练在尽量不降低性能的情形下提升训练速度,而且也可以降低显卡使用内存.目前主流的深度学习框架都开始支持混合 ...

  4. torch.cuda.amp自动混合精度训练 —— 节省显存并加快推理速度

    torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 文章目录 torch.cuda.amp自动混合精度训练 -- 节省显存并加快推理速度 1.什么是amp? 2.为什么需要自动 ...

  5. Pytorch自动混合精度(AMP)训练

    相关问题:解决pytorch半精度amp训练nan问题 - 知乎 pytorch模型训练之fp16.apm.多GPU模型.梯度检查点(gradient checkpointing)显存优化等 - 知乎 ...

  6. 自动混合精度(AMP)介绍与使用【Pytorch】

    文章目录 1 前言 2 Mixed Precision Training 3 torch自动混合精度(AMP)介绍与使用 4 torch1.6及以上版本 1 前言 pytorch从1.6版本开始,已经 ...

  7. 【Pytorch】Pytorch的自动混合精度(AMP)

    1. 什么是自动混合精度训练? 我们知道神经网络框架的计算核心是Tensor,也就是那个从scaler -> array -> matrix -> tensor 维度一路丰富过来的t ...

  8. 浅尝Pytorch自动混合精度AMP

    AMP目录 浅尝Pytorch自动混合精度 从浮点数说起 深度学习中的浮点数 例1-上溢 例2-下溢 解决了什么问题? Pytorch相关功能简述 Autocasting Autocasting作上下 ...

  9. pytorch 中 混合精度训练(真香)

    一.什么是混合精度训练 在pytorch的tensor中,默认的类型是float32,神经网络训练过程中,网络权重以及其他参数,默认都是float32,即单精度,为了节省内存,部分操作使用float1 ...

最新文章

  1. 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案.pdf
  2. el表达式 java_java基础学习:JavaWeb之EL表达式
  3. J-Flash的使用
  4. apollo local 模式_Apollo 源码解析 —— 客户端配置 API(一)之一览
  5. 探秘Tomcat——一个简易的Servlet容器
  6. __str__的用法
  7. 十三、写了两年多Python文章的我,带你走进Python数据分析
  8. Python中的pip怎么配置环境变量
  9. Python接口自动化之requests请求封装
  10. 5h是什么意思_2B铅笔中的2B是啥意思?
  11. python列表去重函数_对python中两种列表元素去重函数性能的比较方法
  12. html利用cookie登陆,前端登陆注册实现——利用cookie模仿后台数据库存取数据
  13. 公网远程Everything快速搜索私有云资料【内网穿透】
  14. 微信小程序官方示例文档免费下载文档
  15. 浅谈EV证书的作用及思考
  16. win7系统中如何以管理员身份修改hosts文件
  17. 在 HBuilder X 创建Uni-app项目运行时报错
  18. 新世纪版五笔字根高清版
  19. 微信3.1.0.58逆向-微信3.1.0.58HOOK接口说明(WeChatHelper.dll)-获取当前聊天微信ID
  20. Django Model 定义语法

热门文章

  1. 中国电子学会青少年编程能力等级测试图形化一级编程题:小狗进圈
  2. 【怎样写代码】参数化类型 -- 泛型(三):泛型之类型参数
  3. Matlab数据的可视化 -- 线性图函数plot
  4. Matlab与线性代数--广义逆矩阵
  5. Visual Studio UML Use Case Diagram(1)
  6. 鲲鹏应用创新大赛山西区域赛圆满落幕,鲲鹏生态助力信创变革
  7. 听说过代码洁癖,Bug洁癖怎么解?
  8. 美团是怎么玩儿AI的?今晚8点揭秘美团超大规模知识图谱--美团大脑
  9. 12岁AI开发者现身DuerOS发布会:得开发者得天下
  10. AI解译遥感影像,商汤的“黑科技”了解一下