我们非常高兴地宣布 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 Aarch64、Linux ROCm 6.2.4 和 Linux XPU 二进制文件)一起提供的实验性 Linux 二进制文件是用 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 系列的信息,请参阅我们的入门页面。
测试版 | 原型 |
torch.compiler.set_stance | 提升了在 Intel GPU 上的 PyTorch 用户体验 |
torch.library.triton_op | FlexAttention 在 X86 CPU 上的支持 LLMs |
torch.compile 支持 Python 3.13 | Dim.AUTO |
AOTInductor 新的打包 API | CUTLASS 和 CK GEMM/CONV 后端支持 AOTInductor |
AOTInductor:代码压缩器 | |
AOTInductor:ABI 兼容模式代码生成 | |
X86 CPU 对 FP16 的支持 |
*点击此处查看所有公开功能提交的完整列表。
测试功能
[测试版] torch.compiler.set_stance
此功能允许用户指定编译函数在不同调用之间可以采取的不同行为(立场)。例如,其中一种立场是
“eager_on_recompile”,该指令在需要重新编译时使 PyTorch 以贪婪模式运行,尽可能重用缓存的编译代码。
如需更多信息,请参阅 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 教程。
[Beta] 支持 Python 3.13 的 torch.compile
torch.compile
之前仅支持 Python 3.12 及以下版本。现在用户可以使用 torch.compile
在 Python 3.13 中优化模型。
[Beta] AOTInductor 新的打包 API
新增了“PT2 存档”包格式。这本质上包含了一个 zip 文件,其中包含了 AOTInductor 需要使用的所有文件,并允许用户将所需的一切发送到其他环境。此外,还有将多个模型打包成一个工件的功能,以及将额外的元数据存储在包内的功能。
欲了解更多详情,请参阅更新后的 torch.export AOTInductor Python 运行时教程。
[Beta] AOTInductor:最小化器
如果用户在使用 AOTInductor API 时遇到错误,AOTInductor Minifier 允许创建一个最小的 nn.Module,以重现错误。
更多信息请参阅 AOTInductor Minifier 文档。
[Beta] AOTInductor:ABI 兼容模式代码生成
AOTInductor 生成的模型代码依赖于 Pytorch 的 cpp 库。由于 Pytorch 发展迅速,确保之前 AOTInductor 编译的模型可以在新的 Pytorch 版本上继续运行非常重要,即 AOTInductor 具有向后兼容性。
为了保证应用二进制接口(ABI)向后兼容性,我们在 libtorch 中精心定义了一套稳定的 C 接口,并确保 AOTInductor 生成的代码仅引用 libtorch 中的特定 API 集合,而不引用其他任何内容。我们将保持 Pytorch 版本间的 C API 集合稳定,从而为 AOTInductor 编译的模型提供向后兼容性保证。
[Beta] 支持 X86 CPU 的 FP16(包括 eager 和 Inductor 模式)
Float16 数据类型常用于 AI 推理和训练中的内存使用减少和计算速度提升。近期发布的 Intel® Xeon® 6 系列 P 核心 CPU 支持 Float16 数据类型,并配备原生加速器 AMX。在 PyTorch 2.5 中引入了 X86 CPU 上的 Float16 支持作为原型功能,现在它已经针对 eager 模式和 Torch.compile + Inductor 模式进行了进一步改进,成为 Beta 级别功能,经过广泛的作业负载验证,功能和性能均得到验证。
原型功能
[原型] 在英特尔 GPU 上改进的 PyTorch 用户体验
通过简化的安装步骤、Windows 发布二进制分发以及扩展支持的 GPU 型号范围(包括最新的英特尔® Arc™ B 系列独立显卡),PyTorch 在英特尔 GPU 上的用户体验进一步得到提升。寻求在英特尔® Core™ Ultra AI PC 和英特尔® Arc™独立显卡上微调、推理和开发 PyTorch 模型的应用程序开发人员和研究人员现在可以直接安装 Windows、Linux 和 Windows Subsystem for Linux 2 的二进制发布版本的 PyTorch。
- 简化英特尔 GPU 软件堆栈设置,以实现一键安装 torch-xpu PIP wheels,从而以即装即用的方式运行深度学习工作负载,消除安装和激活英特尔 GPU 开发软件包的复杂性。
- 火炬核心、torchvision 和 torchaudio 的 Windows 二进制发布版已针对 Intel GPU 提供支持,支持的 GPU 型号已从 Intel® Core™ Ultra 处理器与 Intel® Arc™图形、Intel® Core™ Ultra 系列 2 与 Intel® Arc™图形以及 Intel® Arc™ A 系列图形扩展到最新的 GPU 硬件 Intel® Arc™ B 系列图形。
- 进一步增强了对 Intel GPU 上 Aten 算子的支持,使用 SYCL*内核实现平滑的 eager 模式执行,以及针对 torch.compile 在 Intel GPU 上的错误修复和性能优化。
如需有关 Intel GPU 支持的更多信息,请参阅入门指南。
[原型] 在 X86 CPU 上支持 FlexAttention LLMs
FlexAttention 最初在 PyTorch 2.5 中引入,用于提供具有灵活 API 的 Attention 变体的优化实现。在 PyTorch 2.6 中,通过 TorchInductor CPP 后端增加了对 FlexAttention 的 X86 CPU 支持。这一新特性利用并扩展了当前的 CPP 模板能力,以支持广泛的 Attention 变体(例如:PageAttention,这对于LLMs推理至关重要)基于现有的 FlexAttention API,并在 x86 CPU 上带来优化的性能。有了这个特性,使用 FlexAttention API 在 CPU 平台上构建 Attention 解决方案并实现良好性能变得非常容易。
[原型] Dim.AUTO
Dim.AUTO
允许使用自动动态形状与 torch.export
。用户可以使用 Dim.AUTO
导出并“发现”其模型的动态行为,包括最小/最大范围、维度之间的关系以及静态/动态行为将被自动推断。
与现有的命名-Dims 方法相比,这是一种更友好的用户体验,后者要求用户在导出时完全理解其模型的动态行为。 Dim.AUTO
允许用户编写不依赖于模型的通用代码,从而在导出动态形状时提高易用性。
请参阅 torch.export 教程以获取更多信息。
[原型] CUTLASS 和 CK GEMM/CONV 后端用于 AOTInductor
CUTLASS 和 CK 后端为 Inductor 中的 GEMM 自动调优添加了内核选择。现在,AOTInductor 也支持在 C++ 运行时环境中运行,这是一个重大改进。这两个后端的主要改进是提高了编译时间速度,通过消除冗余内核二进制编译和动态形状支持。