「MacでAI?無理でしょ」という時代は終わった。
M1チップの登場から数年。気づけばApple Siliconは、機械学習の世界で無視できない存在になっていた。統合メモリアーキテクチャ、Neural Engine、そしてそれらを活かすソフトウェアスタック。
でも正直、Apple公式ドキュメントを読んでも「で、結局どれを使えばいいの?」となりがち。MPS?MLX?Core ML?それぞれの関係性がよくわからない。
このシリーズでは、Apple Silicon上の機械学習技術スタックを下から上まで徹底解説する。
シリーズ記事一覧
1. MPS基礎解説 - PyTorchユーザーのためのApple GPU入門
PyTorchのmpsデバイスって何?CUDAの代わりになるの?統合メモリの恩恵は?
- MPSの基本概念と歴史
- PyTorchでの実践的な使い方
- Stable Diffusionをmpsで動かす
- よくあるトラブルと対策
- 実際のベンチマーク(M1 Max vs RTX 3090)
こんな人向け:PyTorchユーザー、MacでGPU加速したい人
2. MLX基礎解説 - Appleの次世代MLフレームワーク
2023年末にAppleが突如公開したオープンソースフレームワーク。NumPy風のAPIと遅延評価が特徴。
- MLXの設計思想
- 遅延評価(Lazy Computation)の仕組み
- mlx-lmでLLMをローカル実行
- M5チップとNeural Acceleratorsの連携
- MLX vs MPS:使い分けの判断基準
こんな人向け:Apple Silicon専用で最大性能を出したい人、LLMをローカルで動かしたい人
3. MPSGraph基礎解説 - 計算グラフの力
Core MLやTensorFlowの裏で動く「縁の下の力持ち」。ステッチングによる最適化の秘密。
- 計算グラフとは何か
- ステッチング:演算融合の魔法
- Core ML/TensorFlowとの関係
- Transformer向けの最新最適化(SDPA、KVキャッシュ)
- MPSGraph Viewer(Xcode 16の新ツール)
こんな人向け:パフォーマンスの仕組みを深く理解したい人、Metal統合をしたい人
4. Metal基礎解説 - Apple GPUの心臓部
全ての道の土台。グラフィックスと機械学習を支えるAppleのGPU API。
- MetalはApple版CUDA?
- Metal Shading Languageの基本
- 基本的なワークフロー(Swift/Objective-C)
- Metal 4と機械学習の統合
- 機械学習開発者がMetalを直接触る場面
こんな人向け:GPU プログラミングの基礎を知りたい人、極限の最適化が必要な人
5. vDSP基礎解説 - 信号処理の隠れた英雄
GPUだけが全てじゃない。CPU上の高速ベクトル演算ライブラリ。
- Accelerateフレームワークの全体像
- FFTでオーディオ周波数分析
- Biquadフィルタでイコライザ実装
- vDSP vs GPU:いつCPUを選ぶべきか
- 機械学習パイプラインでの活用(前処理・後処理)
こんな人向け:オーディオ/信号処理をする人、リアルタイム処理が必要な人
6. Core ML基礎解説 - アプリに知性を宿す
技術スタックの「出口」であり「入口」。モデルデプロイの統一インターフェース。
- Core MLの基本ワークフロー
- coremltoolsでモデル変換
- Neural Engineの自動活用
- Vision/Natural Languageとの統合
- WWDC24の新機能(MLTensor、ステート管理)
- オンデバイス学習
こんな人向け:iOS/macOSアプリにML機能を追加したい人、全てのApple開発者
技術スタック全体像
この図を頭に入れておけば、どの技術をどんな場面で使うべきか判断できる:
┌─────────────────────────────────────────────────────────────┐
│ アプリケーション層 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Vision │ │ NLP │ │ ARKit │ │ 独自 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └──────────┴──────────┴──────────┴──────┐ │
│ ↓ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ Core ML │ │
│ │ (モデルデプロイ・推論の統一インターフェース) │ │
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ フレームワーク層 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ MLX │ │ PyTorch │ │TensorFlow│ │
│ │(Apple専用)│(MPS backend)│ (Metal) │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ └──────────┴──────────┴──────────┐ │
│ ↓ │
│ ┌────────────────────────────────────────────────────┐ │
│ │ MPSGraph │ │
│ │ (計算グラフ最適化・ステッチング) │ │
│ └────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ カーネル層 │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ MPS │ │ BNNS / vDSP │ │
│ │ (GPU最適化カーネル) │ │ (CPU最適化カーネル) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
└─────────────┼───────────────────────┼───────────────────────┘
↓ ↓
┌─────────────────────────────────────────────────────────────┐
│ ハードウェア抽象化層 │
│ ┌─────────────────────┐ ┌─────────────────────┐ │
│ │ Metal │ │ Accelerate │ │
│ │ (GPU API) │ │ (CPU ベクトル化) │ │
│ └──────────┬──────────┘ └──────────┬──────────┘ │
└─────────────┼───────────────────────┼───────────────────────┘
↓ ↓
┌─────────────────────────────────────────────────────────────┐
│ ハードウェア層 │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ GPU │ │ Neural │ │ CPU │ │ Unified │ │
│ │ │ │ Engine │ │(NEON等) │ │ Memory │ │
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
│ Apple Silicon │
└─────────────────────────────────────────────────────────────┘
ユースケース別クイックガイド
| やりたいこと | 推奨技術 |
|---|---|
| PyTorchモデルをMacで高速化 | MPS |
| LLMをローカルで動かしたい | MLX + mlx-lm |
| iOS/macOSアプリにML機能追加 | Core ML |
| リアルタイムオーディオ処理 | vDSP |
| グラフィックス×ML統合 | Metal + MPSGraph |
| モデルの前処理・後処理 | vDSP / Accelerate |
| TensorFlowをMacで使いたい | tensorflow-metal |
対象読者
- Apple Siliconで機械学習を始めたい人
- PyTorchをMacで使いたいけど、MPSがよくわからない人
- Core MLとMLXの違いを知りたい人
- Apple技術スタックの全体像を把握したい人
- 「なぜApple Siliconは機械学習に強いのか」を理解したい人
前提知識
- Pythonの基礎
- 機械学習の基本概念(テンソル、モデル、推論)
- PyTorchまたはTensorFlowの経験があるとベター
参考文献・リンク集
Apple公式ドキュメント
GitHub
PyTorch
Apple Machine Learning Research
WWDC Sessions
- WWDC24 - Accelerate machine learning with Metal
- WWDC24 - Deploy machine learning and AI models on-device with Core ML
- WWDC21 - Accelerate machine learning with Metal Performance Shaders Graph
- WWDC20 - Build customized ML models with the Metal Performance Shaders Graph
このシリーズは随時更新予定。新しいWWDCの発表やフレームワークのアップデートがあれば追記します。