MLX
別名:Apple MLX、MLXフレームワーク
更新日:
定義
MLXは、Apple siliconで機械学習を行うためのオープンソースの配列フレームワークで、Appleの機械学習研究チームが作っています。多くの言語モデルや音声モデルが、Macのチップ上で動くのに使っています。
Mac用にダウンロードしたモデルの名前がMLXで終わっていたり、MLXモデルのコレクションから入手したものだったりする場合は、重みがこのフレームワークで読める形式に変換されている、という意味です。
MLXは開発者や研究者のためのツールで、Appを使うためにインストールするものではありません。MLXを使うAppは、内部にMLXを含んでいます。MITライセンスでリリースされていて、最初の公開版は2023年末に登場しました。
Macに向いている理由
Appleの説明では、ほかのフレームワークとの違いとして、ユニファイドメモリモデルが挙げられています。Apple siliconでは、プロセッサとグラフィックスチップが1つのメモリを共有しています。MLXの配列はその共有メモリ上にあるので、データを行き来させてコピーすることなく、2つのあいだで処理を移せます。
ほかの多くのコンピュータでは、グラフィックスカードが独自の別のメモリを持っていて、モデルはそこに収まる必要があります。Macではマシン全体のメモリをモデルが使えるので、本来なら専用のカードが必要なモデルもノートパソコンで動かせます。
動作する環境
Appleのドキュメントによると、演算はCPUとGPUで実行できます。Neural Engineは挙げられていません。Macにインストールするには、Apple siliconとmacOS 14以降が必要です。
同じドキュメントでは現在、Linux向けのビルドも説明されていて、その中にはNVIDIAのグラフィックスカード向けのものもあります。つまりMLXはもうApple製ハードウェア専用ではありません。それでも、設計の中心はApple siliconです。
MLXのファミリー
MLX自体が扱うのは、配列とその演算だけです。多くの人が実際に触れるのは、その上に作られたパッケージです。
- MLX LM:Appleの同じチームによるもので、大規模言語モデルでテキストを生成したり、ファインチューニングしたりするためのパッケージ。
- MLX Whisper:Appleのサンプルにあるもので、Whisperで音声認識を行うためのパッケージ。
- MLX Swift:Swiftで書かれたMacやiPhoneのAppから、MLXを直接使えるようにするパッケージ。
- 音声や話し言葉のためのコミュニティライブラリ:MLXを土台にしていますが、Apple製ではありません。
MLXモデルと量子化
MLXのコレクションにあるモデルの名前は、よく4bitや8bitで終わっています。これが量子化です:重み1つあたりのビット数を減らして保存することで、ダウンロードが小さくなり、メモリの負担も軽くなりますが、精度はいくらか下がります。MLXのツールは、モデルを変換するときにこうしたビルドを作れます。
MLXとCore ML
Appleには、デバイス上でモデルを動かすフレームワークが2つあり、用途が違います。AppleはMLXを、Apple silicon上で生成モデルを試したり、学習させたり、ファインチューニングしたりするためのオープンソースの配列フレームワークと説明しています。Core MLは、機械学習モデルをAppに組み込むための手段と説明しています。
実際には、両方を使うAppも多くあります。Neural Engineに向いたモデルにはCore MLを、グラフィックスチップで動く大きな言語モデルや音声モデルにはMLXを使う、という形です。
よくある質問。
MLXは何の略?
Appleは正式な名称を示していません。MLXを、Apple siliconで機械学習を行うための配列フレームワークと説明しています。
MLXはIntelベースのMacで使える?
いいえ。Macでは、Appleのドキュメントの要件はApple siliconとmacOS 14以降です。
MLXはNeural Engineを使う?
Appleのドキュメントによると、MLXの演算はCPUとGPUで実行されます。Neural Engineは挙げられていません。
MLXは無料?
はい。MITライセンスのオープンソースです。
MLXで作られたAppを使うのに、MLXをインストールする必要はある?
いいえ。MLXを使うAppは、MLXを含んでいます。自分でMLXをインストールするのは、コードを書いたり、コマンドラインからモデルを動かしたりする場合です。
MLXモデルとは?
MLXで読める形式に重みが変換されたモデルです。Macのメモリに無理なく収まるよう、4ビットや8ビットに量子化されていることがよくあります。