跳转到主要内容
博客

PyTorch 基金会和 ROCm™ 对 PyTorch 的支持,实现人工智能大众化

作者: 2023年2月14日2024年11月14日无评论
AMD Founding Member

去年,Meta 宣布 PyTorch 加入 Linux 基金会,成为发展机器学习项目和社区的中立平台,AMD 作为创始成员和理事会成员之一。

PyTorch 基金会的使命是通过开源原则普及其软件生态系统,从而推动人工智能的采用,这与 AMD 开放软件生态系统的核心原则相一致。AMD 致力于通过支持最新一代的硬件、工具、库和其他组件来促进创新,以简化和加速人工智能在广泛科学发现中的应用。

AMD 与 PyTorch 核心代码库开发者(包括 Meta AI 的开发者)一起,为 ROCm™ 开放软件生态系统提供了一系列更新,为 AMD Instinct™ 加速器和许多 Radeon™ GPU 带来了稳定的支持。这使得 PyTorch 开发者现在能够利用 AMD GPU 加速器和 ROCm 构建他们下一个出色的人工智能解决方案。PyTorch 社区在识别差距、优先安排关键更新、提供性能优化反馈以及支持我们从“测试版”到“稳定版”的旅程方面提供了巨大的帮助,我们深切感谢 AMD 和 PyTorch 两个团队之间的紧密合作。ROCm 支持从“测试版”到“稳定版”的转变发生在 PyTorch 1.12 版本(2022 年 6 月),带来了在原生环境中轻松运行 PyTorch 而无需配置自定义 Docker 的额外支持。这表明了对使用 AMD Instinct 和 ROCm 的 PyTorch 支持质量和性能的信心。这些协作努力的结果在以下图 1 所示的 Microsoft SuperBench 等关键行业基准测试中表现得淋漓尽致。

“我们很高兴看到 AMD 开发者在 PyTorch 内部贡献和扩展功能所产生的重大影响,使 AI 模型能够以更优异的性能、更高的效率和更强的可扩展性运行。一个很好的例子是关于框架和未来硬件系统之间统一内存方法的思想领导力,我们期待着这一功能的进展。”
——Soumith Chintala,PyTorch 首席维护者兼 Meta AI 工程总监

AMD CDNA™ 架构以及 ROCm 和 PyTorch 的持续改进表明,单 GPU 模型吞吐量从 AMD Instinct MI100 到最新一代 AMD Instinct MI200 系列 GPU 都有所提高,ROCm 从 4.2 升级到 5.3,PyTorch 从 1.7 升级到 1.12。

Graph 1: ML model performance over generation using Microsoft Superbench Suite

图 1:使用 Microsoft Superbench Suite 进行的 ML 模型代际性能1, 2, 3

以下是自 PyTorch 1.12 版本发布以来 ROCm 支持的一些主要更新

PyTorch 上 ROCm 的完整持续集成 (CI)

随着 ROCm 对 PyTorch 的支持从“测试版”转变为“稳定版”,所有功能和特性提交现在都通过完整的持续集成 (CI) 过程进行验证。CI 过程有助于确保在预期的 Docker 和 PIP wheel 发布之前进行适当的构建和测试过程,其中包含即将到来的稳定提交。

支持 Kineto Profiler

将 Kineto profiler 支持添加到 ROCm 现在可以帮助开发人员和用户通过有效的诊断和分析工具了解性能瓶颈。该工具还提供改进已知问题和通过 TensorBoard UI 可视化的建议。

已添加对关键 PyTorch 库的支持

PyTorch 生态系统库,如 TorchText(文本分类)、TorchRec(推荐系统库 - RecSys)、TorchVision(计算机视觉)、TorchAudio(音频和信号处理),自 ROCm 5.1 起已完全支持,并已与 PyTorch 1.12 上游集成。

ROCm 软件栈提供的关键库,包括 MIOpen(卷积模型)、RCCL(ROCm 集合通信)和 rocBLAS(用于 Transformer 的 BLAS),已进一步优化以提供新的潜在效率和更高性能。

MIOpen 在多个方面进行了创新,例如实现融合以优化内存带宽和 GPU 启动开销,提供自动调优基础设施以克服问题配置的巨大设计空间,以及实现不同的算法以优化不同滤波器和输入大小的卷积。MIOpen 是首批公开支持 bfloat16 数据类型进行卷积的库之一,允许在较低精度下进行高效训练,同时保持预期精度。

RCCL(发音为“Rickle”)是一个独立的 GPU 标准集合通信例程库,实现了 all-reduce、all-gather、reduce、broadcast、reduce-scatter、gather、scatter 和 all-to-all。它支持直接的 GPU 到 GPU 发送和接收操作。它已经过优化,可以在使用 PCIe®、Infinity Fabric™(GPU 到 GPU)以及使用 InfiniBand Verbs 或 TCP/IP 套接字进行网络连接的平台上实现高带宽。RCCL 支持在单个或多个节点中安装任意数量的 GPU,并且可以在单进程或多进程(例如 MPI)应用程序中使用。

