知乎上「pytorch怎么安装啊?」这种问题能有 25 万浏览。知乎这说明一件事:PyTorch 再成熟,环境这关还是会卡住一大批人。而 5 月下旬发布的 2.12,偏偏动的是环境这层——官方把 wheel 的 CUDA 矩阵改了。这篇不复述更新日志,只回答一个问题:还在 2.x 的你,现在该不该升 2.12,怎么升,谁先别升。
这个版本在下一盘什么棋
先看官方定调。PyTorch 2.12 发布博客里有一句值得细读:「纵观这些版本,PyTorch 正在各后端上变得更快,可适用于更广泛的平台」。知乎把三个版本串起来看脉络很清楚:2.10 打地基,引入跨后端性能原语、正式弃用 TorchScript;2.11 给分布式训练加了可微分集合通信、给下一代 GPU 上了 FlashAttention-4;2.12 继续往「硬件无关」走。本次版本自 2.11 以来共包含来自 457 位贡献者的 2,926 次提交。中文社区跟得也紧,知乎官方账号很快放出了完整中文译稿,各类 2.x 新特性演进梳理也陆续出现。
2926 次提交里,真正和你有关的
不列流水账,只挑影响你决策的:
torch.accelerator.Graph:新的设备无关图捕获/回放 API,在 CUDA、XPU 和第三方后端之上提供统一抽象,第三方后端可以通过 PrivateUse1 接入。知乎这条对国产算力适配很重要——torch_npu 这类适配层正是走 PrivateUse1 机制挂在 PyTorch 上的,官方接口越统一,第三方后端越好接。

torch.export 支持 Microscaling(MX)量化格式:MXFP4、MXFP6、MXFP8 这些格式里用作共享块尺度指数的 float8_e8m0fnu 数据类型,以前 torch.export.save 处理不了,导致 MX 量化模型从导出到部署整条路被堵死。这次打通了,对在边缘或成本受限环境部署大模型的团队是实打实的解锁。
linalg.eigh 批量特征值分解在 CUDA 上最高提速 100 倍:后端选择逻辑重构,弃用 MAGMA 转向 cuSolver。做科学计算、分子动力学相关工作的,这是直接受益项。
torch.cond 控制流可以在 CUDA Graph 里捕获了:以前数据相关控制流会因为分支在 CPU 求值而强制回退到 CUDA 图树,现在借助 CUDA 12.4 的条件 IF 节点,分支完全在 GPU 上、单次图捕获内求值。目前适用于 eager 和 cudagraphs 后端,Inductor 支持留给后续版本。
addcdiv 的 FMA 下降:addcdiv 是 Adam、AdamW、RMSprop 这些优化器更新规则的核心。Inductor 现在用融合乘加指令,与 eager 执行做到逐位数值一致——解决的是 torch.compile 训练里的老痛点:编译后数值漂移累积几千步,没法验证结果可复现。知乎

ROCm 大礼包:可扩展内存段(ROCm ≥ 7.02)、rocSHMEM 对称内存集合操作(含面向 MoE 的 2D AllToAllv)、hipSPARSELt 2:4 稀疏加 MI350X 上的 FP8 支持、FlexAttention 在 MI350X 上多种注意力模式提速 5-26%。
Apple Silicon:二进制 wheel 现在随附提前编译好的 Metal-4 着色器,消掉首次运行的着色器编译开销,MPS 启动延迟直接降下来。
真正的坑:官方博客藏在最后的两条弃用
更新亮点大家都会转,影响面最大的其实是博客后半段两条「弃用」。
坑一:CUDA 12.8 wheel 没了。 官方原话:「从 PyTorch 2.12 开始,CUDA 12.8 二进制 wheel 已被弃用,将不再作为标准发布矩阵的一部分发布。」现在的矩阵是:默认 wheel 为 CUDA 13.0(PyPI 上 pip install torch 装到的就是它),CUDA 13.2 作为实验性构建。知乎你要按自己的卡选:「在旧架构(例如 Pascal、Volta)上运行的用户应切换到 CUDA 12.6 wheel,该版本在本次发布中仍受支持」;Blackwell 一代用 CUDA 13.0+ wheel,且必须把 NVIDIA 驱动升到 580.65.06(Linux)或 580.88(Windows)。知乎上常年有人问「每一个安装的 PyTorch 都和一个具体的 CUDA 版本绑定」怎么办——2.12 之后这事更容易乱。升级后 torch.cuda.is_available() 返回 False,先核对 wheel 和驱动的对应关系,别上来就重装。
坑二:TorchScript 正式弃用。 2.10 就弃用了,2.12 博客再次确认:用 torch.export 替代 jit trace/script API,用 ExecuTorch 替代嵌入式运行时。知乎部署链路里还挂着 TorchScript 模型的,可以排迁移计划了——不是旧版本马上不能用,而是新功能(比如这次的 MX 量化导出)以后只长在 torch.export 这棵树上。

