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

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

机器之心报道,机器之心编辑部。

80ec0886119132c2ea42303ac8dea6e7.png

相比于以往的 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 的并行执行:

fd542894a756acfc932afa81f7d27408.png

[BETA] 内存分析器

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

该 API 的用法如下所示:

d4a54419c826e466e53cfd805a3c3d47.png

分布式训练 & RPC

[BETA] 用于 RPC 的 TENSORPIPE 后端

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

507f0d99196e02549532168229746ae1.png

[BETA] DDP+RPC

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

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

5a49b9af3426a6f805e847f16012a0cc.png

[BETA] RPC - 异步用户函数

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

ed188088ab1a42fad43e24c7f87ab581.png

前端 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/435247.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

神经网络与深度学习——TensorFlow2.0实战(笔记)(三)(python语句)

1.if语句 #if语句 x,y 3,5 if x<y:print("x<y") elif xy:print("xy") else:print("x>y") 2.条件表达式 x,y3,5 #表达式1(条件为真的结果) if 判断条件 else 表达式2(条件为假的结果) print(x if x>y else y) 3.while语句 #死循环…

天气预报的获取

好久没有写技术文章了&#xff0c;2010年工作太忙&#xff0c;奔波在国内各地&#xff0c;也没什么时间关注一些技术方面的事情&#xff0c;最近有一个项目封闭开发&#xff0c;有些时间来写些琐碎的东西&#xff0c;就当是整理下最近的东西吧&#xff0c;没什么技术价值&#…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python列表与元组)

序列数据结构 1.成员是有序排列的 2.每个元素的位置称为下标或索引 3.通过索引访问序列中的成员 4.Python中的序列数据类型有字符串、列表、元组 "abc" ≠ "bca" 5.Python中的列表和元组&#xff0c;可以存放不同类型的数据 列表使用方括号[ ]表示&a…

apktoolkit apk反编译没有文件_[工具] Mac下一键APK逆向环境

安装apktool和dex2jar,jd-guihomebrew安装&#xff1a; brew install apktool brew install dex2jar JD-GUI去http://jd.benow.ca/下载 dmg可能不支持最新版本的mac用不了&#xff0c;打开就报错反编译流程执行脚本apktool d xxx.apk 注&#xff1a;xxx.apk为你要反编译的apk…

搭建你的嵌入式Vxworks开发环境

3.1 最常见的开发环境配置使用串口和网络连接&#xff08;host和target之间&#xff09;。串口连接用于和boot loader之间的通信&#xff08;如输出信息在host上的显示&#xff09;&#xff0c;网络连接用于传输文件&#xff0c;包括Vxworks system image。默认情况下使用网络连…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python字典和集合)

字典和集合 字典 每个字典元素都是一个键(关键字)/值(关键字对应的取值)对 #创建字典 dic_score{"语文":80,"数学":99} #打印 print(dic_score) print(dic_score["语文"]) #长度 print(dic_score.__len__)#错误写法 print(len(dic_score)) #…

[Project Euler]加入欧拉 Problem 9

A Pythagorean triplet is a set of three natural numbers, a b c, for which, a2 b2 c2 For example, 32 42 9 16 25 52. There exists exactly one Pythagorean triplet for which a b c 1000.Find the product abc. 意思很明白找出这样的a, b, c abc 1000 a …

java 在已有的so基础上封装jni_[干货]再见,Android JNI 封装

1 前言2 JNI 速查表2.1 Java 和 Native 数据类型映射表2.2 引用类型3 JNI 理论基础速览4 JNI 常用场景示例4.1 字符串传递(java->native)4.2 字符串返回(native->java)4.3 数组传递(java->native)4.4 其他复杂对象传递(java->native)4.5 复杂对象返回(native->j…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python函数)

函数&#xff08;function) &#xff1a;实现某种特定功能的代码块 优点&#xff1a;程序简洁&#xff0c;可重复调用、封装性好、便于共享 类别&#xff1a;系统函数和用户自定义函数 Python内置函数 数学运算函数 print(abs(-1)) print(pow(2,3)) print(round(3.1415926,…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python模块、包和库)