除了上述主要亮点外,AMD 和 PyTorch 还共同完成了 50 多项功能和功能改进,以增加对 ROCm 的稳定支持。这些改进包括工具、编译器、运行时、通过 TorchScript 进行图优化、INT8 量化路径使用以及 ONNX 运行时集成,包括对基于 Navi 21 的 Radeon™ PRO 数据中心显卡的支持等等。

AITemplate 推理引擎

MetaAI 最近发布了一篇博客,宣布发布其开源 AITemplate(链接),这是一个支持使用 AMD ROCm 堆栈的 AMD Instinct GPU 加速器的统一推理系统。这个基于 Python 的框架可以通过提高 AMD 矩阵核心在 Transformer 块中的利用率来显著提高性能。这通过 AMD Composable Kernel (CK) 库实现,该库通过 HIP 和 C++ 为包括 GPU 和 CPU 在内的多种架构上的 ML AI 工作负载提供性能关键的内核。

此外,AITemplate 还为 BERT、ResNET、Vision Transformer、Stable Diffusion 等广泛使用的 AI 模型提供开箱即用的支持,通过这些预训练模型简化了部署过程。

未来 ROCm 版本将带来什么?

CPU + GPU 统一内存模型

随着系统架构的演进以应对大型问题规模和数据集的复杂性,内存管理成为一个关键的性能瓶颈,需要通过硬件和软件层面的创新来解决。AMD 凭借其有效的数据中心解决方案独特定位,将 AMD EPYC™ CPU 核心与其 AMD Instinct GPU 计算单元集成到一个真正统一的数据中心 APU(加速处理单元)外形尺寸中,该产品将于 2023 年下半年推出。

利用统一的 CPU + GPU 内存的软件工作已经与 PyTorch 团队合作启动,以启用快速、低延迟、同步的内存模型的使用,这不仅使 AMD,而且使其他 AI 加速器能够解决当今复杂的内存管理问题。我们期待着这项联合努力和公告。

致谢

本博客的内容重点介绍了 AMD 和包括 Meta 在内的主要 PyTorch 贡献者之间的联合工作,他们致力于许多核心功能,以及 Microsoft 对 ONNX Runtime 的支持。我们期待着与 PyTorch 基金会的其他创始成员合作,共同推进下一步工作和改进,以普及和推广 PyTorch 在整个行业的应用。

警示性声明

本博客包含有关 Advanced Micro Devices, Inc. (AMD) 的前瞻性陈述,例如 AMD 数据中心 APU 外形尺寸的可用性、时间安排和预期收益,这些陈述是根据 1995 年《私人证券诉讼改革法案》的安全港条款作出的。前瞻性陈述通常通过“将”、“可能”、“预期”、“相信”、“计划”、“打算”、“项目”以及其他含义相似的术语来识别。投资者请注意,本博客中的前瞻性陈述基于当前的信念、假设和预期,仅代表本博客发布之日的情况,并涉及可能导致实际结果与当前预期存在重大差异的风险和不确定性。此类陈述受某些已知和未知风险和不确定性的影响,其中许多难以预测且通常超出 AMD 的控制范围,可能导致实际结果和其他未来事件与前瞻性信息和陈述中表达或暗示或预测的内容存在重大差异。敦促投资者详细审查 AMD 在美国证券交易委员会文件中(包括但不限于 AMD 最新的 10-K 和 10-Q 报告)的风险和不确定性。除法律可能要求外,AMD 不承担,并特此声明放弃更新本博客中作出的前瞻性陈述的任何义务。

尾注

  1. MI100D-01 SuperBench v0.5 模型训练结果基于 AMD 截至 2022 年 11 月 9 日的内部测试,测量使用 2P AMD EPYC™ 7763 CPU 服务器的半精度总训练吞吐量,该服务器配备 1x AMD Instinct™ MI100 (32GB HBM2e) 300W GPU,SBIOS 2.2,Ubuntu® 20.04.5 LTS,主机 ROCm™ 5.2.0,访客 ROCm 4.2,PyTorch 1.7.0。服务器制造商的配置可能有所不同,导致结果不同。性能可能因使用最新驱动程序和优化等因素而异。
  2. MI200D-01 SuperBench v0.6 模型训练结果基于 AMD 截至 2022 年 11 月 9 日的内部测试,测量使用 2P AMD EPYC™ 7763 CPU 服务器的半精度总训练吞吐量,该服务器配备 1x AMD Instinct™ MI210 (64GB HBM2e) 300W GPU,SBIOS 2.2,Ubuntu 20.04.5 LTS,主机 ROCm 5.3.0,访客 ROCm 5.3,PyTorch 1.12。服务器制造商的配置可能有所不同,导致结果不同。性能可能因使用最新驱动程序和优化等因素而异。
  3. MI200D-02: SuperBench v0.6 模型训练结果基于 AMD 截至 2022 年 11 月 9 日的内部测试,测量使用 2P AMD EPYC™️ 7763 CPU 服务器的半精度总训练吞吐量,该服务器配备 1x AMD Instinct™️ MI250 (128GB HBM2e) 560W GPU,SBIOS M12,Ubuntu 20.04 LTS,主机 ROCm 5.3.0,访客 ROCm 5.3,PyTorch 1.12。服务器制造商的配置可能有所不同,导致结果不同。性能可能因使用最新驱动程序和优化等因素而异。