10月29日、PyTorchが「PyTorch 2.15 Release Blog」と題した記事を公開した。本リリースは分散学習の安定性・推論速度・プラットフォーム対応という三方向に手が入っており、大規模学習を運用しているチームにとって見逃せない内容が含まれる。なかでも、マルチGPU環境でのハング原因を事後に自動記録する「フライトレコーダー」機能のデフォルト化は、数百台規模のGPUクラスタ運用を大きく変える可能性がある。
PyTorch 2.15は、PyTorch 2.14以降の3,117コミット、583コントリビューターによる成果だ。
最注目:NCCLバックエンドの完全刷新とデバッグ機能
マルチGPU学習において通信バックエンドのハングは長年の悩みの種だ。GPUが数百台規模になると、1台の停止が学習ジョブ全体を止める。原因特定のためにハングを手動で再現するしかない、という状況が続いてきた。
PyTorch 2.15では、書き直されたNCCLバックエンドがデフォルトになった。NCCL(NVIDIA Collective Communications Library)はマルチGPU間のAllReduceやBroadcastなどの集合通信を担うライブラリで、分散学習の根幹をなす。2.14でオプトイン機能(nccl2)として導入されたものが、すべてのncclプロセスグループで標準適用される。
特に実用的なのがフライトレコーダーの追加だ。collectiveがハングした際に、各ランクが何をしていたかをディスクにpost-mortemとして書き出す。watchdogのヘルス状態はデバッグサーバーに公開されており、任意のランクでタイムアウトが発生すると全ランクのフライトレコーダーダンプがトリガーされる。
ロールバックが必要な場合はTORCH_DIST_USE_NCCL2=0の環境変数、またはnccl-legacyバックエンド名で旧挙動に戻せる。NCCL 2.29以降では、障害発生時にサバイバーランクがフルブートストラップをスキップできる縮小・拡張ファストパスも利用可能だ。ROCm環境ではRCCL 2.30.7でのフォールトトレランス再設定にも対応した。
Apple Silicon:FP8対応と大幅な速度改善
Apple SiliconへのFP8サポート(torch.float8_e4m3fn)が追加された。float8_e4m3fnのE4M3は「指数部4ビット・仮数部3ビット」を意味するFP8フォーマットの一種で、FP16と比べてメモリ帯域を半減しつつ推論精度を維持しやすい形式として広く採用されている。_scaled_mmはテンソルワイズおよびロウワイズスケーリングに対応し、デコードサイズのシェイプ向けにgemvファストパスも持つ。
パフォーマンス面での改善幅が目を引く(いずれも元記事記載の数値):
- 128,256エントリの語彙に対するシングルロウsoftmax:約8倍高速化(Apple Silicon・特定シェイプ限定)
- upsampleのバックワードパス:最大21.7倍高速化
F.linearのgemvカーネル適用:幾何平均1.23倍、小さいプロジェクションでは最大5倍- 新規MPS
grouped_mmのgemvパスによるMoE(Mixture of Experts:複数の専門サブネットワークを動的に組み合わせるモデル構造)デコードスループット:M3 Ultraで1.32〜1.34倍
線形代数ソルバーも書き直されており、512×512行列のQR分解が約1.5ミリ秒に短縮されている。元記事では旧値との比較として大幅な短縮が示されているが、旧値はバグ相当の異常な遅さに起因するものであり、通常のパフォーマンス改善とは性質が異なる点に留意されたい。
さらに、torch.mps.Stream、current_stream、set_stream、コンテキストマネージャtorch.mps.stream、Tensor.record_streamからなる公開ストリームAPIが追加された。CUDAのAPIに倣ったもので、MPS上での非同期処理の制御が可能になる。
NVIDIA Blackwell向け:NVFP4デコードの高速化
NVGEMM(CuTeDSL GEMMバックエンド、2.14で追加)が強化された。ModelOpt NVFP4線形レイヤーのスカラー逆量子化ファクターをGEMM内に畳み込むことで、デコード中のレイヤーごとのpointwiseカーネル起動を削減する。
また、nvMatmulHeuristicsがカバーできないBlackwell NVFP4デコードシェイプ向けに、形状を考慮した候補ポリシーが追加された。Tritonのコンシューマーカーネルが、プロデューサーGEMMの末尾と重なって実行できるprogrammatic dependent launchにも対応する。
分散学習:FSDP2とパイプライン並列の細粒度制御
FSDP2(Fully Sharded Data Parallel v2:モデルのパラメータ・勾配・オプティマイザ状態をGPU間でシャーディングする分散学習手法の第2世代実装)では、MoEルーターゲートやnorm重みなど精度に敏感なパラメータをfp32に保ちつつ、モデルの残りをbf16で学習する混合精度設定が可能になった(MixedPrecisionPolicy(param_dtype_override_fn=...))。勾配蓄積ステップ全体を単一のCUDAグラフでキャプチャすることもできる。
パイプライン並列では、受信バッファの割り当てをマイクロバッチ全体の先行確保からそれぞれの受信直前に変更し、送信完了後に前向き出力を解放する形になった。max_outstanding_sends予算の指定、FSDP2 reduce gradsと後続コンピュートのオーバーラップにも対応し、メモリ効率と通信効率の両方にチューニング余地が生まれた。
その他のプラットフォーム対応
- CUDA 13.2がデフォルトwheelに(13.2.2ツールキット)。CUDA 13.4 GA wheelもLinux x86_64・aarch64・Windows向けに同梱され、NVIDIA Rubin GPUへの実験的サポートが追加された
- ROCm 10.0 wheelsが追加。全ROCm wheelはAMDのTheRockパッケージベースとなり、ROCmライブラリはバンドルではなくpip依存として導入される
- FlyDSLが新たなカーネルDSLとして追加(CuTeDSL・Triton・Helionに続く4つ目)。AMD gfx950でGEMM、ragged
F.grouped_mm、MXFP4/MXFP8のscaled_mmに対応 - AMD gfx1250(MI450)でのTensor Data Moverサポート(プレビュー)
- Python 3.11〜3.15対応、free-threaded 3.14t・3.15t buildを含む。
torch.compileはPython 3.15に対応
詳細はPyTorch 2.15 Release Blogを参照していただきたい。




