Chuyển đến nội dung chính

レッスン 4: MLX フレームワーク - 内部の Apple インテリジェンス

MLX とは何ですか? Apple がそれを作成した理由は何ですか?遅延評価アーキテクチャ、統合された計算グラフ。 MLX、llama.cpp、Core ML を比較します。 M1/M2/M3/M4 の実際のベンチマーク。

🧠 AI と ML — レッスン 0 レッスン 4: MLX フレームワーク - Apple Intelligence ボンネットの下で

Apple Silicon で Ollama を使用して AI Local を実行する

パート 2: MLX - Apple のネイティブ フレームワークによる 3 倍の高速化

xdev.asia

はじめに

Ollama は llama.cpp を使用して LLM を実行します。これはすでに非常に高速です。しかし、Apple には「秘密兵器」があります。MLX です。これは、ユニファイド メモリのすべての機能を利用する、Apple Silicon 専用に設計された機械学習フレームワークです。

結果?推論は、同じハードウェア上の llama.cpp より 2 ~ 3 倍高速です。


##1.MLXとは何ですか?

MLX は、Apple Research のオープンソース フレームワークで、2023 年後半にリリースされました。PyTorch が NVIDIA CUDA 用に設計されているのと同様に、Apple Silicon 用に設計されています。

主な特長

  • 統合メモリ: モデル、データ、計算は同じメモリを共有します - コピー オーバーヘッドはゼロです
  • 遅延評価: 必要な場合のみ計算し、計算グラフを自動的に最適化します。
  • 動的形状: 各形状テンソルを事前にコンパイルする必要はありません
  • NumPy のような API: NumPy/PyTorch を知っているなら馴染み深い
  • マルチデバイス: GPU、CPU、ニューラル エンジンを自動的に利用します

MLX と他のフレームワーク

特長MLXラマ.cppPyTorch (MPS)コアML
ターゲットアップルシリコンクロスプラットフォームクロスプラットフォームアップルのみ
バックエンド金属メタル/CPUMPSANE + GPU
統合メモリ対応✅ ネイティブ❌ 移植済み❌ 移植済み✅ ネイティブ
使いやすさ★★★★★★★★☆★★★★★★☆☆
LLM 推論速度最速速い遅い高速 (ただし制限あり)
モデルエコシステムハギングフェイスMLXググフパイトーチCoreML モデル
トレーニングサポート✅❌✅❌

2. MLX のほうが速いのはなぜですか?

ゼロコピーメモリアクセス

llama.cpp で Metal を実行します。

[CPU loads model] → [Copy to GPU buffer] → [GPU compute] → [Copy result back]

MLX の場合:

[Load model to unified memory] → [GPU compute directly] → [Result already accessible]

CPU と GPU の間でデータを相互にコピーする手順はありません。 Apple Silicon では、両方が同じ物理メモリにアクセスします。

遅延評価グラフ

import mlx.core as mx

# Không tính ngay!
a = mx.array([1, 2, 3])
b = mx.array([4, 5, 6])
c = a + b        # Chưa tính
d = c * 2         # Chưa tính
result = d.sum()  # Chưa tính

# Chỉ tính khi cần giá trị
mx.eval(result)   # Bây giờ mới tính tất cả, tối ưu tự động

MLX はすべての操作を計算グラフに収集し、実行前に最適化します。 LLM 推論では、各トークンの生成には何千もの行列演算が必要となるため、これは大きな違いを生みます。

メタルシェーダーの最適化

MLX は、Apple GPU アーキテクチャ、特に LLM 推論で最も一般的な演算である量子化行列の乗算に最適化されたカスタム Metal シェーダを使用します。


3. MLX をインストールする

前提条件

# Python 3.9+ (khuyến nghị 3.11+)
python3 --version

# pip
pip3 --version

MLX コアをインストールする

pip3 install mlx

設定を確認する

python3 -c "
import mlx.core as mx
print(f'MLX version: {mx.__version__}')
print(f'Default device: {mx.default_device()}')
a = mx.array([1.0, 2.0, 3.0])
print(f'Test: {a * 2}')
"

期待される出力:

MLX version: 0.x.x
Default device: Device(gpu, 0)
Test: array([2, 4, 6], dtype=float32)

💡 Device(gpu, 0) つまり、MLX は自動的に Apple GPU を使用します。それ以上の設定は必要ありません。


4. MLX のコア概念

配列

import mlx.core as mx

# Tạo array (giống NumPy)
a = mx.array([1, 2, 3, 4])
b = mx.zeros((3, 4))
c = mx.random.normal((2, 3))

# Operations
d = mx.matmul(c, b[:, :3].T)  # Matrix multiplication

# Dtype
e = mx.array([1.0, 2.0], dtype=mx.float16)

デバイスの配置

# MLX tự động dùng GPU
# Nhưng bạn có thể chỉ định:
with mx.stream(mx.cpu):
    result_cpu = mx.matmul(a, b)  # Chạy trên CPU

with mx.stream(mx.gpu):
    result_gpu = mx.matmul(a, b)  # Chạy trên GPU

実際の遅延評価

import mlx.core as mx
import time

# Tạo matrix lớn
a = mx.random.normal((4096, 4096))
b = mx.random.normal((4096, 4096))

# Chưa tính!
c = mx.matmul(a, b)
print(type(c))  # <class 'mlx.core.array'>

# Tính khi cần
start = time.time()
mx.eval(c)
print(f"Matmul 4096x4096: {time.time() - start:.4f}s")

5. ベンチマーク: MLX 対 llama.cpp

Llama 3.2 8B Q4 を搭載した MacBook Pro M3 Pro (36GB RAM) でのベンチマーク:

メトリクスllama.cpp (オラマ)MLX(mlx-lm)スピードアップ
迅速な処理280 トーク/秒650 トーク/秒2.3x
トークン生成32 トーク/秒58 トーク/秒1.8x
最初のトークンまでの時間0.45秒0.19秒2.4x
メモリ使用量6.5GB5.8GB-11%

M4 Max (128GB) の場合:

メトリクスラマ.cppMLXスピードアップ
プロンプト (8B Q4)680 トーク/秒1450 トーク/秒2.1x
世代 (8B Q4)65 トーク/秒105 トーク/秒1.6x
世代 (32B Q4)22トーク/秒42 トーク/秒1.9x

💡 MLX は、プロンプト処理 (プレフィル) で特に高速です。これにより、チャット中に「即時のフィードバック」の感覚が生まれます。


6. MLX をいつ使用するか、llama.cpp をいつ使用するか?

状況推奨事項
Mac で最高速度が必要MLX
OpenAI 互換 API が必要オラマ (llama.cpp)
美しい UI が必要 (WebUI を開く...)オラマ
Linux/Windows 上で動作ラマ.cpp
ローカルでのトレーニング/微調整MLX
クイックプロトタイピングMLX
本番サーバーOllama (より安定)

朗報: 両方を使用できます。日常使用には Ollama を、速度やカスタム パイプラインが必要な場合には MLX を使用します。レッスン 6 では、その組み合わせについて説明します。


7. MLX エコシステム

MLX にはコア ライブラリがあるだけではありません。 Apple とコミュニティは豊かなエコシステムを構築してきました。

パッケージ説明
mlxコアアレイフレームワーク
mlx-lmLLM 推論と微調整
mlx-vlm視覚言語モデル
mlx-whisper音声からテキストへ
mlx-audioテキスト読み上げ
mlx-image画像生成(安定拡散)

Hugging Face には、モデルを MLX 形式に変換することに特化したコミュニティ MLX コミュニティ があります。


概要

コンセプト覚えておいてください
MLXApple Silicon 向けに設計された Apple の ML フレームワーク
ゼロコピーユニファイドメモリのおかげでCPU↔GPUデータをコピーする必要はありません
遅延評価演算を収集し、計算前にグラフを最適化します。
スピードアップMac では llama.cpp よりも約 1.5 ~ 2.5 倍高速
エコシステムmlx-lm、mlx-vlm、mlx-whisper、mlx-audio

演習

1.インストール mlx 基本的なテストを実行します: 配列の作成、matmul、デバイスのチェック 2. サイズを増加させた matmul のベンチマーク (1024、2048、4096、8192) — プロット タイム チャート 3. 比較する mx.array と numpy.array 同じ計算の場合、どちらが速いでしょうか?

次の記事: mlx-lm をインストールして MLX 量子化モデルを実行する →