PyTorch 2.15 升级前先看:Python、显卡和训练存档有哪些变化
PyTorch 2.15 在 2026 年 10 月 28 日正式发布了,是正式版,不是候选版。亮点确实有诱惑力:分布式训练的单边传输、FSDP2 更细的内存控制、torch.compile 支持 Python 3.15。如果你的第一反应是"先升了再说",这篇文章就是中间那一下停顿。下面讲三件最容易踩的事,外加一套万一升级翻车也能全身而退的做法。
先交代一句:这篇是根据官方发布说明整理的,我们自己没做安装和迁移实测。把它当"哪里可能有坑"的地图看,不是针对你具体机器的担保。
坑一:pip 告诉你"没有这个包"
在 Python 3.10 环境里跑 pip install torch,根本找不到 2.15。PyTorch 从这个版本起不再发布 Python 3.10 的安装包——torch 和自带的 Triton 都没有 cp310 构建,CI 也不再在 3.10 上跑测试。官方二进制包从 Python 3.11 起步,一直覆盖到 3.15,包括自由线程的 3.14t 和 3.15t。
解决办法朴素但实在:把环境升到 Python 3.11 或更新。如果你的系统 Python 卡在 3.10——老一些的 LTS 版 Linux 镜像里很常见——这正是换个干净虚拟环境或容器的时机,别跟操作系统较劲。如果这个季度实在动不了 Python,留在 PyTorch 2.14 是正经选择,不算认怂。
坑二:显卡或驱动悄悄掉队
官方 PyPI 包现在默认带 CUDA 13.2,另有 CUDA 13.4 的包可选;CUDA 12.6 和 13.0 的包没有了。这个变化带了一道硬件门槛:CUDA 13 的包要求 NVIDIA 驱动 580 或更新,显卡要是 Turing 架构(算力 7.5)或更新。
说人话:Maxwell、Pascal、Volta 这三代卡——GTX 10 系列、初代 Titan X、Tesla P100/V100 那批硬件——官方包不再伺候了;还在用 CUDA 12.x 时代驱动的主机也一样。这些机器应该留在 PyTorch 2.14,那边的 CUDA 12.6 包还能用。
有两件事要说清楚。第一,这不是"所有人都得换显卡":Turing 及以后的卡、驱动升级到最新就行,大致覆盖 2018 年以后的大多数显卡。第二,检查要在升级前做,不是升级后:nvidia-smi 能看驱动版本,在现有环境里跑 torch.cuda.get_device_capability() 就知道自己的卡排在哪。AMD 用户有对应的同款变化:安装包迁到 ROCm 7.14 和 10.0,gfx900 和 gfx906 的核被砍掉,MI25、MI50、MI60、Radeon VII 的用户留在 2.14 或者自己从源码编译。Mac 用户再加一条:MPS 后端现在要求 macOS 15 或更新,macOS 14 上直接报不可用,不过 CPU 版照跑。
坑三:检查点的单行道
这条最隐蔽,对正在跑训练的人也最重要。
PyTorch 2.15 改了分布式检查点的元数据格式——就是 torch.distributed.checkpoint 写的那种,多卡大训练存状态的标准方式。新格式的元数据里记录了张量的 strides,而且没有开关可以写回旧格式。后果是:2.15 存的分布式检查点,2.14 及更早的版本读不了。在旧版本上 dcp.load 会直接抛 CheckpointException,报"too many values to unpack"。
反方向是通的——2.15 读 2.14 的检查点没问题。另外这事不涉及 torch.save 存的普通模型文件,专指分布式检查点这个格式。
但想想这条单行道对训练任务意味着什么。你升了级,训了两周,发现哪里不对劲,决定退回 2.14。结果最近的检查点在旧版本上拒绝加载。你的回退方案要成立,前提是升级前最后一个完好的检查点还在。所以用 2.15 正式开训之前先想清楚:作为救生艇的那个 2.14 时代检查点,你留了吗?它新到够用吗?
值得扫一眼的其他小变化
发布说明里还有几处,简短列一下,万一有你家的:NCCL 后端默认换成了新实现,旧实现以 backend="nccl-legacy" 的形式只保留这一个版本,而且进程组现在绑定单一 CUDA 设备——一个进程驱动多张卡的写法可能会中招。嵌套张量被移出了 weights_only 的默认白名单,torch.load 读含这类张量的文件,不显式加白名单就会失败。Linux 的 CUDA 包不再附带 cuRAND,调用它 host API 的原生扩展得自己装。
留好退路的升级流程
整套做法按顺序来。
- 先查 Python:python --version。低于 3.11 的话,先解决这个再说别的。
- 查显卡和驱动:nvidia-smi 看驱动(CUDA 13 的包要 580 或更新),在现有环境里跑 torch.cuda.get_device_capability()(要 7.5 或更高)。
- 把 2.15 装进一个全新的虚拟环境或容器。别原地升级正在干活的那个环境——旧环境就是你的退路。
- 正式开跑之前,在新环境里过一遍训练脚本的冒烟测试和你的评估流程。
- 第一次正式训练前定好检查点策略:在 2.15 被你的实际负载验证之前,最后一个 2.14 能读的检查点原封不动地留着。
- 上面任何一项检查过不去,就钉住旧版本继续过你的季度:pip install torch==2.14,配上和你硬件对应的 index URL。
现在该升的,和可以等的
如果你是 Python 3.11 以上、Turing 或更新的 N 卡加新驱动、干的活以微调或推理为主,2.15 属于找个干净环境这周就能升的那类。如果你在跑长周期的分布式训练,检查点问题就是你的闸门——等得起重建一条检查点线的时候再升。如果你的硬件或 Python 够不着新门槛,2.14 不是被抛弃的软件,它是还合你机器身的那双鞋。
新功能下个月还在那儿。而搞坏的训练环境,加上退回旧版后读不出来的检查点,是用最贵的方式学到这个道理。
