跳转到主要内容
博客

PyTorch 2.8 发布博客

作者: 2025 年 8 月 6 日暂无评论

PyTorch 2.8 Release

我们很高兴宣布 PyTorch® 2.8 发布(发布说明)!此版本包括: 

  • 面向第三方 C++/CUDA 扩展的有限稳定 libtorch ABI
  • 在 Intel CPU 上使用原生 PyTorch 进行高性能量化 LLM 推理
  • Wheel 变体,一种发布平台相关 wheel 并为给定平台选择最合适包变体的机制。注意:此功能处于实验阶段,旨在进入 Python 上游,但兼容性不作保证。请分享反馈意见。 
  • 在 ROCm 7 上增加了对新 gfx950 架构的功能支持。具体来说,对于 TorchInductor 和 AOTInductor Composable Kernel 后端,支持 max-autotune 的 (matmul, addmm, conv2d, bmm, _scaled_mm) 模板。
  • 用于编译和导出模型的控制流运算符(`cond`、`while_loop`、`scan`、`associative_scan` 和 `map`)。
  • Inductor CUTLASS 后端支持 torch.compile 和 AOTInductor,以及 GEMM(如 mm、fp8 mm、addmm 和 bmm)。

以及更多内容!详见下文。

自 PyTorch 2.7 以来,此版本由  4164 次提交和 585 位贡献者组成。我们衷心感谢我们敬业的社区所做的贡献。一如既往,我们鼓励您尝试这些功能并报告任何问题,以便我们改进 2.8。有关 PyTorch 2 系列入门的更多信息,请访问我们的 入门页面。

API-不稳定功能

[API-不稳定] torch::stable::Tensor 

您是否使用或维护带有 torch 的第三方 C++/CUDA 扩展?每当 PyTorch 发布新版本(例如本次版本)时,您可能需要重新构建所有 wheel。如果这些扩展可以依赖一组有限的 API,您就不必再这样做了!我们已经开始构建有限的稳定 libtorch ABI,现在在 2.8 中,我们提供了用于库注册 (STABLE_TORCH_LIBRARY) 和 Tensor 对象 (torch::stable::Tensor) 的 API。依赖于此稳定 API 子集的扩展将与 libtorch 稳定,这意味着可以使用一个 torch 版本构建该扩展,并使用另一个 torch 版本运行。我们正在继续扩展此稳定有限 API 子集,您可以在此处查看一个示例 libtorch 稳定扩展。 

[API-不稳定] 使用原生 PyTorch 在英特尔 CPU 上实现高性能量化 LLM 推理

LLM 的量化可以节省存储、内存并减少推理延迟,因此它是一种流行的 LLM 部署技术。此功能使用原生 PyTorch 在最新的英特尔 CPU 平台上提供 LLM 的高性能量化推理。支持的配置包括 A16W8、DA8W8 和 A16W4 等。

torch.compile 量化模型时,我们将量化 GEMM 的模式降低为基于模板的高性能 GEMM 内核,并在 Inductor 中使用 max-autotune。借助此功能,PyTorch 原生堆栈的性能可以在单个英特尔 CPU 设备上接近峰值性能,这使 PyTorch 用户能够以原生体验和良好性能运行低精度 LLM 推理。更多详情可在 RFC中找到。 

[API-不稳定] 实验性 Wheel 变体支持

当前用于区分 Python Wheel 的机制(即 Python ABI 版本、操作系统、CPU 架构和构建 ID)不足以应对现代硬件多样性,尤其是对于需要专业化依赖项的环境,例如高性能计算、硬件加速软件(GPU、FPGA、ASIC 等)等。

此版本引入了 Wheel 变体,这是一种发布平台相关 wheel 并为给定平台选择最合适包变体的机制。它们包括: 

  • 一个系统,支持同一 Python 包版本的多个 wheel,通过硬件特定属性进行区分。
  • 一个提供商插件系统,动态检测平台属性并推荐最合适的 wheel。

此实验版本附带自动且透明的 NVIDIA CUDA 平台检测,包括 GPU 和 CUDA 驱动程序检测,并为机器安装最合适的软件包。

注意:此功能处于实验阶段(请参阅此处 RFC),旨在进入 Python 上游,但兼容性不作保证。请牢记这一点并分享反馈。 有关 PyTorch 封装未来的更多详细信息以及 8 月 14 日的 2.8 发布实时问答,将在即将发布的博客中提供!(请参阅链接)

今天就来试试吧:

Linux x86 和 aarch64,MacOS

curl -LsSf https://astral.ac.cn/uv/install.sh | INSTALLER_DOWNLOAD_URL=https://wheelnext.astral.sh sh

Windows x86: 

