由 AMD 提供

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 的 beta 功能,并通过 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 2.0 的 ROCm 构建。使用 AMD GPU 的开发者可以放心地将现有代码迁移到 PyTorch 2.0,无需任何修改,因此可以无障碍地访问此次发布带来的改进。另一方面,使用 PyTorch 2.0 和 TorchInductor 可以在默认的 eager-mode 上实现显著的性能提升,如下所示。

使用 AMD Instinct MI250 GPU 进行初步测试的结果已经显示出,与默认的 eager-mode 相比,在 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

图像 1:与 HuggingFace 的 eager-mode 相比,AMD MI250 GPU 在 TorchInductor 中的性能提升 MI200-89.

PyTorch 2.0 继续采用之前的安装选项来构建和安装,以支持 AMD GPU。这包括位于 pytorch.org 的安装包、AMD 的公共 PyTorch Docker 镜像,以及当然还有使用上游 PyTorch 仓库从源代码构建的选项。与其他平台的 PyTorch 构建一样,pip-based 安装的具体命令行由配置器在 https://maskerprc.github.io/get-started/locally/提供。

支持 PyTorch 在 AMD GPU 上运行的 ROCm 软件平台所支持的 GPU 已在 https://docs.amd.com/bundle/Hardware_and_Software_Reference_Guide/page/Hardware_and_Software_Support.html 中记录。

结论

PyTorch 2.0 代表了在提高性能的同时,继续扩大对机器学习开发者支持的重大一步,同时保持简单、Pythonic 的接口。这种性能提升在很大程度上得益于新的 TorchInductor 基础设施,它反过来利用了 Triton ML 编程语言和即时编译器。AMD 对这些技术的支持使用户能够实现新 PyTorch 架构的全部承诺。PyTorch 2.0 中的 GPU 支持只是围绕人工智能和机器学习更大愿景的一个体现。AI/ML 在多个 AMD 产品线中扮演着重要角色,包括 Instinct 和 Radeon GPU、Alveo™数据中心加速器以及 Ryzen™和 EPYC 处理器。这些硬件和软件倡议都是 AMD 普遍人工智能愿景的一部分,我们期待着应对这个动态空间中许多新的挑战和机遇。

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

© 2023 高级微设备公司。保留所有权利。AMD、AMD 箭头标志、AMD CDNA、AMD Instinct、EPYC、Radeon、ROCm、Ryzen 及其组合是高级微设备公司的商标。本出版物中使用的其他产品名称仅用于识别目的,可能是其各自所有者的商标。