PyTorch 2.15におけるMPSの進化:Apple SiliconでのAI推論と学習を加速


ADVERTISEMENT

PyTorch 2.15におけるMPSの主要な強化点

PyTorch 2.15では、Apple Siliconを搭載したMac上での深層学習ワークロードを高速化するMetal Performance Shaders(MPS)バックエンドに、大幅な機能強化と最適化が施されました。特に注目すべきは、FP8 (float8_e4m3fn) データ型のサポート導入です。これにより、BF16と比較してメモリ使用量が半分に削減され、スケーリングされた行列乗算やその他の演算で利用可能となり、Apple Siliconデバイスの統合メモリの制約を緩和します。 このFP8サポートは、大規模モデルの展開や学習において、より大きなモデルやバッチサイズでの実験を可能にし、Macの計算能力を最大限に引き出すための重要な一歩となります。

Hugging FaceのPyTorchチームは、2026年初頭にはMPS上でのモデル実行が「サポートされていない操作、パフォーマンスの低下、予期せぬメモリ増加」に直面することが多かったと述べており、この問題に対処するため、MPSGraphを専用のMetalカーネルに置き換えることで性能向上を図ってきました。 この取り組みにより、PyTorch 2.15では多くの領域でパフォーマンスのボトルネックが解消され、MacがPyTorchモデルの実行と学習のための「ファーストクラスの場所」になることを目指しています。

言語モデル処理と線形代数演算の飛躍的改善

PyTorch 2.15におけるMPSの最も顕著な改善点の一つは、言語モデルのデコード速度の劇的な向上です。特にMixture-of-Experts(MoE)モデルでは、PyTorch 2.14と比較して5〜6.5倍の高速化が実現されました。 例えば、Qwen3.6-35B-A3BモデルはM3 Ultra上で9.4トークン/秒から61.3トークン/秒へと大幅に改善しています。 この高速化は、ネイティブなグループ化された行列乗算、専用のデコードパス、GPU-CPU間の同期回数の削減、およびより高速なtop-kルーティングといった複合的な最適化によって達成されました。

一般的な大規模言語モデル(LLM)についても、トークンあたりの処理時間が短縮されています。単一行の線形レイヤーでは特殊な行列-ベクトルカーネルが使用され、語彙全体にわたるsoftmax演算は約8倍高速化されました。 これに加えて、線形代数演算も強化され、複素数のLU分解や三角行列の解法、小規模行列の逆行列計算、QR分解などがGPU上でより高速に実行できるようになりました。 さらに、SVD(特異値分解)の数値的堅牢性も向上し、非常に小さい特異値や非常に大きい/小さい入力値、full_matrices=Trueでの基底補完を正しく処理できるようになり、擬似逆行列や最小二乗法の結果の信頼性が高まっています。

メモリ効率化と汎用ワークロードへの適用

PyTorch 2.15では、オーディオ、ビデオ、および一般的なトレーニングワークロードにおけるパフォーマンスも向上しています。畳み込み、パディング、ドロップアウト、補間逆伝播、および削減操作のパスが高速化されました。 特に注目すべきは、Wan2.2のビデオVAEデコードにおけるメモリフットプリントの大幅な削減です。以前は270 GiBものメモリを消費していたものが、8 GiBへと劇的に改善されました。 これは、Apple Siliconの統一メモリアーキテクチャにおいて、大規模なテンソル操作が原因で発生しやすかったメモリオーバーヘッド問題に対する重要な解決策です。

さらに、Pythonからのより詳細な制御を可能にする「公開MPSストリーム」が導入され、開発者は非同期操作をより効率的に管理できるようになります。 PyTorch 2.15では、MPSで動作する操作の数も増加しており、以前は制限事項として挙げられていた、特定の操作のサポート不足が着実に改善されています。 これらの改善は、単一のMacデバイス上で多様なAIワークロードを効率的かつ安定して実行するための基盤を強化します。

開発者・エンジニア視点での考察

  1. FP8の活用によるメモリ制約の緩和とモデル規模の拡大: PyTorch 2.15で導入されたFP8サポートは、Apple Siliconデバイスの統一メモリの特性を最大限に活かすための重要な進化です。これにより、特に大規模な言語モデルや高解像度画像処理モデルをMac上で開発・実験する際に、メモリフットプリントを大幅に削減できます。開発者は、既存のBF16/FP16モデルをFP8に移行する際の精度維持戦略(例:SVDのような数値的堅牢性が向上した線形代数演算の利用)と、それに伴うパフォーマンス向上をどのように最大化するかを検討すべきです。これは、より大きなモデルやバッチサイズでの試行を可能にし、研究開発の幅を広げるでしょう。

  2. Metalカーネルへの移行と低レベル最適化の可能性: Hugging FaceのPyTorchチームがMPSGraphから専用Metalカーネルへの移行を進めていることは、将来的により低レベルでの最適化や、特定のワークロードに合わせたカスタムMetalカーネルの実装の可能性を示唆しています。 開発者は、特定の計算パターンやモデルアーキテクチャにおいて既存のPyTorch演算がボトルネックとなる場合、Metal Shading Language (MSL) を用いたカスタムカーネルの開発や、既存のMetalカーネルの挙動を理解し、PyTorchのAPIから最大限に引き出すための知識が重要になります。これにより、PyTorchエコシステム内で独自の高性能演算をApple Silicon向けに開発する道が開かれる可能性があります。

  3. ストリームAPIと非同期処理による効率的なリソース管理: 新しい公開MPSストリームAPIは、複数の非同期演算をより効率的に管理し、GPU利用率を最大化するための重要なツールとなります。 複雑な推論パイプラインや、複数のモデルを並行して実行するようなシナリオにおいて、明示的なストリーム制御を用いることで、デッドロックやリソース競合を避け、パフォーマンスを予測可能に保つことができます。開発者は、torch.mps.StreamなどのAPIを積極的に活用し、データ転送と計算のオーバーラップ、異なるモデルの非同期実行、前処理と推論の並列化などを設計することで、エンドツーエンドのアプリケーションパフォーマンスを最適化するべきです。

Source / 元記事

この記事について

著者
AIBloom AI編集部
初回公開
最終更新

この記事は、公開されているニュース、論文、公式発表、RSSフィードなどをもとに、AIが要約・補足調査・考察を行って作成しています。

元記事の完全な翻訳・逐語的な要約ではなく、AIによる背景説明や開発者向けの考察を含みます。

重要な技術仕様・価格・提供状況などは、必ず元記事または公式情報をご確認ください。

About AIBloom

ADVERTISEMENT