我们很高兴地宣布 PyTorch® 2.6 版本正式发布(发布说明)!此版本为 PT2 带来了多项改进:torch.compile 现已支持 Python 3.13;新增了与性能相关的调节开关 torch.compiler.set_stance;以及多项 AOTInductor 增强功能。除了 PT2 的改进外,另一个亮点是 X86 CPU 上的 FP16 支持。
注意:从本版本开始,我们将不再发布到 Conda,详情请参阅 [公告] 弃用 PyTorch 官方 Anaconda 渠道。
在本版本中,随 CUDA 12.6.3 发布的实验性 Linux 二进制文件(以及 Linux Aarch64、Linux ROCm 6.2.4 和 Linux XPU 二进制文件)均使用 CXX11_ABI=1 构建,并采用了 Manylinux 2.28 构建平台。如果您使用自定义 C++ 或 CUDA 扩展构建 PyTorch 扩展,请将这些构建更新为使用 CXX_ABI=1,并反馈您遇到的任何问题。对于下一个 PyTorch 2.7 版本,我们计划将所有 Linux 构建切换到 Manylinux 2.28 和 CXX11_ABI=1,详情和讨论请参阅 [RFC] PyTorch 下一个 wheel 构建平台:manylinux-2.28。
此外,作为一项重要的安全改进措施,我们在本版本中更改了 torch.load 中 weights_only 参数的默认值。这是一个破坏向后兼容性的更改,详情请参阅此论坛帖子。
自 PyTorch 2.5 以来,本版本共包含来自 520 位贡献者的 3892 次提交。我们衷心感谢社区的贡献。一如既往,我们鼓励您尝试这些新功能,并在我们改进 PyTorch 的过程中反馈任何问题。有关如何开始使用 PyTorch 2 系列的更多信息,请访问我们的入门页面。
| Beta | 原型 |
| torch.compiler.set_stance | 提升了 PyTorch 在英特尔 GPU 上的用户体验 |
| torch.library.triton_op | 针对大语言模型(LLM)的 X86 CPU FlexAttention 支持 |
| torch.compile 对 Python 3.13 的支持 | Dim.AUTO |
| AOTInductor 的新打包 API | AOTInductor 的 CUTLASS 和 CK GEMM/CONV 后端 |
| AOTInductor: minifier(压缩工具) | |
| AOTInductor: ABI 兼容模式代码生成 | |
| X86 CPU 的 FP16 支持 |
*要查看完整的公开功能提交列表,请点击此处。
测试版(BETA)功能
[Beta] torch.compiler.set_stance
此功能允许用户指定 torch.compile 在编译函数不同调用之间可以采取的不同行为(“姿态/stance”)。例如,其中一种姿态是
“eager_on_recompile”,它指示 PyTorch 在必要时进行即时(eager)编码,并在可能的情况下复用缓存的编译代码。
更多信息请参阅 set_stance 文档 和 使用 torch.compiler.set_stance 进行动态编译控制 教程。
[Beta] torch.library.triton_op
torch.library.triton_op 提供了一种创建由用户自定义 Triton 内核支持的自定义算子的标准方法。
当用户将自定义 Triton 内核转换为自定义算子时,torch.library.triton_op 允许 torch.compile 查看其实现,从而使 torch.compile 能够优化其中的 Triton 内核。
更多信息请参阅 triton_op 文档 和 在 torch.compile 中使用用户自定义 Triton 内核 教程。
[Beta] torch.compile 对 Python 3.13 的支持
torch.compile 此前仅支持最高 3.12 版本的 Python。现在用户可以在 Python 3.13 中使用 torch.compile 优化模型。
[Beta] AOTInductor 的新打包 API
引入了一种新的包格式“PT2 存档”。它本质上包含一个 zip 文件,其中包含 AOTInductor 所需的所有文件,允许用户将所需的一切内容发送到其他环境。此外,还具有将多个模型打包成一个工件,并在包中存储附加元数据的功能。
详情请参阅更新后的 torch.export AOTInductor Python 运行时教程。
[Beta] AOTInductor: minifier(压缩工具)
如果用户在使用 AOTInductor API 时遇到错误,AOTInductor Minifier 允许创建一个能够复现该错误的最小化 nn.Module。
更多信息请参阅 AOTInductor Minifier 文档。
[Beta] AOTInductor: ABI 兼容模式代码生成
AOTInductor 生成的模型代码依赖于 PyTorch C++ 库。随着 PyTorch 的快速迭代,确保之前由 AOTInductor 编译的模型能够继续在较新的 PyTorch 版本上运行(即 AOTInductor 向后兼容)至关重要。
为了保证应用程序二进制接口(ABI)的向后兼容性,我们仔细定义了一组 libtorch 中的稳定 C 接口,并确保 AOTInductor 生成的代码仅引用这组特定的 API,而不引用 libtorch 中的其他任何内容。我们将保持这组 C API 在 PyTorch 各版本间的稳定性,从而为 AOTInductor 编译的模型提供向后兼容性保证。
[Beta] X86 CPU 的 FP16 支持(eager 和 Inductor 模式)
Float16 数据类型常用于 AI 推理和训练,以降低内存使用量并提高计算速度。诸如近期发布的英特尔® 至强® 6 处理器(配备性能核)通过原生加速器 AMX 支持 Float16 数据类型。X86 CPU 上的 Float16 支持在 PyTorch 2.5 中作为原型功能引入,现在已在 Eager 模式和 Torch.compile + Inductor 模式下得到了进一步改进,成为 Beta 级功能,且功能和性能已通过广泛的工作负载验证。
原型(PROTOTYPE)功能
[Prototype] 提升了 PyTorch 在英特尔 GPU 上的用户体验
通过简化的安装步骤、Windows 发布版二进制分发以及对包括最新英特尔® Arc™ B 系列独立显卡在内的更广泛 GPU 型号的支持,PyTorch 在英特尔 GPU 上的用户体验得到了进一步提升。寻求在英特尔® 酷睿™ Ultra AI PC 和英特尔® Arc™ 独立显卡上进行微调、推理和开发 PyTorch 模型的应用程序开发者和研究人员,现在可以直接通过 Windows、Linux 和 Windows Subsystem for Linux 2 的二进制发布版来安装 PyTorch。
- 简化了英特尔 GPU 软件栈的设置,支持“一键安装” torch-xpu PIP 包,从而能够开箱即用地运行深度学习工作负载,消除了安装和激活英特尔 GPU 开发软件套件的复杂性。
- 面向英特尔 GPU 的 PyTorch 核心、torchvision 和 torchaudio 的 Windows 二进制版本现已提供。支持的 GPU 型号已从配备英特尔® Arc™ 显卡的英特尔® 酷睿™ Ultra 处理器、配备英特尔® Arc™ 显卡的英特尔® 酷睿™ Ultra 系列 2 和英特尔® Arc™ A 系列显卡扩展到了最新的 英特尔® Arc™ B 系列显卡。
- 通过使用 SYCL* 内核进一步增强了英特尔 GPU 上 Aten 算子的覆盖范围,以实现平滑的 Eager 模式执行,并修复了英特尔 GPU 上 torch.compile 的错误并进行了性能优化。
有关英特尔 GPU 支持的更多信息,请参阅入门指南。
[Prototype] 针对大语言模型(LLM)的 X86 CPU FlexAttention 支持
FlexAttention 最初在 PyTorch 2.5 中引入,旨在通过灵活的 API 为 Attention 变体提供优化的实现。在 PyTorch 2.6 中,通过 TorchInductor CPP 后端增加了对 X86 CPU 上 FlexAttention 的支持。此新功能利用并扩展了当前的 CPP 模板能力,以支持基于现有 FlexAttention API 的广泛 Attention 变体(例如:对 LLM 推理至关重要的 PageAttention),并在 x86 CPU 上带来了优化的性能。借助此功能,可以轻松使用 FlexAttention API 在 CPU 平台上构建 Attention 解决方案并获得良好的性能。
[Prototype] Dim.AUTO
Dim.AUTO 允许在 torch.export 中使用自动动态形状。用户可以使用 Dim.AUTO 进行导出并“发现”模型的动态行为,系统会自动推断出最小/最大范围、维度间的关系以及静态/动态行为。
与现有的用于指定动态形状的 named-Dims 方法相比,这是一种更友好的用户体验,因为后者要求用户在导出时完全理解模型的动态行为。Dim.AUTO 允许用户编写不依赖于特定模型的通用代码,从而提高了使用动态形状进行导出时的易用性。
更多信息请参阅 torch.export 教程。
[Prototype] AOTInductor 的 CUTLASS 和 CK GEMM/CONV 后端
CUTLASS 和 CK 后端为 Inductor 中的 GEMM 自动调优增加了内核选择。现在,这也适用于可在 C++ 运行时环境中运行的 AOTInductor。这两个后端的一项重大改进是消除了冗余的内核二进制编译,从而提高了编译时速度,并支持了动态形状。