自从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共有3项更新,都是处于测试版状态。
PyTorch 1.7版本增加了一个新的torch.fft模块,该模块使用与NumPy相同的API来实现与FFT相关的功能。
1.7版本更新后,开发人员可以从C++前端直接使用nn.transformer模块抽象。
PyTorch 1.7增加了torch.set_determinative(bool)函数,该函数可以指导PyTorch操作者在可用时选择确定性算法,并在操作可能导致不确定性行为时引发运行时错误。
探查器可以帮助操作者追踪操作符的名称及输入等信息,而在1.7版本更新后,他们还可以追踪操作符在代码中的位置。
分布式训练和RPC有着最多的更新数目——7项,这其中有1项稳定版、5项测试版及1项原型版。
Torchelastic提供了当前torch.distributed.launch命令行界面的严格超集,并增加了容错和弹性功能。
通过将Torchelastic捆绑在与PyTorch相同的docker镜像中,用户可以立即开始试用TorchElastic而不必单独安装。
PyTorch 1.7引入了一个新的上下文管理器,该管理器将与使用torch.nn.parallel.DistributedDataParallel训练的模型结合使用,以便能够在不同的过程中使用不均匀的数据集大小进行训练。
过去由于集合体拥挤,NCCL训练可能会死机。如果检测到潜在的死机,此功能将中止卡住的集合体,并抛离异常或崩溃的程序。
PyTorch 1.7将功能将扩展到其余两个核心RPC API,完成针对TorchScript支持的主要RPC API,它允许用户使用TorchScript中的现有python RPC API。
在PyTorch 1.7中,启用分布式优化器中的TorchScript支持来删除GIL,并使在多线程应用程序中运行优化器成为可能。新的分布式优化器与以前有完全相同的接口,但是它自动将每个工作器中的优化器转换成TorchScript,使每个GIL空闲。
PyTorch 1.6首次引入了对将PyTorch分析器与RPC框架结合使用的支持。在PyTorch 1.7中,进行了以下增强:
PyTorch 1.7为Windows平台上的分布式数据并行和集合通信带来了原型支持。
PyTorch Mobile通过Cocoapods和JCenter中提供的二进制软件包同时支持iOS和Android。
为了减少性能损失,PyTorch 1.7为CPU提供了一个简单的缓存分配器。分配器根据张量大小缓存分配,目前只能通过PyTorch C++ API获得。
PyTorch 1.7 实现了以下新功能:
torchvision 0.8.0引入了针对JPEG和PNG格式的本机图像读取和写入操作。
该版本为RetinaNet增加了预处理模型。
这个版本引入了一个新的视频阅读抽象,它提供了对视频迭代的更细粒度的控制。
它支持图像和音频,并实现了一个迭代器接口,因此它可以与其他python库之间互操作。
在此版本中,torchaudio扩展了对模型和端到端应用程序的支持,增加了wav2letter训练管道、端到端文本到语音和源分离管道。
在wav2letter模型的基础上,新版本现在添加了一个带有LibriSpeech数据集的wav2letter训练管道示例。
新版本添加了一个基于WaveRNN模型的声码器,此外还提供了一个WaveRNN训练管道的例子。
在论文“Conv-TasNet: Surpassing Ideal Time-Frequency Magnitude Masking for Speech Separation”的基础上,增加了ConvTasNet模型,支持声源分离。
对于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
— 完 —
本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。
「百度AI开发系列课」免费报名!
5分钟上手,10分钟定制高精度AI模型,硬核百度EasyDL,小白也能学!
10.28日,百度高级工程师带你轻松学AI开发、实现AI模型训练与部署!扫码添加量子位小助手(qbitbot12)、加入课程直播群吧~▽
p.s.参与群互动、完成课堂任务还有机会获得100元京东卡、《智能经济》图书等礼品哦~
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
一键三连「分享」、「点赞」和「在看」
科技前沿进展日日相见~