由英特尔 PyTorch 团队编写

PyTorch* 2.6 版本刚刚发布,包含一系列令人兴奋的新特性,包括与 Python 3.13 的 torch.compile 兼容性、新的安全和性能增强,以及 torch.load 默认参数的改变。PyTorch 还宣布弃用其官方 Anaconda 频道。

在性能特性中,有三个特性可以增强在 Intel 平台上的开发者生产力:

  1. 改进了 Intel GPU 的可用性
  2. x86 CPU 上 FlexAttention 优化
  3. x86 CPU 上支持 FP16 eager 和 Inductor 模式

提升 Intel GPU 可用性

为在人工智能(AI)领域工作的开发者提供更好的 Intel GPU 支持,这些 GPU 上的 PyTorch 用户体验得到了增强。此次改进包括简化安装步骤、Windows*发布二进制分发以及支持 GPU 模型的范围扩大,包括最新的 Intel® Arc™ B 系列独立显卡。

这些新功能有助于在 PyTorch 生态系统中促进机器学习工作流程的加速,提供一致的开发者体验和支持。寻求在 Intel® Core™ Ultra AI PC 和 Intel® Arc™独立显卡上微调、执行推理和开发 PyTorch 模型的应用程序开发人员和研究人员现在将能够直接安装 Windows、Linux*和 Windows Subsystem for Linux 2 的二进制发布版本的 PyTorch。

新功能包括:

  • 简化了 Intel GPU 软件堆栈的设置,以实现一键安装 torch-xpu PIP wheels,以便以即用型的形式运行深度学习工作负载,从而消除安装和激活 Intel GPU 开发软件包的复杂性。
  • 已提供 torch core、torchvision 和 torchaudio 的 Windows 二进制发布版本,支持 Intel GPU,从 Intel® Core™ Ultra Series 2 的 Intel® Arc™ Graphics 和 Intel® Arc™ A-Series 图形扩展到最新的 GPU 硬件 Intel® Arc™ B-Series 图形支持。
  • 进一步增强了对 Intel GPU 上 Aten 算子的支持,使用 SYCL*内核实现平滑的 eager 模式执行,以及针对 torch.compile 在 Intel GPU 上的错误修复和性能优化。

在入门指南中,您可以了解新环境设置、PIP wheels 安装以及 Intel®客户端 GPU 和 Intel®数据中心 GPU Max 系列上的示例。

FlexAttention 在 X86 CPU 上的优化

FlexAttention 首次在 PyTorch 2.5 版本中引入,旨在满足支持各种注意力或其组合的需求。此 PyTorch API 利用 torch.compile 生成融合的 FlashAttention 内核,消除了额外的内存分配,并实现了与手写实现相当的性能。

之前,FlexAttention 基于 Triton 后端在 CUDA*设备上实现。自 PyTorch 2.6 版本起,通过 TorchInductor CPP 后端增加了 X86 CPU 对 FlexAttention 的支持。这一新特性利用并扩展了当前的 CPP 模板能力,以支持广泛的注意力变体(例如,对LLMs推理至关重要的 PageAttention),并基于现有的 FlexAttention API,在 x86 CPU 上带来优化的性能。有了这个特性,用户可以轻松使用 FlexAttention API 在 CPU 平台上构建自己的注意力解决方案,并实现良好的性能。

通常,FlexAttention 被流行的LLM生态系统项目,如 Hugging Face transformers 和 vLLM 在其LLM相关建模(例如 PagedAttention)中采用,以实现更好的开箱即用性能。在官方采用之前,Hugging Face 中的这个启用 PR 可以帮助我们了解 FlexAttention 在 x86 CPU 平台上带来的性能优势。

下面的图表显示了 PyTorch 2.6(具有此功能)和 PyTorch 2.5(不具有此功能)在典型 Llama 模型上的性能比较。对于实时模式(批量大小=1),在不同输入标记长度下,下一个标记的性能提高了约 1.13x-1.42x。至于典型 SLA(P99 标记延迟<=50ms)下的最佳吞吐量,PyTorch 2.6 比 PyTorch 2.5 提高了 7.83x 以上的性能,因为 PyTorch 2.6 可以在 8 个输入(批量大小=8)同时运行并保持 SLA,而 PyTorch 2.5 只能运行 1 个输入,因为基于 FlexAttention 的 PagedAttention 在 PyTorch 2.6 中在多个批量大小场景下提供了更高的效率。

