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

简介: PyTorch1.8发布,整体来看,本次更新涵盖1.7版本发布以来,共计3000多次Github提交,包括编译、代码优化、科学计算前端 API 以及通过 pytorch.org 提供的二进制文件支持AMD ROCm。

微信图片_20220112174057.png


PyTorch是一个开源的Python机器学习库。2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch,用于自然语言处理等应用程序。


微信图片_20220112174100.jpg


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


微信图片_20220112174103.png


其中一些重大更新包括:


  • 支持通过 torch.fx进行函数转换;

  • 增加和调整 API以支持 FFT( torch.fft )、线性代数函数( torch.linalg )

  • 添加了复杂张量自动求导(autograd)的支持,并提升了矩阵计算 hessian 和 jacobian 的能力;

  • 对分布式训练进行了重大更新和改进,包括:改进 NCCL 可靠性,支持管道并行,RPC 分析,支持添加梯度压缩的通讯 钩子。


微信图片_20220112174104.png


在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 代码转换。


微信图片_20220112174106.png


 增强分布式训练


 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 进行图像分割


微信图片_20220112174108.png


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


微信图片_20220112174110.png


 性能优化工具


 新增测试版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。

 

微信图片_20220112174112.png


参考资料: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

相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
相关文章
|
1月前
|
人工智能 并行计算 PyTorch
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
115 0
|
1月前
|
机器学习/深度学习 存储 PyTorch
【AMP实操】解放你的GPU运行内存!在pytorch中使用自动混合精度训练
【AMP实操】解放你的GPU运行内存!在pytorch中使用自动混合精度训练
105 0
|
10天前
|
机器学习/深度学习 并行计算 PyTorch
【从零开始学习深度学习】20. Pytorch中如何让参数与模型在GPU上进行计算
【从零开始学习深度学习】20. Pytorch中如何让参数与模型在GPU上进行计算
|
1月前
|
机器学习/深度学习 并行计算 PyTorch
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
本文介绍了PyTorch中利用多GPU进行深度学习的三种策略:数据并行、模型并行和两者结合。通过`DataParallel`实现数据拆分、模型不拆分,将数据批次在不同GPU上处理;数据不拆分、模型拆分则将模型组件分配到不同GPU,适用于复杂模型;数据和模型都拆分,适合大型模型,使用`DistributedDataParallel`结合`torch.distributed`进行分布式训练。代码示例展示了如何在实践中应用这些策略。
736 2
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
|
1月前
|
机器学习/深度学习 并行计算 算法框架/工具
Anaconda+Cuda+Cudnn+Pytorch(GPU版)+Pycharm+Win11深度学习环境配置
Anaconda+Cuda+Cudnn+Pytorch(GPU版)+Pycharm+Win11深度学习环境配置
271 3
|
7月前
|
并行计算 Ubuntu PyTorch
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)(上)
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)
189 0
|
7月前
|
并行计算 Ubuntu PyTorch
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)(下)
Xshell远程连接配置 Ubuntu 18.04.6 + Anaconda + CUDA + Cudnn + Pytorch(GPU+CPU)
153 0
|
1月前
|
机器学习/深度学习 编解码 PyTorch
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
Pytorch实现手写数字识别 | MNIST数据集(CNN卷积神经网络)
|
10天前
|
机器学习/深度学习 自然语言处理 算法
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
【从零开始学习深度学习】49.Pytorch_NLP项目实战:文本情感分类---使用循环神经网络RNN
|
10天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现
【从零开始学习深度学习】30. 神经网络中批量归一化层(batch normalization)的作用及其Pytorch实现