🍎

Apple Silicon AI技術スタック 完全解説シリーズ

に公開

「MacでAI?無理でしょ」という時代は終わった。

M1チップの登場から数年。気づけばApple Siliconは、機械学習の世界で無視できない存在になっていた。統合メモリアーキテクチャ、Neural Engine、そしてそれらを活かすソフトウェアスタック。

でも正直、Apple公式ドキュメントを読んでも「で、結局どれを使えばいいの?」となりがち。MPS?MLX?Core ML?それぞれの関係性がよくわからない。

このシリーズでは、Apple Silicon上の機械学習技術スタックを下から上まで徹底解説する。


シリーズ記事一覧

1. MPS基礎解説 - PyTorchユーザーのためのApple GPU入門

https://zenn.dev/rick_lyric/articles/beede28808236f

PyTorchのmpsデバイスって何?CUDAの代わりになるの?統合メモリの恩恵は?

  • MPSの基本概念と歴史
  • PyTorchでの実践的な使い方
  • Stable Diffusionをmpsで動かす
  • よくあるトラブルと対策
  • 実際のベンチマーク(M1 Max vs RTX 3090)

こんな人向け:PyTorchユーザー、MacでGPU加速したい人


2. MLX基礎解説 - Appleの次世代MLフレームワーク

https://zenn.dev/rick_lyric/articles/949e837277dd5e

2023年末にAppleが突如公開したオープンソースフレームワーク。NumPy風のAPIと遅延評価が特徴。

  • MLXの設計思想
  • 遅延評価(Lazy Computation)の仕組み
  • mlx-lmでLLMをローカル実行
  • M5チップとNeural Acceleratorsの連携
  • MLX vs MPS:使い分けの判断基準

こんな人向け:Apple Silicon専用で最大性能を出したい人、LLMをローカルで動かしたい人


3. MPSGraph基礎解説 - 計算グラフの力

https://zenn.dev/rick_lyric/articles/e86e751b25c873

Core MLやTensorFlowの裏で動く「縁の下の力持ち」。ステッチングによる最適化の秘密。

  • 計算グラフとは何か
  • ステッチング:演算融合の魔法
  • Core ML/TensorFlowとの関係
  • Transformer向けの最新最適化(SDPA、KVキャッシュ)
  • MPSGraph Viewer(Xcode 16の新ツール)

こんな人向け:パフォーマンスの仕組みを深く理解したい人、Metal統合をしたい人


4. Metal基礎解説 - Apple GPUの心臓部

https://zenn.dev/rick_lyric/articles/5acb8ca750f080

全ての道の土台。グラフィックスと機械学習を支えるAppleのGPU API。

  • MetalはApple版CUDA?
  • Metal Shading Languageの基本
  • 基本的なワークフロー(Swift/Objective-C)
  • Metal 4と機械学習の統合
  • 機械学習開発者がMetalを直接触る場面

こんな人向け:GPU プログラミングの基礎を知りたい人、極限の最適化が必要な人


5. vDSP基礎解説 - 信号処理の隠れた英雄

https://zenn.dev/rick_lyric/articles/4fbd9ca58aaeb1

GPUだけが全てじゃない。CPU上の高速ベクトル演算ライブラリ。

  • Accelerateフレームワークの全体像
  • FFTでオーディオ周波数分析
  • Biquadフィルタでイコライザ実装
  • vDSP vs GPU:いつCPUを選ぶべきか
  • 機械学習パイプラインでの活用(前処理・後処理)

こんな人向け:オーディオ/信号処理をする人、リアルタイム処理が必要な人


6. Core ML基礎解説 - アプリに知性を宿す

https://zenn.dev/rick_lyric/articles/565faacf8cdfda

技術スタックの「出口」であり「入口」。モデルデプロイの統一インターフェース。

  • 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


このシリーズは随時更新予定。新しいWWDCの発表やフレームワークのアップデートがあれば追記します。

Discussion