🐨

Appleが研究しているMLX形式とは

2025/02/02に公開

Appleデバイスのローカル上でLLMを動かす研究をしてます。
メジャーなのはllama.cppですが、調べていくうちにデバイスによってはMLXの方が良さそうだったので紹介。

MLXとは

Appleが開発した機械学習フレームワークで、モデル形式のことです。
特にAppleシリコン(M1とかM2とか)向けに最適化されていて、Metalを活用した高速な推論を実現してくれます。
https://opensource.apple.com/projects/mlx/

Metalとは

Appleが開発したGPU向けのAPIで、主にApple製品で動作します。
ローカルでLLMを実行するときに処理してくれるのがまさにこのMetalです。
その他にも3Dレンダリングや動画編集、画像処理に使用されます。

https://developer.apple.com/jp/metal/

MLXの特徴

  1. Appleシリコン向けに最適化
  2. Numpyに似た使い勝手のAPIを提供
  3. MLX環境内で簡単に動かすことができるシンプルな構造
  4. オープンソース

llama.cppとの違い

MLX llama.cpp
開発元 Apple Meta??
モデルの形式 MLX形式 GGUF形式
モデルの特徴 Appleシリコンで実力発揮 マルチなOSに対応
対応モデル 限定的 かなり多い

使用できるモデル

Hugging Faceで「MLX-Community」と調べるとたくさん出てきます。

https://huggingface.co/mlx-community

ちなみにPhi-3-mini 4bit量子化モデルで比較をしてみると
MLX形式...2.15GB
GGUF形式...2.39GB
なのでMLX形式の方が若干軽いようです。

どっちがいいのか

1. llama.cpp

メリット

  • 幅広いデバイスに対応
  • CPUのみでも動作が可能
  • 上記の点からMシリーズじゃないApple製品の場合はllama.cppが最適
  • 非常に活発で新しいモデルもどんどん追加されている
  • 組み込みがMLXに比べて簡単

デメリット

  • どんどん最新が更新されるのでバグも多い


2. MLX

メリット

  • 高性能なApple製品で実力を最大限発揮する
  • Apple製品との親和性

デメリット

  • 情報量が圧倒的に少ない
  • 対応しているモデルがllama.cppに比べるとまだ少ない
  • iPhoneなどAシリーズで動かす場合はメリットが薄い可能性あり
  • アプリへの組み込みが難しい

ちなみに

第三の選択肢としてCore-MLというライブラリもあります。
これは別の機会に調査します。
https://developer.apple.com/jp/machine-learning/core-ml/

ヘッドウォータース

Discussion