PyTorch 2.15が出た——アップグレード前にPython・GPU・チェックポイントを確認しよう
PyTorch 2.15が2026年10月28日に正式リリースされた。目玉は魅力的だ。分散トレーニング向けの片側転送(one-sided transports)、FSDP2のきめ細かいメモリ制御、そしてPython 3.15で動くtorch.compile。「今すぐ上げて、あとで読む」が条件反射になっている人へ——この記事はその合間の小さな一時停止だ。以下に、つまずきやすい3つのポイントと、うまくいかなかったときの退路の残し方をまとめる。
最初にひとこと。このガイドは公式リリースノートに基づく整理であり、自分たちでインストールと移行を実測したものではない。あくまで「どこに落とし穴があるか」の地図として読んでほしい。あなたの環境への保証ではない。
落とし穴その一:pipが「そんなパッケージはない」と言う
Python 3.10の環境でpip install torchを実行しても、2.15は見つからない。PyTorchはPython 3.10向けwheelの公開をやめた。torch本体もバンドルされるTritonもcp310ビルドがなく、CIも3.10ではテストしていない。バイナリパッケージはPython 3.11から3.15まで(free-threadedの3.14t、3.15tを含む)が対象だ。
対処は地味だが本物だ。環境をPython 3.11以降に上げる。システムのPythonが3.10で固定されている場合——古いLTS系Linuxイメージでよくある——OSと戦うより、新しい仮想環境かコンテナに切り替える好機だ。そして今四半期にPythonを上げる余地がないなら、PyTorch 2.14にとどまるのは立派な選択であって、失敗ではない。
落とし穴その二:GPUやドライバが静かに対象外になる
公式のPyPI wheelはデフォルトでCUDA 13.2同梱になり、CUDA 13.4のビルドも並ぶ。CUDA 12.6と13.0のwheelはなくなった。この変更にはハードウェアの床がある。CUDA 13のwheelにはNVIDIAドライバ580以降と、Turing世代(compute capability 7.5)以降のGPUが必要だ。
平たく言えば、Maxwell、Pascal、Voltaのカード——GTX 10シリーズ、初代Titan X、Tesla P100/V100世代——は公式パッケージの対象から外れ、CUDA 12.x時代のドライバのままのホストも同じ状況だ。こうしたマシンはPyTorch 2.14にとどまるべきだ。2.14ではCUDA 12.6のwheelがまだ使える。
はっきり言っておきたいことが2つある。まず、これは「全員がGPUを買い替えろ」という話ではない。Turing以降でドライバが新しければ問題なく、ざっくり2018年以降のほとんどのカードがカバーされる。次に、確認はアップグレード後ではなく前にやる。nvidia-smiでドライバのバージョンがわかり、現在の環境でtorch.cuda.get_device_capability()を叩けばカードの位置がわかる。AMDユーザーには別の同種の変更がある。wheelが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で書き出す、大規模なマルチGPUトレーニング状態の標準的な保存形式だ。メタデータにテンソルのストライドが記録されるようになり、旧形式で書き出すフラグは存在しない。結果として、2.15で保存した分散チェックポイントは2.14以前では読み込めない。古いバージョンではdcp.loadが「too many values to unpack」というCheckpointExceptionで失敗する。
逆方向は問題ない。2.15は2.14のチェックポイントを普通に読む。また、これはtorch.saveで保存した通常のモデルファイルには関係ない。あくまで分散チェックポイント形式の話だ。
ただ、この一方通行がトレーニング運用に意味することを考えてほしい。アップグレードして2週間回し、何かが壊れて2.14に戻ることにしたとする。直近のチェックポイントは、戻った先では読めない。ロールバックが成立するのは、アップグレード前の最後の正常なチェックポイントが無事な場合だけだ。だから2.15で何かを回す前に決める。命綱として2.14時代のチェックポイントを残すのか、それは実用になるだけ新しいのか。
ざっと目を通す価格のある小さな変更
リリースノートから、自分に関係しそうなものを短く。NCCLバックエンドのデフォルトが新実装になった。旧実装はbackend="nccl-legacy"として今回のリリース限りで残る。プロセスグループは単一のCUDAデバイスに紐付くようになり、1プロセスから複数GPUを駆動するコードには刺さりうる。ネストしたテンソルがデフォルトのweights_only許可リストから外れたので、それを含むファイルのtorch.loadは明示的に許可しない限り失敗する。LinuxのCUDA wheelはcuRANDを同梱しなくなり、そのホストAPIを呼ぶネイティブ拡張は自分でインストールする必要がある。
退路を残すアップグレード手順
全体の手順を順番に示す。
- まずPythonを確認。python --version。3.11未満なら、何より先にそこを直す。
- GPUとドライバを確認。nvidia-smiでドライバ(CUDA 13のwheelには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以降のNVIDIAカードに最新ドライバ、仕事はファインチューニングや推論が中心——なら、2.15はクリーンな環境で同じ週に上げてよい部類だ。長時間の分散トレーニングを回しているなら、ゲートになるのはチェックポイントの問題だ。新しいチェックポイントの系譜を切り直せるタイミングで上げる。ハードウェアやPythonが新しい床を下回っているなら、2.14は見捨てられたソフトウェアではない。あなたのマシンにまだ合っているバージョンだ。
新機能は来月もそこにある。壊れたトレーニング環境と、逃げ戻った先のバージョンで読めないチェックポイントは、そのことを高くつく形で知る方法だ。