Figure 1. Performance comparison of PyTorch 2.6 and PyTorch 2.5 on Typical Llama Models

图 1. PyTorch 2.6 和 PyTorch 2.5 在典型 Llama 模型上的性能比较

支持 Eager 和 Inductor 模式的 X86 CPU 对 FP16 的支持

Float16 是一种常用的降低浮点类型,可提高神经网络推理和训练的性能。近期发布的 Intel® Xeon® 6 处理器中的 P 核心支持 Float16 数据类型和原生加速器 AMX,这极大地提升了 Float16 的性能。x86 CPU 上的 Float16 支持首次在 PyTorch 2.5 中作为原型功能引入。现在,它已进一步改进,适用于急切模式和 Torch.compile + Inductor 模式,并已提升至 Beta 级别,以促进更广泛的应用。这有助于在 CPU 端部署,无需修改模型权重,当模型以 Float16/Float32 的混合精度预训练时。在支持 AMX Float16 的平台(即具有 P 核心的 Intel® Xeon® 6 处理器)上,Float16 在典型的 PyTorch 基准测试套件(如 TorchBench、Hugging Face 和 Timms)中的通过率与 Bfloat16 相同。它还显示出与 16 位数据类型 Bfloat16 相当的良好性能。

摘要

在这篇博客中,我们讨论了三个在 PyTorch 2.6 中增强开发者生产力的功能。这三个功能旨在提高 Intel GPU 的可用性,优化针对大型语言模型(LLMs)的 x86 CPU 上的 FlexAttention,以及在 eager 和 Inductor 模式下支持 x86 CPU 上的 FP16。获取 PyTorch 2.6 并亲自尝试,或者您可以在 Intel® Tiber™ AI Cloud 上访问 PyTorch 2.6,利用优化的托管笔记本,这些笔记本针对 Intel 硬件和软件进行了优化。

致谢

PyTorch 2.6 的发布是 Intel 平台的一个激动人心的里程碑,如果没有社区深度合作和贡献,这一切将不可能实现。我们衷心感谢 Alban、Andrey、Bin、Jason、Jerry 和 Nikita 分享他们宝贵的想法,仔细审查 PR,并在 RFC 上提供有洞察力的反馈。他们的奉献推动了持续改进,并推动了 Intel 平台生态系统的进步。

参考文献列表

产品和性能信息

在 AWS EC2 m7i.metal-48xl 上进行测量:使用 2x 英特尔® 至强®铂金 8488C,超线程开启,睿频开启,NUMA 2,集成加速器可用[已使用]:DLB[8]、DSA[8]、IAA[8]、QAT[在 CPU 上,8]、总内存 512GB(16x32GB DDR5 4800 MT/s [4400 MT/s]),亚马逊 EC2 BIOS 1.0,微代码 0x2b000603,1x 弹性网络适配器(ENA),1x 亚马逊弹性块存储 800G,Ubuntu 24.04.1 LTS 6.8.0-1018-aws 测试,英特尔于 2025 年 1 月 15 日进行测试。

通知和免责声明

性能因使用、配置和其他因素而异。请在性能指数网站上了解更多信息。性能结果基于所示配置的测试日期,可能无法反映所有公开可用的更新。请参阅备份以获取配置详细信息。没有产品或组件可以绝对安全。您的成本和结果可能会有所不同。英特尔技术可能需要启用硬件、软件或服务激活。

英特尔公司。英特尔、英特尔标志以及其他英特尔商标均为英特尔公司或其子公司的商标。其他名称和品牌可能属于他人所有。

AI 免责声明:

AI 功能可能需要购买软件、订阅或由软件或平台提供商启用,或可能具有特定的配置或兼容性要求。详细信息请访问 www.intel.com/AIPC。结果可能有所不同。