模块&#xff08;Module&#xff09; 模块是一个python文件&#xff08;.py&#xff09;&#xff0c;拥有多个功能相近的函数或类。 便于代码复用&#xff0c;提高编程效率&#xff0c;提高了代码的可维护性。 避免函数名和变量名冲突。 包&#xff08;Package&#xff09;…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(Python面向对象的编程)

面向对象的程序设计&#xff08;OOP&#xff09; 对象&#xff08;object&#xff09;: 将属性和方 法封装在一起。 类&#xff08;class)&#xff1a; 具有相同的属性和方法的对象集合。 对象是类的实例 子类继承了父类的全部属性和方法&#xff0c; 并且也有自己特有的属…

python3.8怎么打开创建_Python 3.8 新功能大揭秘【新手必学】

最新版本的Python发布了&#xff01;今年夏天&#xff0c;Python 3.8发布beta版本&#xff0c;在2019年10月14日&#xff0c;第一个正式版本已准备就绪。现在&#xff0c;我们都可以开始使用新功能并从最新改进中受益。 Python 3.8是Python语言的最新版本&#xff0c;它适合用于…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python文件)

路径 绝对路径&#xff1a;从盘符开始的路径 相对路径&#xff1a;从当前目录&#xff08;工作目录&#xff09;的路径 获取当前路径 #获取当前工作目录 import os print(os.getcwd())访问模式 文件对象open&#xff08;文件名&#xff0c;访问模式&#xff09; f open…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python异常处理)

异常&#xff1a; 程序运行时的错误&#xff0c;对应一个Python对象。 try: 语句块 except 异常1 as 错误原因: 出现异常1后的处理代码 except 异常2 as 错误原因: 出现异常2后的处理代码 #在程序运行时&#xff0c;解释器尝试执行try语句块中的所有代码。 try:alist [0,…

linux串口编程实例_Linux 网络编程——原始套接字实例:发送 UDP 数据包

以太网报文格式&#xff1a;IP 报文格式&#xff1a;UDP 报文格式&#xff1a;校验和函数&#xff1a;/*******************************************************功能&#xff1a;校验和函数参数&#xff1a;buf: 需要校验数据的首地址nword: 需要校验数据长度的一半返回值&am…

python2安装_如何安装python2

目前市面上python的主流版本有两个&#xff0c;一是python2.X的版本&#xff0c;另有一种是python3.X的版本。python2预计在2020年将停止维护&#xff0c;未来python3将是主流。 下面讲一下python2.x的安装详细讲解。Python安装&#xff1a; 本文以python 2.7.8(64位)为例说明&…

神经网络与深度学习——TensorFlow2.0实战(笔记)(四)(python上下文管理器)

with语句 使用with语句替代try-finally 语句&#xff0c;代码更加的简洁清晰 对于需要对资源进行访问的任务&#xff0c;无论在代码运行过程中&#xff0c;是否发 生异常&#xff0c;都会执行必要的清理操作&#xff0c;释放资源。 1. with open(r"D:\code1\pythontes…

神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(NumPy科学计算库<1>python)

多维数组 形状&#xff08;Shape&#xff09;&#xff1a; 是一个元组&#xff0c;描述数组的维度&#xff0c;以及各个维度的长度。 长度&#xff08;Length&#xff09;&#xff1a; 某个维度中的元素个数。 数字单门课程成绩1*课程成绩一维数组多门课程成绩n*课程成绩二…

web扫描

随着网站越来越多元化&#xff0c;内容或资讯都会不定期更新&#xff0c;而每个新增的页面或连结&#xff0c;都有可能带来新的漏洞&#xff0c;因此&#xff0c;网站的安全性 检测不论在上线前或是每次更新时&#xff0c;都是务必检查的工作。 但是手动的网站检测&#xff0c;…

2.2基本算法之递归和自调用函数_数据结构与算法之5——队列和栈

栈和队列比较简单&#xff0c;而且实用性非常广泛&#xff0c;这里主要介绍一下他们的概念和实现&#xff0c;在很多算法中&#xff0c;栈和队列的运用很重要&#xff0c;因此&#xff0c;虽然简单确是最重要的数据结构之一&#xff0c;必须重视。栈是保证元素后进先出(后存入者…