跳转到主要内容
博客

在 AMD 解决方案上体验 PyTorch 2.0 的强大功能

作者: 2023年4月15日2024年11月14日暂无评论

PyTorch 2.0代表了PyTorch机器学习框架的一大进步。PyTorch 2.0的稳定版带来了新功能,可实现更高的性能,同时与之前的版本保持向后兼容性,并保留了Pythonic的特性,这使得PyTorch在AI/ML社区中受到如此热烈的欢迎。AMD一直是PyTorch的坚定支持者,我们很高兴PyTorch 2.0稳定版包含了对由ROCm™软件平台支持的AMD Instinct™和Radeon™ GPU的支持。

通过PyTorch 2.0稳定版,PyTorch 2.0引入了torch.compile作为Beta功能,其基础是TorchInductor,并通过OpenAI Triton深度学习编译器支持AMD Instinct和Radeon GPU。通过TorchInductor,开发人员现在可以使用Triton生成低级内核,这些内核具有可移植性和性能,与在原生硬件中心内核编程模型上手写内核相当。

OpenAI Triton是一种用于块算法的语言和编译器,旨在在CUDA/HIP和Torch之间提供一个抽象层,开发人员可以在该层上更高效地编写内核。我们编写了一个新的后端,将Triton的自定义MLIR方言与我们的ROCm编译器堆栈连接起来。

Triton可以利用AMD CDNA™ GPU架构的硬件特定功能,自动优化机器学习编译器(如TorchInductor)为多种AI加速器(包括AMD Instinct GPU加速器)生成的内核。这使得开发人员和用户可以轻松地从任何硬件无缝切换到AMD Instinct GPU加速器,并获得出色的开箱即用性能。

此外,像Triton这样的编译器还可以使开发人员能够使用高级编程语言(如Python)编写机器学习代码,这些代码可以在专用硬件上高效地编译和执行。这可以大大提高机器学习开发人员的生产力,因为他们可以专注于模型的算法方面,并依靠编译器生成高效的代码。

PyTorch 2.0的设计与早期的PyTorch版本向后兼容。这对于PyTorch 2.0的ROCm构建版本也是如此。使用AMD GPU的PyTorch开发人员可以自信地迁移到PyTorch 2.0,因为他们现有代码无需任何更改即可继续工作,因此访问此版本带来的改进没有任何障碍。另一方面,使用PyTorch 2.0和TorchInductor可以比默认的急切模式带来显著的性能提升,如下所示。

使用AMD Instinct MI250 GPU的初步结果显示,与默认的急切模式相比,TorchInductor在最小优化下已经显示出强大的性能提升。在HuggingFace基准测试套件的45个模型中,有44个模型平均性能提升高达1.54倍,其中CamemBert、DistillGPT2和T5Small等少数出色模型比急切模式性能提升1.5倍或更多。我们期待与Meta的PyTorch团队成员继续合作,以进一步优化ROCm软件堆栈,并在未来的PyTorch版本中实现额外的性能提升。

Image 1: AMD MI250 GPU performance improvement for TorchInductor vs eager-mode using HuggingFace MI200-89.

图1:使用HuggingFace MI200-89,AMD MI250 GPU在TorchInductor模式下与急切模式相比的性能提升。

PyTorch 2.0遵循与以前相同的安装选项,以构建和安装对AMD GPU的支持。其中包括托管在pytorch.org上的可安装Python包,AMD的公共PyTorch docker镜像,当然还有使用上游PyTorch仓库从源代码构建的选项。与为其他平台构建PyTorch一样,基于pip安装的具体命令行由https://pytorch.ac.cn/get-started/locally/上的配置器提供。

ROCm软件平台支持的GPU是AMD GPU上PyTorch支持的基础,其文档位于https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html

结论

PyTorch 2.0代表着在继续扩大对ML开发人员支持方面迈出的重要一步,它在提高性能的同时保持了简单的Pythonic接口。这种性能提升在很大程度上得益于新的TorchInductor基础设施,而TorchInductor又利用了Triton ML编程语言和即时编译器。AMD对这些技术的支持使用户能够充分实现新PyTorch架构的潜力。我们对PyTorch 2.0中GPU的支持只是围绕AI和机器学习更大愿景的一个体现。AI/ML在AMD的多个产品线中发挥着重要作用,包括Instinct和Radeon GPU、Alveo™数据中心加速器以及Ryzen™和EPYC处理器。这些硬件和软件举措都是AMD无处不在的AI愿景的一部分,我们期待应对这一动态领域的诸多新挑战和机遇。

MI200-89 – PyTorch Inductor模式HuggingFace Transformers训练加速,运行标准PyTorch 2.0测试套件,与PyTorch急切模式比较,基于AMD内部测试,使用单个GCD,截至2023年3月10日,使用一台配备4个AMD Instinct™ MI250(128GB HBM2e)560W GPU和Infinity Fabric™技术的2P AMD EPYC™ 7763生产服务器;主机ROCm™ 5.3,客户机ROCm™ 5.4.4,PyTorch 2.0.0,Triton 2.0。服务器制造商的配置可能有所不同,导致结果也不同。性能可能因包括使用最新驱动程序和优化在内的因素而异。

© 2023 Advanced Micro Devices, Inc. 保留所有权利。AMD、AMD Arrow徽标、AMD CDNA、AMD Instinct、EPYC、Radeon、ROCm、Ryzen及其组合是Advanced Micro Devices, Inc.的商标。本出版物中使用的其他产品名称仅供识别目的,可能是其各自所有者的商标。