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 不是被拋棄的軟體,它是還合你機器身的那雙鞋。
新功能下個月還在那兒。而搞壞的訓練環境,加上退回舊版後讀不出來的檢查點,是用最貴的方式學到這個道理。
