「炼丹」师的福音!支持AMD GPU,PyTorch 1.8来了!

2021-03-24 16:37:06 浏览数 (1)

【新智元导读】PyTorch1.8发布,整体来看,本次更新涵盖1.7版本发布以来,共计3000多次Github提交,包括编译、代码优化、科学计算前端 API 以及通过 pytorch.org 提供的二进制文件支持AMD ROCm。
PyTorch是一个开源的Python机器学习库。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,用于自然语言处理等应用程序。

近日,Facebook发布了PyTorch 1.8新版本,加入了对AMD ROCm的支持,可以不用去配置Docker在原生环境下运行。

其中一些重大更新包括:

  • 支持通过 torch.fx进行函数转换;
  • 增加和调整 API以支持 FFT( torch.fft )、线性代数函数( torch.linalg )
  • 添加了复杂张量自动求导(autograd)的支持,并提升了矩阵计算 hessian 和 jacobian 的能力;
  • 对分布式训练进行了重大更新和改进,包括:改进 NCCL 可靠性,支持管道并行,RPC 分析,支持添加梯度压缩的通讯 钩子。

在PyTorch 1.8版本中,官方对一些PyTorch库也进行了相应的更新,主要包括 TorchCSPRNG、TorchVision、TorchText 和 TorchAudio。

PyTorch 1.8版本中的功能分为稳定版 (Stable)、测试版 (Beta) 和原型版 (Prototype)。

新增及更新 API

新增及更新 API 包括:与 NumPy 兼容的额外 API,及在推理和训练时方面,提高代码性能的额外 API。

PyTorch 1.8 主要更新功能简介:

  • [稳定版] Torch.fft 支持高性能 NumPy 中的 FFT

实现了 NumPy np.ft 功能的同时,还支持硬件加速和 autograd

  • [测试版] torch.linalg 将支持 NumPy 中的线性代数函

为常见的线性代数运算提供与 NumPy 类似的支持,支持 Cholesky 分解、 行列式、特征值等功能。

  • [测试版] 利用 FX 进行 Pthon 代码转换。

增强分布式训练

PyTorch 1.8支持稳定的异步错误/超时处理,以提高 NCCL 稳定性;

此外,还增加了对管道并行的支持,可将数据拆解成更小的块以提高并行计算效率。

并可以通过 DDP 中的通讯钩子进行梯度压缩,用于控制如何在workers之间同步梯度。

此外,PyTorch 1.8 还增加了一些 prototype 特性,具体如下:

  • ZeroRedundancyOptimizer:有助于减少每个线程的内存占用;
  • 进程组 NCCL 发送/接收:允许用户在 Python 层(而非 C 层)实现集合操作;
  • RPC 中用 TensorPipe 支持 CUDA:为使用 PyTorch RPC 和多 GPU 机器的用户带来速度提升;
  • 远程模块:允许用户像操作本地模块那样操作远程 worker 上的模块。

PyTorch 移动端

本次更新发布了图像分割模型DeepLabV3在安卓和IOS,能更好地帮助新用户将 PyTorch 模型部署在移动端。

PyTorch 移动端新增教程包括:

  • iOS 端用 DeepLabV3 进行图像分割
  • Android 端用 DeepLabV3 进行图像分割

同时为老用户提供开发工具,让其更得心应手地用 PyTorch 进行移动端开发。

性能优化工具

新增测试版benchmark utils ,使用户能够更轻松地监控模型性能。还开放了一个自动量化 API,能改进 Eager Mode Quantization。

  • Benchmark utils

Benchmark utils 允许用户进行精确的性能测量,并提供组合工具,帮助制定基准和进行后期处理。

  • FX Graph Mode Quantization

新增的自动量化 API,它通过增加函数支持和自动化量化过程,改进 Eager Mode Quantization。

硬件支持

PyTorch 1.8 版本新增了两个 测试版本特性

  • 强化 PyTorch Dispatcher 的能力,使其适应 C 中后端开发

支持用户在 pytorch/pytorch repo 之外创建新的树外设备,并与本地 PyTorch 设备保持同步。

  • AMD GPU 二进制文件现已推出

新增对 ROCm wheel 的支持。

需要注意的是,PyTorch 1.8 仅在 Linux 系统中支持 AMD ROCm。

参考资料:

https://www.phoronix.com/scan.php?page=news_item&px=PyTorch-1.8-Released

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

https://twitter.com/cHHillee/status/1367621538791317504

0 人点赞