本文へスキップ

PyTorch 2.15、MacでのMoEデコードを最大6.5倍高速化

PyTorch(パイトーチ)2.15は、AppleのGPUでFP8テンソルに対応し、新しいMetalカーネルを追加します。M3 UltraでのQwen3.6-35B-A3Bのデコードは、毎秒9.4トークンから61.3トークンに跳ね上がります。

著者 Tech AI Wire Team

3 分で読めます

日の当たる木製デスクに置かれた銀色のApple Mac Studio。隣のモニターにはぼやけたコードが表示され、キーボード、マウス、観葉植物が近くにあります。
MoE decoding on M3 Ultra with torch.compile, tokens per second
Qwen3.6-35B-A3B, 2.14
9.4
Qwen3.6-35B-A3B, 2.15
61.3
LFM2.5-8B-A1B, 2.14
23.6
LFM2.5-8B-A1B, 2.15
123.6

2026年10月28日に公開予定のPyTorch 2.15では、Apple SiliconのMacで混合エキスパート(mixture-of-experts)型のAIモデルを動かす速度が大きく向上します。Hugging FaceのPyTorchチームによると、M3 Ultraでのデコードは2.14と比べて約5倍から6.5倍速くなります。このリリースでは、AppleのGPUでFP8の数値も使えるようになり、一部の画像モデルを動かなくしていたメモリと精度の問題も修正されます。

MPSとは何か、何が変わったか

MPSは、AppleのGPU向けのPyTorchのバックエンドです。モデルをMacのCPUではなくグラフィックスチップで動かす部分にあたります。Irakli SaliaとKhushi Agrawalが執筆したHugging Faceの投稿は、2.15での取り組みをまとめています。投稿が掲げる目標は、「MacをPyTorchモデルの実行と学習のための一流の場所にすること」です。

高速化の多くは、演算を手書きのMetalカーネルに移したことによるものです。Metalは、Appleの低レベルなグラフィックスと計算のためのインターフェースです。以前は多くの演算が、Appleのより汎用的なフレームワークであるMPSGraphを経由しており、それがオーバーヘッドを生んでいました。

このリリースでは、モデルがテキストを生成する仕組みが変わります。モデルがトークンを1つずつ書き出すとき、F.linearは入力1行向けに作られたカーネルを使うようになりました。新しいネイティブのF.grouped_mmは、混合エキスパートモデルが必要とする多数の小さな行列積を処理します。こうしたモデルは、各トークンを、エキスパートと呼ばれる少数の専門のサブネットワークに送ります。

数値で見る変化

すべての数値はHugging Faceの投稿によるもので、Appleのハードウェア上でtorch.compileを使って測定されています。

テストPyTorch 2.14PyTorch 2.15
Qwen3.6-35B-A3Bのデコード、M3 Ultra9.4 tokens/s61.3 tokens/s
LFM2.5-8B-A1Bのデコード、M3 Ultra23.6 tokens/s123.6 tokens/s
128,256トークンの行に対するSoftmax57マイクロ秒7マイクロ秒
Wan2.2の動画VAEデコード、ドライバーメモリのピーク270.1 GiB8.1 GiB
Qwen-Image-2.1のVAEの精度(CPU比)10.06 dB29.95 dB

線形層の伸びはより小さく、96種類のBF16の層の形状で平均1.23倍の高速化でした。大きな層はほぼ1倍のままです。精度の修正は、画像ツールにとって重要です。投稿によると、2.14ではComfyUIでQwen-Image-2.1のエンコーダーが壊れた出力を生成していました。

FP8とその他の追加機能

FP8は、各値を1バイトで保存する数値形式で、一般的な16ビット形式の半分のサイズです。PyTorch 2.15はMPS上でFP8テンソルをサポートし、スケーリング付き行列積のF.scaled_mmもそれらで動作します。

投稿に挙げられているその他の変更点:

  • GPU上で処理を並列に実行するためのストリームAPI、torch.mps.Stream。
  • 専用のMetalカーネルによる、softmax、畳み込み、パディング、ドロップアウトの高速化。
  • 複素数のLU分解や小さな行列の逆行列計算の高速化など、線形代数機能の拡充。
  • torch.frexp、torch.take、torch.heavisideなどの新しい演算。

動作要件と公開日

PyTorch 2.15には、Apple SiliconのMacで、macOS 15以降とPython 3.11以降が必要です。Python 3.10のサポートは、このリリースで終了します。PyTorchのリリースマネージャーは、3.10向けのwheelを提供するのは2.14が最後だと確認しました。

リリースブランチは10月5日に切られ、最初のリリース候補は10月8日に公開されました。正式リリースは10月28日の予定です。リリース候補は、別の環境でuv pip install torch==2.15.0 --index-url https://download.pytorch.org/whl/test/cpuを実行すれば、今すぐ試せます。

投稿では、2.16に向けた取り組みも先行して紹介されていますが、内容は変わる可能性があります。初期のテストでは、M5 Proでのグループクエリ(grouped-query)デコードのアテンションが、465マイクロ秒から65マイクロ秒に短縮されています。

開発者にとっての意味

Macでオープンモデルをローカルで動かしている人にとって、2.15は大きな改善をもたらします。Hugging Faceのテストでは、混合エキスパートモデルの伸びが最も大きくなっています。

  • 自分のモデルでリリース候補を試してください。 別の環境にインストールし、10月28日より前に、毎秒のトークン数を2.14と比べてください。
  • まずPythonとmacOSを更新してください。 Python 3.10やmacOS 14上のビルドには、2.15は提供されません。今のうちに移行を計画してください。
  • 画像パイプラインを再確認してください。 Qwen-Image-2.1やWan2.2の出力がおかしかったり、メモリ不足になったりしていたなら、2.15はまさにそうしたバグを対象にしています。
  • メモリ節約のためにFP8を試してください。 1つの値が1バイトなので、16ビット形式に比べてメモリが半分になります。切り替える前に、自分のタスクで出力の品質を確認してください。
  • ハードウェアをまたいでバックエンドを比較してください。 あらゆるチップをネイティブなデバイスにしようとするPyTorchの取り組みは、AWS Trainiumの新しいTorchNeuronバックエンドにも及んでいます。デバイスに依存しないコードであれば、それらの間で移せます。

出典

  1. MPS in PyTorch 2.15 - Hugging Face
  2. PyTorch Release 2.15 Key Dates - PyTorch Developer Mailing List
  3. PyTorch 2.15 RC1 produced for pytorch, torchvision & torchaudio - PyTorch Developer Mailing List

関連記事