我们很高兴地宣布 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 | 在 X86 CPU 上对 LLM 支持 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
在编译函数不同调用之间可以采取的不同行为(“姿态”)。例如,其中一种姿态是
“eager_on_recompile”,它指示 PyTorch 在需要重新编译时进行 eager 模式代码生成,并在可能时重用缓存的编译代码。
更多信息请参阅 set_stance 文档和使用 torch.compiler.set_stance 进行动态编译控制教程。
[Beta 版] torch.library.triton_op
torch.library.triton_op
提供了一种标准方法来创建由用户定义的 triton kernels 支持的自定义算子。
当用户将用户定义的 triton kernels 转换为自定义算子时,torch.library.triton_op
允许 torch.compile
查看其实现,从而使 torch.compile
能够优化其内部的 triton kernel。
更多信息请参阅 triton_op 文档和使用 torch.compile 的用户定义 Triton Kernels 教程。
[Beta 版] torch.compile 支持 Python 3.13
torch.compile
之前仅支持 Python 至 3.12 版本。现在用户可以在 Python 3.13 中使用 torch.compile
优化模型。
[Beta 版] AOTInductor 的新打包 API
引入了一种新的包格式,“PT2 archive”。这本质上是一个 zip 文件,包含 AOTInductor 需要使用的所有文件,并允许用户将所需的一切发送到其他环境。还提供了将多个模型打包到一个 artifact 中以及在包内存储额外元数据的功能。
更多详情请参阅更新后的面向 Python 运行时的 torch.export AOTInductor 教程。
[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 推理和训练中常用于减少内存使用和加速计算。像最近推出的集成 P-Core 的英特尔® 至强® 6 处理器等 CPU 支持通过原生加速器 AMX 来支持 Float16 数据类型。X86 CPU 上的 Float16 支持在 PyTorch 2.5 中作为原型特性引入,现在已在 eager 模式和 Torch.compile + Inductor 模式下得到进一步改进,使其成为 Beta 级特性,其功能和性能均已通过广泛的工作负载得到验证。
原型版特性
[原型版] 改进了 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 wheel 的一键安装,从而能够立即运行深度学习工作负载,无需复杂地安装和激活英特尔 GPU 开发软件包。
- 现在提供了适用于英特尔 GPU 的 torch core、torchvision 和 torchaudio 的 Windows 二进制版本,并且支持的 GPU 型号已从搭载英特尔® Arc™ 显卡的英特尔® 酷睿™ Ultra 处理器、搭载英特尔® Arc™ 显卡的英特尔® 酷睿™ Ultra 系列 2 和英特尔® Arc™ A 系列显卡扩展到最新的 GPU 硬件英特尔® Arc™ B 系列显卡。
- 通过使用 SYCL* kernels 在英特尔 GPU 上进一步增强了对 Aten 算子的覆盖范围,以实现流畅的 eager 模式执行,并修复了 bug 并优化了 torch.compile 在英特尔 GPU 上的性能。
有关英特尔 GPU 支持的更多信息,请参阅入门指南。
[原型版] 在 X86 CPU 上对 LLM 支持 FlexAttention
FlexAttention 最初在 PyTorch 2.5 中引入,用于为具有灵活 API 的 Attention 变体提供优化的实现。在 PyTorch 2.6 中,通过 TorchInductor CPP 后端添加了对 FlexAttention 在 X86 CPU 上的支持。这项新特性利用并扩展了当前的 CPP 模板能力,以便基于现有的 FlexAttention API 支持广泛的 Attention 变体(例如:PageAttention,这对 LLM 推理至关重要),并在 x86 CPU 上带来了优化的性能。通过此特性,可以轻松使用 FlexAttention API 在 CPU 平台上组合 Attention 解决方案并实现良好性能。
[原型版] Dim.AUTO
Dim.AUTO
允许将自动动态形状与 torch.export
一起使用。用户可以使用 Dim.AUTO
进行导出,并“发现”其模型的动态行为,例如自动推断最小/最大范围、维度之间的关系以及静态/动态行为。
与现有的用于指定动态形状的命名维度方法相比,这是一种更友好的用户体验,因为命名维度方法要求用户在导出时完全理解其模型的动态行为。Dim.AUTO
允许用户编写不依赖于模型的通用代码,从而提高了使用动态形状进行导出的易用性。
更多信息请参阅torch.export 教程。
[原型版] AOTInductor 的 CUTLASS 和 CK GEMM/CONV 后端
CUTLASS 和 CK 后端为 Inductor 中的 GEMM 自动调优增加了 kernel 选项。此功能现在也可在 AOTInductor 中使用,它可以在 C++ 运行时环境中运行。这两个后端的一个主要改进是,通过消除冗余的 kernel 二进制编译和支持动态形状,提高了编译时速度。