🔴 📦 开源 发布于: · 3 分钟阅读 ·

PyTorch 2.13:LLM训练GPU显存最高降低4倍,FlexAttention提速12.3倍

编辑配图:PyTorch 2.13新版本,AI训练与推理的关键改进

PyTorch 2.13发布,包含来自526位贡献者的3328个提交。核心亮点:nn.LinearCrossEntropyLoss将LLM训练峰值GPU显存最高降低4倍,Apple Silicon上FlexAttention最高提速12.3倍,新torchcomms后端现代化分布式训练。

🤖

本文由人工智能基于一手来源生成。

PyTorch 2.13于2026年7月8日发布,包含来自526位贡献者的3328个提交——直接解决了ML工程师长期面临的三大痛点:大模型训练时的GPU显存、Apple Silicon上的注意力机制速度,以及分布式训练的复杂性。此外,平台支持扩展至Arm Armv9-A、Intel XPU和Python 3.15,safetensors格式现已无需外部库即可原生支持。

损失融合:GPU显存最高降低4倍

PyTorch 2.13中最令人印象深刻的新特性是新类**nn.LinearCrossEntropyLoss**。乍看之下像是技术细节,但对于任何训练大词汇表语言模型的人来说,其影响不可小觑。

LLM训练的标准流程:最终线性层将模型的隐藏状态投影到词汇表空间(例如10万个token),然后交叉熵损失计算与正确答案的误差。问题在于中间结果的规模:对于词汇表大小达10万或更多的模型,这个线性投影需要巨大的张量存储在GPU上,以便在反向传播时计算梯度。

nn.LinearCrossEntropyLoss将这两个步骤融合为单一操作——投影和损失一起计算,内核永远不会实例化完整的中间结果,也不会将其保留在VRAM中。结果:大词汇表模型训练的峰值GPU显存最高降低4倍。API设计为直接替代品——支持标签平滑、权重绑定和z-loss正则化,迁移只需最少的代码修改。

为什么LinearCrossEntropyLoss如此重要?

即使是配备80 GB VRAM的现代GPU,LLM训练也面临显存限制,这决定了可使用的批次大小、模型能看到的序列长度以及实际可训练的模型规模。显存瓶颈并不抽象——它决定了你能用现有硬件进行哪些实验,哪些做不到。

峰值显存占用降低4倍实际上意味着可以在同一块GPU上训练更大的模型、使用更大的批次或处理更长的上下文。对于那些无法访问数百块GPU集群的研究实验室和初创公司而言,这是一项切实的进步,改变了现有资源所能实现的边界——无需购买更昂贵的设备。

Apple Silicon上的FlexAttention:最高提速12.3倍

PyTorch 2.13将FlexAttention引入MPS后端(Apple Silicon)。在稀疏注意力模式——如长上下文模型中使用的滑动窗口注意力——上,与SDPA(缩放点积注意力)相比最高提速12.3倍

具体测量数据一目了然:在同一块Apple Silicon芯片上,使用256元素滑动窗口的32768个token序列,FlexAttention仅需约35毫秒,而标准SDPA需要约431毫秒。这一差距将Mac上的长上下文推理从理论上可行变为实际上的快速。

还增加了FlexAttention的确定性反向传播——通过torch.use_deterministic_algorithms(True)激活逐位可复现的梯度,在长序列上的时间开销不足1%。梯度可复现性对调试和生产训练流水线非常重要,这些场景需要跨运行的一致性。

新编译后端与分布式训练

PyTorch 2.13引入CuTeDSL「原生DSL」后端,作为Inductor中针对NVIDIA GPU上GEMM和RMSNorm操作的Triton替代方案。由于子进程池消除了GIL瓶颈,内核编译速度更快:内核的并行编译不再阻塞于Python全局解释器锁,整个编译过程在多核系统上更快。

在分布式方面,新库torchcomms取代较旧的c10d后端,成为分布式训练的现代通信层。它带来结构化日志记录、集合操作追踪和更好的容错能力——优雅超时以及在集群部分节点临时掉线时对部分节点组恢复的支持。FSDP2获得通信重叠:reduce-scatterall-gather操作现在可以并行执行(通过set_separate_reduce_scatter_group选择加入),提升了快速网络连接集群上的分布式训练吞吐量。

一项节省集成麻烦的实用小改进:**torch.load("foo.safetensors")**现在无需安装外部safetensors库即可原生工作——格式会被自动检测和加载。

更广泛的平台支持:Arm、Intel XPU、Python 3.15与破坏性变更

PyTorch 2.13同时在多条战线扩展平台支持:

Arm Armv9-Atorch.compile支持Neoverse V2和AWS Graviton4系列AArch64处理器,具有128位和256位SVE特性传播。基于Armv9-A架构的云服务器现在是编译版PyTorch的完整平台。

Intel XPU遥测:追踪Intel XPU设备的新API——torch.xpu.device_memory_used()、处理器利用率、功耗、时钟频率和温度——为ML工程师提供了此前仅有CUDA设备才有的可见性。

Python 3.15:Linux(x86_64和aarch64)上的二进制支持,包括自由线程变体(3.15t)。注意:torch.compile在Python 3.15上尚不可用,Python 3.15的torchvision二进制包也未构建——两者将在后续版本中提供。

CUDA:默认版本变为CUDA 13.0;CUDA 12.8和12.9的构建版本已从二进制包矩阵中移除。

破坏性变更:命名张量(named tensors)在本版本中从PyTorch中彻底移除——这一硬性弃用已提前多个版本预告。分布式集合操作all_gather_into_tensorreduce_scatter_tensor分别重命名为all_gather_singlereduce_scatter_single。Bazel构建已移除,CPython 3.13t从Linux二进制矩阵中退出。

Apple Silicon MPS后端进行了大规模内部迁移:复制、类型转换、归约、排序、scatter/gather和embedding反向操作现在直接使用原生Metal compute内核,消除了此前拖慢首次运行延迟的MPSGraph编译开销。

想直接听作者讲解详情的用户:2026年7月22日太平洋时间上午11点,Alban Desmaison、Andrey Talman和Piotr Białecki将举行现场答疑(主持人:Chris Gottbrath)。

常见问题

什么是nn.LinearCrossEntropyLoss,为什么它很重要?
nn.LinearCrossEntropyLoss将最终线性投影和交叉熵损失融合为单一操作,对大词汇表模型的峰值GPU显存需求最高降低4倍。它是nn.Linear和nn.CrossEntropyLoss组合的直接替代品。
PyTorch 2.13中Apple Silicon上FlexAttention提速多少?
在稀疏注意力模式(如滑动窗口注意力)上最高提速12.3倍,超越SDPA。对于32768个token的序列,延迟从约431毫秒降至约35毫秒。
什么是torchcomms,它替换了哪个现有系统?
torchcomms是新的分布式训练通信后端,替换c10d。它带来结构化日志记录、集合操作追踪、优雅超时以及在更大节点群组工作时更好的容错能力。