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作为一项测试版功能,该功能由TorchInductor支持,并通过OpenAI Triton深度学习编译器支持AMD Instinct和Radeon GPU。通过TorchInductor,开发人员现在可以使用Triton生成低级内核,这些内核具有可移植性和性能,与本机硬件中心内核编程模型上的手写内核相当。
OpenAI Triton是一种用于块算法的语言和编译器,旨在在CUDA/HIP和Torch之间提供一个抽象层,开发人员可以在该层更高效地编写内核。我们编写了一个新的后端,将Triton的自定义MLIR方言与我们的ROCm编译器堆栈连接起来。
Triton可以利用AMD CDNA™ GPU架构的硬件特定功能,自动优化由TorchInductor等机器学习编译器生成的内核,以适用于包括AMD Instinct GPU加速器在内的多种AI加速器。这使得开发人员和用户可以轻松地从任何硬件无缝切换到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版本带来额外的性能改进。
图1:AMD MI250 GPU使用HuggingFace MI200-89进行TorchInductor与急切模式的性能提升。
PyTorch 2.0遵循与以前相同的安装选项,用于为支持AMD GPU而构建和安装。这些包括托管在pytorch.org上的可安装Python包、AMD的公共PyTorch docker镜像,当然还有使用上游PyTorch存储库从源代码构建的选项。与为其他平台构建PyTorch一样,基于pip的安装要运行的特定命令行由配置器在https://pytorch.ac.cn/get-started/locally/提供。
构成AMD GPU上PyTorch支持基础的ROCm软件平台支持的GPU文档可在https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html查阅。
结论
PyTorch 2.0通过提高性能同时保持简单、Pythonic的界面,代表着继续扩大对ML开发人员支持的重要一步。这种性能提升很大程度上得益于新的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内部测试,截至2023年3月10日,使用一台2P AMD EPYC™ 7763生产服务器,配备4块AMD Instinct™ MI250(128GB HBM2e)560W GPU,采用Infinity Fabric™技术;主机ROCm™ 5.3,客户机ROCm™ 5.4.4,PyTorch 2.0.0,Triton 2.0。服务器制造商的配置可能有所不同,从而产生不同的结果。性能可能因最新驱动程序和优化等因素而异。
© 2023 Advanced Micro Devices, Inc. 保留所有权利。AMD、AMD箭头徽标、AMD CDNA、AMD Instinct、EPYC、Radeon、ROCm、Ryzen及其组合是Advanced Micro Devices, Inc.的商标。本出版物中使用的其他产品名称仅供识别之用,可能是其各自所有者的商标。