PyTorch 2.15 把重寫 NCCL 後端設為預設,加入卡死時自動留底機制

PyTorch 基金會於 2026 年 10 月 28 日發布 PyTorch 2.15,版本由 2.14 以來累積 3,117 個 commit、583 位貢獻者[1]。新版最受注目的改動,是把重寫的 NCCL 後端設為所有 nccl process group 的預設,並加入一個與後端無關的「飛行記錄儀」,在集群通訊超時時把各 rank 當時的狀態寫入磁碟。

分散式訓練的除錯能力

在大型訓練中,只要有一張 GPU 停擺,整個訓練就可能報廢,而過去要找出原因,往往需要人手重現故障。新版在集群通訊超時時,會由每個 rank 觸發飛行記錄儀,把各自的狀態寫成事後分析檔案,讓工程師直接檢視卡死一瞬間各節點在做什麼。

重寫的後端在 2.14 曾以選項形式預覽,2.15 正式接手預設位置。若遇上相容問題,可以用環境變數 TORCH_DIST_USE_NCCL2=0,或是改用 nccl-legacy 後端,回到舊有的 ProcessGroupNCCL。此外,torch.distributed 新增雙向傳輸 API,首個後端為 NIXL,傳輸可直接在 CUDA stream 上排程,因為可以嵌入 CUDA graph 捕捉;相關 API 目前仍標示為不穩定。

FSDP2 與流水線並行也加入更細緻的記憶體與通訊控制,包括讓 MoE 路由閘門等對精度敏感的參數保持 fp32、其餘以 bf16 訓練,並可把整個梯度累積步驟捕捉進一個 CUDA graph。梯度近似現在可以與後續運算重疊。

硬體支援與效能

在 NVIDIA Blackwell GPU 上,NVGEMM 把 NVFP4 線性量化的細量化因子併入 GEMM,減少解碼時每層多顯的 kernel 啟動。Apple Silicon 首次支援 FP8 的 float8_e4m3fn 與 _scaled_mm,新增的 grouped_mm 提供解碼快速路徑,官方量測在 M3 Ultra 上 MoE 解碼提升 1.32 至 1.34 倍,並公開 torch.mps.Stream 等串流 API。AMD 方面新增 ROCm 10.0 wheel,全部 ROCm wheel 改為基於 TheRock 套件;Intel GPU 則引入 SYCL 自由函數寫法。

升級前必須注意

版本要求有多項不兼容改動。Python 3.10 不再支援,2.15 要求 Python 3.11 或以上,3.10 的 wheel 不再建置,亦不再於 CI 測試。macOS 14 同樣終止支援,MPS 加速要求 macOS 15 或以上,專輯已移除針對 macOS 14 的相容處理。

預設 CUDA wheel 由舊版本移至 CUDA 13.2(13.2.2 工具鏈),同時提供 CUDA 13.4 的正式版 wheel,後者對 NVIDIA Rubin GPU 提供實驗性支援。若專業的部署鎖定特定 CUDA 版本,升級前請先確認驅動與 wheel 的配對。

此外,FSDP2 把分片與未分片的梯度 dtype 分開處理,當 reduce_dtype 設為 None 時,梯度會直接累積到 .grad 並跟隨每個參數的 grad_dtype,預設行為與以往不同。torch.ops 及自訂運算的 C++ 警告也會傳播到 Python,以往被隱藏的警告可能突然出現在日誌中,宜先在測試環境觀察。

參考資料

[1] PyTorch 2.15 Release Blog – PyTorch Foundation(2026-10-28)

[2] PyTorch 2.15.0 Release – GitHub(2026-10-28)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*