跳转到主要内容
博客

解锁 PyTorch 2.6 在英特尔平台上的最新功能

作者: 2025 年 2 月 11 日2025 年 5 月 3 日暂无评论

PyTorch* 2.6 刚刚发布,带来了一系列激动人心的新功能,包括 torch.compile 对 Python 3.13 的兼容性、新的安全和性能增强,以及 torch.load 默认参数的更改。PyTorch 还宣布弃用其官方 Anaconda 频道。

在性能特性中,有三个特性提升了英特尔平台上的开发人员生产力:

  1. 改进了英特尔 GPU 的可用性
  2. 用于 LLM 的 x86 CPU 上的 FlexAttention 优化
  3. x86 CPU 在 eager 和 Inductor 模式下支持 FP16

改进了英特尔 GPU 的可用性

为了更好地支持在人工智能 (AI) 领域工作的开发人员使用英特尔 GPU,PyTorch 在这些 GPU 上的用户体验得到了增强。此改进包括简化的安装步骤、Windows* 版本二进制分发,以及对支持的 GPU 型号的扩展覆盖,包括最新的英特尔® 锐炫™ B 系列独立显卡。

这些新功能有助于促进 PyTorch 生态系统内加速的机器学习工作流程,提供一致的开发人员体验和支持。寻求在 英特尔® 酷睿™ Ultra AI PC英特尔® 锐炫™ 独立显卡 上微调、执行推理和开发 PyTorch 模型的应用程序开发人员和研究人员,现在可以直接通过 Windows、Linux* 和适用于 Linux 2 的 Windows 子系统 的二进制发行版安装 PyTorch。

新功能包括:

  • 简化的英特尔 GPU 软件堆栈设置,支持一键安装 torch-xpu PIP wheel,以即用型方式运行深度学习工作负载,从而消除了安装和激活英特尔 GPU 开发软件包的复杂性。
  • 针对英特尔 GPU 提供了 torch core、torchvision 和 torchaudio 的 Windows 二进制版本,从支持 英特尔® 酷睿™ Ultra 系列 2(带英特尔® 锐炫™ 显卡)和 英特尔® 锐炫™ A 系列显卡 扩展到支持最新的 GPU 硬件 英特尔® 锐炫™ B 系列显卡
  • 通过 SYCL* 内核进一步增强了 Aten 运算符在英特尔 GPU 上的覆盖范围,以实现流畅的 eager 模式执行,并修复了错误并优化了英特尔 GPU 上 torch.compile 的性能。

请在 入门指南 中了解英特尔® 客户端 GPU 和英特尔® 数据中心 GPU Max 系列上新的环境设置、PIP wheel 安装和示例。

FlexAttention 在 X86 CPU 上针对 LLM 的优化

FlexAttention 于 PyTorch 2.5 中首次引入,旨在解决支持各种注意力机制甚至其组合的需求。这个 PyTorch API 利用 torch.compile 生成融合的 FlashAttention 内核,从而消除了额外的内存分配,并实现了与手写实现相当的性能。

此前,FlexAttention 是针对基于 Triton 后端的 CUDA* 设备实现的。自 PyTorch 2.6 起,通过 TorchInductor CPP 后端添加了 FlexAttention 的 X86 CPU 支持。这项新功能利用并扩展了当前的 CPP 模板能力,以支持基于现有 FlexAttention API 的广泛注意力变体(例如,对 LLM 推理至关重要的 PageAttention),并在 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.13 倍至 1.42 倍。至于在典型 SLA(P99 令牌延迟 <=50ms)下的最佳吞吐量,PyTorch 2.6 的性能比 PyTorch 2.5 高出 7.83 倍以上,因为 PyTorch 2.6 可以同时运行 8 个输入(批处理大小 = 8)并仍保持 SLA,而 PyTorch 2.5 只能运行 1 个输入,这是因为 PyTorch 2.6 中基于 FlexAttention 的 PagedAttention 在多个批处理大小场景中提供了更高的效率。

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

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

x86 CPU 在 Eager 和 Inductor 模式下支持 FP16

Float16 是一种常用的精简浮点类型,可提高神经网络推理和训练的性能。最近推出的 英特尔® 至强® 6 带 P-Core 处理器 等 CPU 支持带原生加速器 AMX 的 Float16 数据类型,这极大地提高了 Float16 的性能。x86 CPU 上的 Float16 支持在 PyTorch 2.5 中首次作为原型功能引入。现在,它已在 eager 模式和 Torch.compile + Inductor 模式下得到进一步改进,并已推向 Beta 级别以进行更广泛的采用。这有助于在 CPU 端部署,而无需在模型使用 Float16/Float32 混合精度进行预训练时修改模型权重。在支持 AMX Float16 的平台(即,带 P-Core 的英特尔® 至强® 6 处理器)上,Float16 在典型的 PyTorch 基准测试套件(TorchBench、Hugging Face 和 Timms)中具有与 Bfloat16 相同的通过率。它还显示出与 16 位数据类型 Bfloat16 相当的良好性能。

总结

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

致谢

PyTorch 2.6 的发布是英特尔平台的一个激动人心的里程碑,如果没有社区的深入协作和贡献,这一切都不可能实现。我们衷心感谢 AlbanAndreyBinJasonJerryNikita 分享他们宝贵的想法,一丝不苟地审查 PR,并对 RFC 提供富有洞察力的反馈。他们的奉献精神推动了持续改进,并推动了英特尔平台的生态系统向前发展。

参考文献

产品和性能信息

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

注意事项和免责声明

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

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

AI 免责声明

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