「炼丹」师的福音!支持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

相关实践学习
部署Stable Diffusion玩转AI绘画(GPU云服务器)
本实验通过在ECS上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。
相关文章
|
6月前
|
人工智能 并行计算 PyTorch
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
【PyTorch&TensorBoard实战】GPU与CPU的计算速度对比(附代码)
336 0
|
6月前
|
机器学习/深度学习 存储 PyTorch
【AMP实操】解放你的GPU运行内存!在pytorch中使用自动混合精度训练
【AMP实操】解放你的GPU运行内存!在pytorch中使用自动混合精度训练
240 0
|
3月前
|
机器学习/深度学习 并行计算 PyTorch
GPU 加速与 PyTorch:最大化硬件性能提升训练速度
【8月更文第29天】GPU(图形处理单元)因其并行计算能力而成为深度学习领域的重要组成部分。本文将介绍如何利用PyTorch来高效地利用GPU进行深度学习模型的训练,从而最大化训练速度。我们将讨论如何配置环境、选择合适的硬件、编写高效的代码以及利用高级特性来提高性能。
608 1
|
3月前
|
并行计算 PyTorch 算法框架/工具
【Pytorch】查看GPU是否可用
本文提供了使用PyTorch检查GPU是否可用的方法,包括查看PyTorch版本、编译时使用的CUDA版本以及当前CUDA是否可用于PyTorch。
314 2
|
5月前
|
机器学习/深度学习 并行计算 PyTorch
【从零开始学习深度学习】20. Pytorch中如何让参数与模型在GPU上进行计算
【从零开始学习深度学习】20. Pytorch中如何让参数与模型在GPU上进行计算
|
6月前
|
机器学习/深度学习 并行计算 PyTorch
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
本文介绍了PyTorch中利用多GPU进行深度学习的三种策略:数据并行、模型并行和两者结合。通过`DataParallel`实现数据拆分、模型不拆分,将数据批次在不同GPU上处理;数据不拆分、模型拆分则将模型组件分配到不同GPU,适用于复杂模型;数据和模型都拆分,适合大型模型,使用`DistributedDataParallel`结合`torch.distributed`进行分布式训练。代码示例展示了如何在实践中应用这些策略。
1772 2
【多GPU炼丹-绝对有用】PyTorch多GPU并行训练:深度解析与实战代码指南
|
6月前
|
机器学习/深度学习 并行计算 算法框架/工具
Anaconda+Cuda+Cudnn+Pytorch(GPU版)+Pycharm+Win11深度学习环境配置
Anaconda+Cuda+Cudnn+Pytorch(GPU版)+Pycharm+Win11深度学习环境配置
867 3
|
1月前
|
算法 PyTorch 算法框架/工具
Pytorch学习笔记(九):Pytorch模型的FLOPs、模型参数量等信息输出(torchstat、thop、ptflops、torchsummary)
本文介绍了如何使用torchstat、thop、ptflops和torchsummary等工具来计算Pytorch模型的FLOPs、模型参数量等信息。
145 2
|
1月前
|
机器学习/深度学习 自然语言处理 监控
利用 PyTorch Lightning 搭建一个文本分类模型
利用 PyTorch Lightning 搭建一个文本分类模型
55 8
利用 PyTorch Lightning 搭建一个文本分类模型
|
1月前
|
机器学习/深度学习 自然语言处理 数据建模
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力
本文深入探讨了Transformer模型中的三种关键注意力机制:自注意力、交叉注意力和因果自注意力,这些机制是GPT-4、Llama等大型语言模型的核心。文章不仅讲解了理论概念,还通过Python和PyTorch从零开始实现这些机制,帮助读者深入理解其内部工作原理。自注意力机制通过整合上下文信息增强了输入嵌入,多头注意力则通过多个并行的注意力头捕捉不同类型的依赖关系。交叉注意力则允许模型在两个不同输入序列间传递信息,适用于机器翻译和图像描述等任务。因果自注意力确保模型在生成文本时仅考虑先前的上下文,适用于解码器风格的模型。通过本文的详细解析和代码实现,读者可以全面掌握这些机制的应用潜力。
51 3
三种Transformer模型中的注意力机制介绍及Pytorch实现:从自注意力到因果自注意力