坑三:提前给你打个招呼——2.13 的 torchcomms。 官方博客明确预告:「在即将发布的版本(2.13+)中,我们计划默认使用 torchcomms,这包括对 ProcessGroup 运作方式的一些破坏性变更。」如果你的分布式代码在 ProcessGroup 上有深度定制,2.12 正好是验证窗口:pip install torchcomms,设 TORCH_DISTRIBUTED_USE_TORCHCOMMS=1,提前跑一遍。知乎

决策表:你属于哪一档
直接升:新起项目没历史包袱的;Blackwell 卡用户(反正躲不开 CUDA 13.0+);要部署 MX 量化模型的;被 torch.compile 数值可复现问题折腾过的。
值得升但不用急:在 Ampere、Hopper(A100、H100 这一代)上跑稳定训练的。2.12 对你的增量主要是排查工具——Profiler Events API 补齐、跨 rank 用 seq_num 关联 NCCL 集合追踪、CUDA Graph 内核注解。等有调优需求时一起升。
先别升:Pascal、Volta 老卡用户(老老实实在 2.11 待着,或者按官方指引用 12.6 wheel);分布式重度用户、尤其定制过 ProcessGroup 的(等 2.13 torchcomms 评估明朗,或先用上面的环境变量验完再动);用 torch_npu 这类国产适配层的——跟着适配层自己的版本矩阵走,别抢跑。
Apple Silicon 用户:升级基本无成本,首次运行还变快了,属于顺手的事。
一点帮你理解方向的背景音
这次发布还有一条暗线:PyTorch 的「硬件无关」不只是对 Intel XPU 和 AMD ROCm。知乎上有个长热帖「如何看待pytorch2.1,原生支持华为昇腾NPU?」,今年 3 月还有人在下面回:「目前pytorch都2.10了,pytorch官方还没有支持华为昇腾NPU」。知乎到今天,昇腾跑 PyTorch 仍是走 torch_npu 适配,社区里已经攒出「5分钟把CUDA代码跑在昇腾上」这类实操帖和昇腾版 FSDP2 指南。知乎另一边,DeepSeek 和智谱都声明将在下半年大规模使用华为昇腾950超节点——「PyTorch 代码跑在国产算力上」的真实需求只会更大。知乎2.12 的 torch.accelerator.Graph 加 PrivateUse1 方向,正是给这些第三方后端铺一条更体面的接入路。


AMD 这边同样热闹:8 月还有人在「AMD能不能完美运行pytorch?」下面逐层拆解 ROCm 的环境问题,而官方从 2.10 起就把 ROCm 越补越全,2.12 更是把对称内存、稀疏、FlexAttention 流水线一次给齐。知乎2026 年的框架之争,比的已经不是谁算子多,而是谁能在更多硬件上跑起来。
值得继续盯的几个信号
2.13 发布、torchcomms 转默认——那才是分布式代码真正的考验时刻;
CUDA 13.2 什么时候从实验性进标准发布矩阵;
torch_npu 等国产适配层何时跟进 torch.accelerator.Graph 这类新接口;
ExecuTorch 替代 TorchScript 嵌入式场景的进展。
收藏这篇,等 2.13 出来对照这张决策表更新一版。