近日,PyTorch 团队公布了 PyTorch 1.8 版本。该版本整合了自去年 10 月 1.7 版本公布以来的 3000 多次 commit,提供了编译、代码优化、科学计算前端 API 方面的主要革新和新个性。值得一提的是,该版本新增了对 AMD ROCm 的支援。
此外,PyTorch 1.8 版本还为大规模训练 pipeline 和模型并行化、梯度压缩提供了个性改进。该版本的主要亮点如下:
支援 Python 函数转换;
增添或稳定化 API,以支援 FFT (torch.fft)、线性代数函数 (torch.linalg);
增添对复杂张量 autograd 的支援;
多项革新用于提升 Hessian 与 Jacobian 矩阵计算的性能;
改进分布式训练,包罗提升 NCCL 可靠性、支援 pipeline 并行化、RPC profiling,以及通过增添梯度压缩来支援通讯钩子(hook)。
(注:从 PyTorch 1.6 版本开始,PyTorch 个性分为 Stable(稳定版)、Beta(测试版)和 Prototype(原型版)。此外,PyTorch 团队还对多个 PyTorch 库进行了主要革新,包罗 TorchCSPRNG、TorchVision、TorchText 和 TorchAudio。
新增和革新 API通过 torch.fft 支援 NumPy 兼容的 FFT 操纵PyTorch 1.7 版本提出了这一个性的 Beta 版,而在 1.8 版本中该个性革新为稳定版。FFT 支援旨在完成 PyTorch 支援科学计算的目的。torch.fft 模块和 NumPy 的 np.fft 模块实现了同样的功能,并且支援硬件加速和 autograd。通过 torch.linalg 支援 NumPy 式的线性代数函数torch.linalg 模块类似于 NumPy 中的 np.linalg 模块,支援 NumPy 式的线性代数操纵,包罗 Cholesky 分解、行列式、特征值等。使用 torch.fx 进行 Python 代码转换这一 Beta 个性支援 Python 代码转换,开发者可以利用它做 Conv/BN 融合、图模式量化、实现 vmap 等。鉴于 torch.fx 提供 PyTorch 代码的图表示,开发者可以用 Python 写任意变换或分析。
分布式训练pipeline 并行化这一新增的 Beta 个性提供了一个易用的 PyTorch API,可将 pipeline 并行化作为训练 loop 的一部分。DDP 通讯钩子DDP 通讯钩子是一个通用接口,用于控制 workers 间的梯度通讯。此外,PyTorch 1.8 还增加了一些 prototype 个性:
ZeroRedundancyOptimizer:有助于减少每个线程的内存占用;
Process Group NCCL Send/Recv:该个性允许用户在 Python 层(而非 C++ 层)实现集合操纵;
CUDA-support in RPC using TensorPipe:该个性为使用 PyTorch RPC 和多 GPU 机器的用户带来速度提升;
Remote Module:该个性允许用户像操纵本地模块那样操纵远程 worker 上的模块。
支援 PyTorch Mobile此次版本革新公布了一组新的移动端教程,包罗在 iOS 端和安卓端实现图像分割 DeepLabV3 模型。PyTorch 还公布了新的 demo app,包罗图像分割、目标检测、神经机器翻译、问答和视觉 transformer。此外,这次公布还包罗 PyTorch Mobile Lite Interpreter,该解释器可降低运行时二进制文件大小。性能优化为了帮助用户更好地监控性能变化,PyTorch 1.8 版本支援 benchmark utils,并开放了新的自动量化 API——FX Graph Mode Quantization。硬件支援在硬件支援方面,PyTorch 1.8 版本新增了两个 Beta 个性:扩展 PyTorch Dispatcher,使之适应新型 C++ 后端;支援 AMD ROCm。需要注意的是,PyTorch 1.8 仅在 Linux 系统中支援 AMD ROCm。
参考链接:https://pytorch.org/blog/pytorch-1.8-released/https://github.com/pytorch/pytorchhttps://pytorch.org/https://twitter.com/cHHillee/status/1367621538791317504
原创文章,作者:机器之心,如若转载,请注明出处:https://www.iaiol.com/news/35461