默认后端换了

2.14 里可选的 nccl2 在 2.15 成为所有 nccl 进程组的默认;官方保留 TORCH_DIST_USE_NCCL2=0 与 nccl-legacy 两条回退路径,并加入 flight recorder,卡死时自动 dump 现场。通信器随进程组提前创建,重配置可选 shrink/grow 快路径,存活 rank 不必再走完整 bootstrap。

FSDP2 的内存旋钮

精度敏感参数(MoE 路由门、norm 权重)可以单独留 fp32,其余用 bf16,仍保持每个 fully_shard 一次 all-gather;整步梯度累积可捕获进一张 CUDA graph;梯度可按参数设精度。流水线并行改为接收前才分配缓冲、发送完成即释放前向输出,并给每条边独立 P2P 通信器。

平台与破坏性变化

新增 ROCm 10.0 wheel(基于 TheRock,ROCm 作为 pip 依赖)、Blackwell 上 NVFP4 解码优化、Apple Silicon 的 FP8 与更快 decode;CUDA 13.2 成为默认 wheel,Python 3.10 不再支持,最低 3.11。checkpoint 加载、自定义算子异常处理、activation checkpointing 都有行为变化,升级前要逐条看 release notes 的 breaking changes。

# 出问题时先回退,再定位
TORCH_DIST_USE_NCCL2=0 torchrun --nproc_per_node 8 train.py
# 或显式指定旧后端
TORCH_DIST_BACKEND=nccl-legacy torchrun --nproc_per_node 8 train.py

升级顺序

先在预发集群跑长任务,验证 dump 路径可写、回退开关有效,再改生产镜像;同时清掉 Python 3.10 依赖。不要一上来就全量切,NCCL 的问题往往要到几小时后才出现,短任务测不出来。

分布式训练的第一指标不是峰值吞吐,是出错时能不能定位、能不能退回。