PyTorch 2.8 发布博客

部署运行你感兴趣的模型镜像

我们很高兴地宣布PyTorch® 2.8发布(发行说明)!本次发布包含以下特性:

  • 面向第三方C++/CUDA扩展的有限稳定版libtorch应用程序二进制接口(ABI)
  • 基于原生PyTorch在英特尔CPU上实现的高性能量化大语言模型(LLM)推理
  • Wheel变体,这是一种发布依赖平台的wheel包并针对特定平台选择最合适软件包变体的机制。注意:此功能为实验性功能,旨在纳入Python上游,但不保证兼容性。欢迎提供反馈。
  • 为ROCm 7上的新gfx950架构添加了函数支持。具体而言,针对TorchInductor和AOTInductor可组合内核后端,为(矩阵乘法matmul、加法矩阵乘法addmm、二维卷积conv2d、批量矩阵乘法bmm、缩放矩阵乘法_scaled_mm)模板提供了最大自动调优支持。
  • 控制流操作符(condwhile_loopscanassociative_scanmap),用于模型编译和导出。
  • Inductor CUTLASS后端对torch.compile和AOTInductor的支持,以及对矩阵乘法mm、fp8矩阵乘法、加法矩阵乘法addmm和批量矩阵乘法bmm等通用矩阵乘法GEMM的支持。

更多内容如下!自PyTorch 2.7版本以来,本次发布包含来自585位贡献者的4164次提交。我们衷心感谢敬业的社区成员所做出的贡献。一如既往,我们鼓励您尝试这些新功能,并在我们改进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的常用技术。此功能可在最新的英特尔CPU平台上,基于原生PyTorch实现LLM的高性能量化推理。支持的配置包括A16W8、DA8W8和A16W4等。

使用torch.compile对量化模型进行编译时,我们会将量化通用矩阵乘法GEMM的模式降低为基于模板的高性能通用矩阵乘法GEMM内核,并在Inductor中进行最大自动调优。借助此功能,在单个英特尔CPU设备上,基于原生PyTorch栈的性能可接近理论峰值性能,这使得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打包的未来以及2.8版本发布现场问答的更多详细信息,将于8月14日发布的博客中提供!(参见链接

今天就试试吧:

Linux x86和aarch64、MacOS系统

curl -LsSf https://astral.sh/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.sh/uv/install.ps1 | iex

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

CUTLASS是英伟达的一款仅包含头文件的库,可生成具有融合灵活性的高性能通用矩阵乘法GEMM。它包含能够实例化数千个内核的通用矩阵乘法GEMM模板,这些内核可独立于问题形状进行编译,并在不同形状下表现出不同的性能水平。

TorchInductor通过对模型中的所有通用矩阵乘法GEMM进行预编译内核、在本地进行缓存以及对其进行基准测试,从而在模型编译期间为给定的问题形状选择最优内核,以此实现所有通用矩阵乘法GEMM的自动调优过程。生成的内核性能优异,在某些形状下,对于批量矩阵乘法bmm和fp8内核,性能比triton/cublas提高了10%和16%。CUTLASS后端对torch.compile和AOTInductor均提供支持,同时也支持矩阵乘法mm、fp8矩阵乘法、加法矩阵乘法addmm和批量矩阵乘法bmm等通用矩阵乘法GEMM。更多信息,请参见PyTorch编译器YouTube系列中的此视频

[API不稳定] Inductor CUDA图(CUDAGraph)的图划分

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

[API不稳定] torch.compile层次化编译

指示torch.compile,标记的操作集构成了一个嵌套编译区域(通常在完整模型中重复出现),其代码可编译一次并安全重用。在torch.compile追踪期间,编译器使用nested_compile_region应用层次化编译:首次遇到标记区域时,编译器会发出优化代码,并在后续每次调用时重新发出先前编译的代码。对于深度堆叠、结构相同的组件(如大型语言模型LLM的Transformer层),这可大幅减少整体编译时间。

[API不稳定] 控制流操作符库

用户可使用五个控制流操作符:condwhile_loopscanassociative_scanmap,在模型中表达复杂的控制流。它们提供了以下能力:

  1. 编译或导出具有数据依赖控制流的模型,其中执行路径仅在运行时根据张量值确定。
  2. 避免因动态形状依赖控制流导致的重新编译,其中循环计数或条件会随张量大小而变化。
  3. 通过防止因循环展开导致的大型计算图线性增长,从而减少计算图大小,降低编译时间。该库主要关注推理和导出。

训练也得到了支持,但while_loop除外,该操作符将在2.9版本中得到支持。

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

PyTorch分布式检查点(DCP)正在解决互操作性问题,以确保像HuggingFace safetensors这样的流行格式能够与PyTorch生态系统良好兼容。由于HuggingFace已成为推理和微调领域的领先格式,DCP添加了对支持以SafeTensors格式保存、加载和重新分片检查点的功能。

[API不稳定] PyTorch C++扩展API中的SYCL支持

此功能允许用户通过PyTorch XPU设备后端,将针对英特尔GPU平台的新自定义操作符实现为SYCL内核。SYCL是由Khronos Group开发的开放标准,允许开发人员使用标准C++对异构架构进行编程。目前,此功能仅适用于Linux用户。请参见此处的教程

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

此功能允许用户利用A16W4仅权重量化,在英特尔GPU上使用TorchAO运行LLM推理,以减少内存消耗并提高推理速度。它支持BF16和FP16激活,并额外允许用户根据特定场景的精度要求,在RTN(最近舍入)或AWQ(自动权重量化)方法中进行选择。

[API不稳定] 英特尔GPU分布式后端(XCCL)

XCCL是英特尔GPU的分布式后端,允许用户在XPU设备上启用各种分布式训练范式,如分布式数据并行(DDP)、完全分片数据并行(FSDP)、流水线并行(PP)和张量并行(TP)。XCCL后端提供了PyTorch中定义的所有通信操作,如allreduce、allgather和reducescatter。XCCL后端可在XPU设备上透明应用,也可在PyTorch进程组初始化期间使用“xccl”名称明确指定。请参见此处的教程

原文地址:https://pytorch.org/blog/pytorch-2-8/

您可能感兴趣的与本文相关的镜像

PyTorch 2.8

PyTorch 2.8

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

csdddn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值