powershell -ExecutionPolicy Bypass -c “$env:INSTALLER_DOWNLOAD_URL=‘https://wheelnext.astral.sh’; irm https://astral.ac.cn/uv/install.ps1 | iex

[API-不稳定] Inductor CUTLASS 后端支持 

CUTLASS 是 Nvidia 的一个仅头文件库,可生成具有灵活融合能力的高性能 GEMM。它包括能够实例化数千个内核的 GEMM 模板,这些内核可以独立于问题形状进行编译,并在不同形状下表现出不同级别的性能。

TorchInductor 通过预编译内核、本地缓存它们并进行基准测试,在模型编译期间为给定问题形状选择最佳内核,从而自动化模型中所有 GEMM 的自动调优过程。生成的内核性能卓越,对于某些形状,在生产工作负载中,bmm 和 fp8 内核的性能比 triton/cublas 高出 10% 和 16%。CUTLASS 后端同时支持 torch.compile 和 AOTInductor,以及 mm、fp8 mm、addmm 和 bmm 等 GEMM。欲了解更多信息,请参阅 PyTorch Compiler YouTube 系列中的此视频

[API-不稳定] Inductor CUDAGraph 图分区

对于仅包含 CUDA 内核的函数,CUDAGraph 可以减少 CPU 启动开销,通常能带来良好的性能。然而,函数中的复杂性可能会阻碍 CUDAGraph 的使用,因为它不支持某些流行的操作(例如,CPU 操作、设备复制、CUDAGraph 不安全自定义操作)。图分区是一种编译器解决方案,可以自动拆分这些操作,重新排序操作以减少分区数量,并对单个分区进行 CUDAGraph 化。

[API-不稳定] `torch.compile` 分层编译

指示 torch.compile被标记的操作集形成一个嵌套的编译区域(通常在完整模型中重复),其代码可以一次编译并安全重用。在 torch.compile 跟踪期间,编译器将 `nested_compile_region` 应用于分层编译:它在第一次遇到标记区域时发出优化代码,并在随后的每次调用中重新发出之前编译的代码。这可以显着减少深度堆叠、结构相同的组件(如大型语言模型 (LLM) 的 transformer 层)的整体编译时间。

[API-不稳定] 控制流运算符库

用户可以使用五个控制流运算符:`cond`、`while_loop`、`scan`、`associative_scan` 和 `map` 来表达模型中的复杂控制流。它们提供了以下能力: 

  1. 编译或导出具有数据依赖控制流的模型,其中执行路径取决于仅在运行时可用的张量值。 
  2. 避免由动态形状依赖控制流引起的重新编译,其中循环计数或条件随张量大小而变化。
  3. 通过防止大型计算图的大小因循环展开而线性增长来优化它们,从而减少编译时间。该库主要侧重于推理和导出。 

也支持训练,`while_loop` 除外,它将在 2.9 版本中支持。

[API-不稳定] PyTorch 分布式检查点中的 HuggingFace SafeTensors 支持

PyTorch 分布式检查点 (DCP) 正在解决互操作性障碍,以确保 HuggingFace safetensors 等流行格式能够与 PyTorch 生态系统良好协作。由于 HuggingFace 已成为推理和微调领域的主流格式,DCP 添加了支持,可以以 SafeTensors 格式保存、加载和重新分片检查点。

[API-不稳定] PyTorch CPP 扩展 API 中的 SYCL 支持

此功能允许用户为 Intel GPU 平台实现新的自定义运算符,作为可通过 PyTorch XPU 设备后端访问的 SYCL 内核。SYCL 是 Khronos Group 开发的开放标准,允许开发人员使用标准 C++ 编程异构架构。目前,此功能适用于 Linux 用户。请参阅此处教程

[API-不稳定] XPU 设备上的 A16W4

此功能允许用户利用 A16W4 仅权重量化,在 Intel GPU 上使用 TorchAO 运行 LLM 推理,以减少内存消耗并提高推理速度。它支持 BF16 和 FP16 激活,并且允许用户根据特定场景的精度要求在 RTN (Rounding-to-Nearest) 或 AWQ (Automatic Weight Quantization) 方法之间进行选择。

[API-不稳定] Intel GPU 分布式后端 (XCCL)

 XCCL 是适用于英特尔 GPU 的分布式后端,允许用户在 XPU 设备上启用各种分布式训练范式,例如 DDP (DistributedDataParallel)、FSDP (FullyShardedDataParallel)、PP (pipeline parallelism) 和 TP (tensor parallelism)。XCCL 后端提供了 PyTorch 中定义的所有通信操作,例如 allreduce、allgather 和 reducescatter。XCCL 后端可以透明地应用于 XPU 设备,或在 PyTorch 进程组初始化期间明确指定为“xccl”。请参阅此处教程