当前位置: 首页 > 科技观察

PyTorch1.8发布,支持AMDGPU和Python函数转换

时间:2023-03-13 16:17:49 科技观察

近日,PyTorch团队发布了PyTorch1.8版本。该版本自去年10月发布1.7版本以来,集成了3000多个commit,在编译、代码优化、科学计算前端API等方面进行了重大更新和新特性。值得一提的是,该版本增加了对AMDROCm的支持。此外,PyTorch1.8版本还提供了针对大规模训练流水线以及模型并行化和梯度压缩的功能改进。本次发布的主要亮点如下:支持Python函数转换;添加或稳定API以支持FFT(torch.fft)、线性代数函数(torch.linalg);添加对复杂张量autograd的支持;改进Hessian和Jacobian矩阵计算性能的若干更新;改进分布式训练,包括提高NCCL可靠性、支持管道并行化、RPC分析以及通过添加梯度压缩支持通信挂钩。(注:从PyTorch1.6开始,PyTorch特性分为Stable(稳定版)、Beta(测试版)和Prototype(原型版)。此外,PyTorch团队还对多个PyTorch库进行了重大更新,包括TorchCSPRNG、TorchVision、TorchText和TorchAudio新的和更新的API(1)通过torch.fft支持与NumPy兼容的FFT操作PyTorch1.7版提出了此功能的Beta版本,并在1.8版中将此功能更新为稳定版本。支持是为了完成PyTorch支持科学计算的目的。torch.fft模块和NumPy的np.fft模块实现了相同的功能,支持硬件加速和autograd。(2)支持NumPy风格的线性代数函数torch.linalg通过torch.linalg模块类似于NumPy中的np.linalg模块,支持NumPy风格的线性代数运算,包括Cholesky分解、行列式、特征值等。使用torch.fx进行Python代码转换是Beta功能,支持Python代码转换,开发者可以使用它来进行Conv/BN融合、图形模式量化、实现vmap等。由于torch.fx提供了PyTorch代码的图形表示,开发人员可以用Python编写任意转换或分析。分布式训练(1)管道并行化这个新的Beta功能提供了一个易于使用的PyTorchAPI,可以将管道并行化作为训练循环的一部分。(2)DDPcommunicationhookDDPcommunicationhook是用于控制worker之间梯度通信的通用接口。此外,PyTorch1.8还增加了一些原型特性:ZeroRedundancyOptimizer:有助于减少每个线程的内存占用;ProcessGroupNCCLSend/Recv:该特性允许用户在Python层(而不是C++层)实现收集操作;CUDA-supportinRPCusingTensorPipe:这个特性为使用PyTorchRPC和多GPU机器的用户带来了速度提升;RemoteModule:此功能允许用户像操作本地模块一样操作远程工作者上的模块。支持PyTorchMobile本次版本更新发布了一套新的移动教程,包括在iOS和Android上实现图像分割DeepLabV3模型。PyTorch还发布了新的演示应用程序,包括图像分割、对象检测、神经机器翻译、问答和视觉转换器。此外,此版本还包括PyTorchMobileLiteInterpreter,它减少了运行时二进制文件的大小。性能优化为了帮助用户更好地监控性能变化,PyTorch1.8支持benchmarkutils,并开放了一个新的自动量化API——FXGraphModeQuantization。硬件支持在硬件支持方面,PyTorch1.8增加了两个新的Beta功能:扩展PyTorchDispatcher以适应新的C++后端;支持AMDROCm。需要注意的是,PyTorch1.8仅支持Linux系统上的AMDROCm。参考链接:https://pytorch.org/blog/pytorch-1.8-released/https://github.com/pytorch/pytorchhttps://pytorch.org/https://twitter.com/cHHillee/status/1367621538791317504【本文为《机器之心》专栏原文翻译,微信公众号“机器之心(id:almosthuman2014)”】点此阅读更多本作者好文