はじめに
Apple Silicon搭載のMacでローカルにLLM(大規模言語モデル)を動かしたい方は注目です。OllamaがAppleのMLXフレームワークのサポートに着手しました。これは特にMacユーザーにとって大きな進展で、MLXはAppleのユニファイドメモリとGPUを最大限に活用するように設計されています。その結果、より高速で効率的なLLMの実行が期待できます。
参考
この記事では、MLXとは何か、Ollamaにおけるその重要性、そして現在の開発状況について解説します。また、興味のある方が自分でビルドして試すための手順も紹介します。
MLXとは何か?
MLX(Machine Learning Accelerator)は、Apple Research(Apple機械学習研究チーム)によって開発された、Apple Silicon向けに特化した機械学習フレームワークです。PyTorch、JAX、ArrayFireにインスパイアされて作られており、以下のような特徴を持っています:
- Appleシリコン専用設計: M1/M2/M3/M4チップの性能を最大限に引き出す
- ユニファイドメモリモデル: CPUとGPUが同じメモリプールを共有するため、デバイス間のデータ転送が不要
- 使いやすいAPI: NumPyに似たPython APIと、それを反映したC++、C、SwiftのAPI
- 遅延計算: 配列は必要なときだけ物理メモリに配置され、効率的な計算が可能
- 動的グラフ構築: 計算グラフを動的に構築するため、デバッグが容易
従来のLLMインフレンスライブラリ(llama.cpp等)と比較して、MLXはApple Siliconの特性を徹底的に活用するよう設計されています。特にユニファイドメモリアーキテクチャを活用するため、メモリ効率が非常に高く、大規模モデルの実行に適しています。
なぜOllamaにとってMLXが重要なのか?
Ollamaは、ローカル環境でLLMを簡単に実行できるオープンソースツールとして人気を集めています。しかし、Mac上での現在の実装は、Apple Siliconの能力を十分に活用できていないかもしれません。
MLXサポートの追加により、以下のような利点が期待されます:
- 処理速度の向上: 推論(テキスト生成)速度が大幅に向上
- メモリ効率の改善: ユニファイドメモリを活用して、より大きなモデルを実行可能に
- 電力効率の向上: Apple Siliconの省電力性能を活かした効率的な実行
- macOSネイティブ体験: より統合されたユーザー体験
現在の開発状況
OllamaチームはGitHubのプルリクエスト #9118でMLXバックエンドの開発を進めています。この実装はまだ初期段階ですが、早くも試すことができます。
自分でビルドして試す方法
興味のある方は、以下の手順でOllamaのMLXバージョンをビルドして試すことができます:
前提条件
MLXを使用するには、Macの開発環境が適切に設定されている必要があります:
- Xcode: MLXビルドにはMetalコンパイラが必要です
- Apple Silicon搭載のMac(M1/M2/M3/M4シリーズ)
- macOS 12 (Monterey) 以降
ビルド手順
# リポジトリをクローン(既にクローン済みの場合はスキップ)
git clone https://github.com/ollama/ollama.git
cd ollama
# PRブランチに切り替え
git fetch origin pull/9118/head:mlx-backend
git checkout mlx-backend
# ビルド
cmake -S . -B build
cmake --build build -j
go build .
# MLXバックエンドを有効にして実行
OLLAMA_NEW_ENGINE=1 OLLAMA_BACKEND=mlx ollama serve
トラブルシューティング
ビルド時に以下のようなエラーが発生する場合があります:
xcrun: error: unable to find utility "metal", not a developer tool or in PATH
-- `xcrun metal` error. Setting MLX_BUILD_METAL=OFF
これは、MLXのビルドにはMetalコンパイラが必要ですが、システムがそれを見つけられないことを示しています。このようなエラーが出た際には、コマンドラインツールだけではなくフルバージョンのXcodeがインストールされているか確認してください。
Xcodeフルバージョンのインストール(最も確実な解決策): コマンドラインツールだけでなく、App StoreからXcode完全版をインストールし、以下のコマンドを実行:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
注意:MLXバックエンドはまだ開発段階のため、全てのモデルで最適なパフォーマンスが得られるわけではないと思います。また、バグや予期しない動作が発生する可能性があります。
参考リンク
- Apple MLX GitHub
- MLX-LM GitHub
- Ollama公式サイト
- LLM推論速度テストリポジトリ - さまざまなデバイスでの推論速度を記録する取り組み