PyTorch 1.7发布:支持CUDA 11、Windows分布式训练

  • A+
所属分类:专业高尔夫球

原标题:PyTorch 1.7发布:支持CUDA 11、Windows分布式训练 来源:量子位

关注前沿科技

木易 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

木易 发自 凹非寺 

量子位 报道 | 公众号 QbitAI

自从7月份CUDA 11发布以来,就陆陆续续听到了网友类似的吐槽:

这正说着,10月27日,PyTorch团队发布了PyTorch 1.7,终于能支持CUDA 11了,可喜可贺(狗头)。

除此之外,这次1.7的版本,也带来了许多功能的更新和稳定。

在更新上,有了许多新的应用编程接口,如支持与NumPy兼容的快速傅立叶变换的操作及性能分析工具。

此外,分布式数据并行(DDP)和基于远程过程调用(RPC)的分布式训练也有了重大的更新,在Windows平台上的分布式训练提供支持。

最后,一些功能也稳定了下来,包括torchvision中的本机图像IO,torchaudio中的语音识别、文字转语音等许多功能。

自从PyTorch 1.6开始,PyTorch的功能便分为稳定版(stable),测试版(Beta)和原型版(prototype)。

那么,这次PyTorch 1.7又具体从哪些方面带来了新的功能,这些功能又进展到哪一版本呢?

接下来让我们来快速盘点一下。

前端API

前端API共有3项更新,都是处于测试版状态。

NUMPY兼容的TORCH.FFT模块 [BETA]

PyTorch 1.7版本增加了一个新的torch.fft模块,该模块使用与NumPy相同的API来实现与FFT相关的功能。

对变压器神经网络模块的C++支持 [BETA]

1.7版本更新后,开发人员可以从C++前端直接使用nn.transformer模块抽象。

TORCH.SET_DETERMINISTIC [BETA]

PyTorch 1.7增加了torch.set_determinative(bool)函数,该函数可以指导PyTorch操作者在可用时选择确定性算法,并在操作可能导致不确定性行为时引发运行时错误。

性能&分析

堆栈跟踪添加至探查器 [BETA]

探查器可以帮助操作者追踪操作符的名称及输入等信息,而在1.7版本更新后,他们还可以追踪操作符在代码中的位置。

分布式训练&RPC

分布式训练和RPC有着最多的更新数目——7项,这其中有1项稳定版、5项测试版及1项原型版。

Torchelastic捆绑进PYTORCH DOCKER镜像 [STABLE]

Torchelastic提供了当前torch.distributed.launch命令行界面的严格超集,并增加了容错和弹性功能。

通过将Torchelastic捆绑在与PyTorch相同的docker镜像中,用户可以立即开始试用TorchElastic而不必单独安装。

支持DDP中不均匀的数据集输入 [BETA]

PyTorch 1.7引入了一个新的上下文管理器,该管理器将与使用torch.nn.parallel.DistributedDataParallel训练的模型结合使用,以便能够在不同的过程中使用不均匀的数据集大小进行训练。

NCCL可靠性-异步错误/超时处理 [BETA]

过去由于集合体拥挤,NCCL训练可能会死机。如果检测到潜在的死机,此功能将中止卡住的集合体,并抛离异常或崩溃的程序。

TORCHSCRIPT RPC_REMOTE & RPC_SYNC [BETA]

PyTorch 1.7将功能将扩展到其余两个核心RPC API,完成针对TorchScript支持的主要RPC API,它允许用户使用TorchScript中的现有python RPC API。

分布式优化器的TORCHSCRIPT支持 [BETA]

在PyTorch 1.7中,启用分布式优化器中的TorchScript支持来删除GIL,并使在多线程应用程序中运行优化器成为可能。新的分布式优化器与以前有完全相同的接口,但是它自动将每个工作器中的优化器转换成TorchScript,使每个GIL空闲。

增强基于RPC的分析 [BETA]

PyTorch 1.6首次引入了对将PyTorch分析器与RPC框架结合使用的支持。在PyTorch 1.7中,进行了以下增强:

实现了对通过RPC分析TorchScript函数的更好支持

在与RPC配合使用的探查器功能方面实现了均等

在服务器端增加了对异步RPC函数的支持

分布式训练的WINDOWS支持 [PROTOTYPE]

PyTorch 1.7为Windows平台上的分布式数据并行和集合通信带来了原型支持。

移动支持

PyTorch Mobile通过Cocoapods和JCenter中提供的二进制软件包同时支持iOS和Android。

提高性能的PYTORCH移动缓存分配器 [BETA]

为了减少性能损失,PyTorch 1.7为CPU提供了一个简单的缓存分配器。分配器根据张量大小缓存分配,目前只能通过PyTorch C++ API获得。

视觉工具包torchvision

变换现在支持张量输入、批量计算、图形处理器和TORCHSCRIPT [STABLE]

PyTorch 1.7 实现了以下新功能:

支持图形处理器加速

批量转换,如视频所需

变换多波段torch张量图像(多于3-4个通道)

torchscript将与用户部署的模型一起转换

JPEG和PNG格式的本机图像IO [STABLE]

torchvision 0.8.0引入了针对JPEG和PNG格式的本机图像读取和写入操作。

RETINANET检测模型 [STABLE]

该版本为RetinaNet增加了预处理模型。

新的视频读取API [BETA]

这个版本引入了一个新的视频阅读抽象,它提供了对视频迭代的更细粒度的控制。

它支持图像和音频,并实现了一个迭代器接口,因此它可以与其他python库之间互操作。

音频工具包torchaudio

在此版本中,torchaudio扩展了对模型和端到端应用程序的支持,增加了wav2letter训练管道、端到端文本到语音和源分离管道。

语音识别 [STABLE]

在wav2letter模型的基础上,新版本现在添加了一个带有LibriSpeech数据集的wav2letter训练管道示例。

文字转语音 [STABLE]

新版本添加了一个基于WaveRNN模型的声码器,此外还提供了一个WaveRNN训练管道的例子。

声源分离 [STABLE]

在论文“Conv-TasNet: Surpassing Ideal Time-Frequency Magnitude Masking for Speech Separation”的基础上,增加了ConvTasNet模型,支持声源分离。

网友讨论:PyTorch更直观易懂、更新比TF快

对于PyTorch的更新,在reddit引起了网友其与Tensorflow的讨论。

从网友的讨论来看,直观、易懂似乎是PyTorch胜过Tensorflow的一大优势。

然而,也有网友指出了PyTorch的不足:PyTorch在边缘计算并没有Tensorflow成熟。

最后,还有网友发出了灵魂拷问:

PyTorch更新它的官方支持好像比TF更快?稳定性和更新率,你们更喜欢其中哪一种呢?

如果是你的话,会更喜欢哪一种呢?

参考链接:

https://pytorch.org/blog/pytorch-1.7-released/

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

https://www.reddit.com/r/MachineLearning/comments/jj4sr7/d_pytorch_17_released_w_cuda_11_new_apis_for_ffts/?sort=new

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: