Apple Silicon (Mシリーズ) でのGemma 4展開の落とし穴と修正
結論:M1/M2/M3 MacでGemma 4モデルが1〜2トークン/秒でテキストを生成している場合、Apple Metalバックエンドが正しくコンパイルまたはアクティブ化されていないため、推論エンジンがCPUにフォールバックしている可能性があります。ビルドプロセス中に LLAMA_METAL=1 が設定されていることを確認する必要があります。
落とし穴 1:推論が極端に遅い(CPUフォールバック)
症状: llama.cpp またはそれに基づくUIツールを使用してGemma 4のGGUFバージョンを正常にロードしたが、生成速度が非常に遅い(例:M3 Maxで1〜3 t/s)。
原因: Apple Silicon GPU(Metal)が利用されていません。エンジンはすべての計算をCPUで処理しています。
修正方法: ソースから llama.cpp をビルドするときは、Metalサポートを明示的に有効にする必要があります。Homebrew経由でインストールした場合は、正しいフラグが渡されていることを確認してください。
# ソースからの正しいビルド:
make clean
LLAMA_METAL=1 make
LM StudioやOllamaのようなUIツールを使用している場合は、設定を確認して、「GPU Offload」が「Max」または適切なレイヤー数に設定されていることを確認してください。
落とし穴 2:llama.cppのコンパイル失敗
症状: make を実行すると、ターミナルが標準ライブラリの欠落に関連するエラー(例:stdio.h not found)をスローするか、コンパイラのバージョンについて文句を言います。
原因: Xcode Command Line Toolsをインストールしていないか、システムが古くて壊れたインストールを指しています。
修正方法: コマンドラインツールの再インストールまたはリセットを強制します:
xcode-select --install
sudo xcode-select --reset
代替案:AppleのMLXフレームワークの使用
llama.cpp のコンパイルフラグとの格闘に疲れた場合は、Apple Silicon専用に最適化されたAppleの公式機械学習フレームワークである MLX の使用を検討してください。
コミュニティはすでにGemma 4の重みをMLX形式に移植しています。mlx-lm Pythonパッケージを使用して実行できます:
pip install mlx-lm
python -m mlx_lm.generate --model mlx-community/gemma-4-it-mlx --prompt "こんにちは、Gemma!"
注意: MLXは、カスタムPythonスクリプトを微調整または記述したい開発者にとって素晴らしいものですが、ChatGPTのようなインターフェースが必要な場合は、Ollama(内部でMetalのコンパイルを自動的に処理します)が依然として最も簡単な方法です。