3行でいうと
- MLXはMITライセンスのオープンソースで、Apple siliconの統一メモリを前提に設計されています。
- mlx-lmは、LLMの生成、量子化、LoRAなどの微調整、ローカルのサーバーを一通り備えます。
- Appleの2025年11月の記事では、M5はM4より最初の文字が出るまでが最大約4倍、生成は19〜27%速いとされています。
- 同じ記事で、M5の効果を得るにはmacOS 26.2以上が必要とされています。
この記事は、実際に使って確かめた記録ではありません。この記事は公式の文書や論文を読んでまとめたものです。
先に結論
見立てです。MLXは「Macで機械学習を動かすための、Apple純正に近い選択肢」と考えると、位置づけが分かりやすいと思います。llama.cppやOllamaのようにGGUFのファイルを読むのではなく、MLX用の形式のモデルを使います。そのかわり、微調整(LoRA)や量子化を同じ道具で続けて行えます。
見立てです。Macで文章生成を試すだけなら、他の選択肢(OllamaやLM Studioなど)でも足ります。MLXが効くのは、Macの上でモデルを自分のデータで微調整したいとき、またはPython/Swiftから直接MLXを組み込みたいときだと思います。ただし、これは公式資料の記述からの見立てで、実際の使い心地は分かりません。
前提:MLXとmlx-lmは何か
- MLXは、Apple siliconで機械学習をするための配列計算フレームワークです。公式の説明では、NumPyに近い書き方ができ、PythonのほかにSwift、C++、Cのインターフェースがあります。
- mlx-lmは、MLXの上に作られたPythonパッケージで、LLMの文章生成と微調整を担当します。MLX本体とは別のリポジトリ(ml-explore/mlx-lm)で公開されています。
- 統一メモリは、CPUとGPUが同じメモリを共有する仕組みです。MLXの文書では、配列が共有メモリに置かれるので、CPUとGPUの間でデータをコピーしなくて済む、と説明されています。
- 遅延評価は、値が必要になるまで計算を始めない方式です。MLXの特徴として挙がっています。
- LoRAは、元の重みは動かさず、小さな追加の表だけを学習する、軽い微調整の方法です。
- メモリ帯域は、メモリから1秒に読み出せるデータの量(GB/s)です。文章を1トークンずつ書くとき、重みの読み出しが律速になりやすい量です。
- 量子化は、重みを少ないビットで持ち直して、メモリを減らす手法です。詳しくは「量子化の形式を比べる」の記事を見てください。
- 開発元のAppleは、MLXを「Apple siliconの統一メモリ構造に合わせた」ものと説明し、MITライセンスで公開しています。
公式資料に書かれている特徴
MLX本体
- 設計:NumPyに近いPython API、PyTorchやJAXに近い上位のAPI(
mlx.nn、mlx.optimizers)。自動微分(学習に使う微分の自動計算)、自動ベクトル化、計算グラフの最適化といった関数変換を組み合わせられます。 - 動的なグラフ:引数の形が変わっても、遅い再コンパイルが起きない、とREADMEにあります。
- 対応する環境:インストールの文書では、Apple silicon搭載のMac、ネイティブ(エミュレーションではない)のPython 3.10以上、macOS 14.0以上、
pip install mlxと書かれています。Linuxでは、NVIDIA GPU向けのCUDA版(mlx[cuda12]、mlx[cuda13])とCPU版が文書にあります。主な対象はmacOSのApple siliconです。 - 分散:WWDC25のセッションで、複数のMacをイーサネットやThunderboltでつないで計算できる、
mx.distributedの紹介がありました。
mlx-lm
READMEとドキュメントから拾えた、できることです。
| やりたいこと | 道具・コマンド | 読んだ範囲での内容 |
|---|---|---|
| 文章を生成する | mlx_lm.generate、mlx_lm.chat |
既定のモデルはmlx-community/Llama-3.2-3B-Instruct-4bit |
| 量子化する | mlx_lm.convert -q |
Hugging Face Hubへのアップロードもできる |
| 精度を保つ量子化 | mlx_lm.dwq、mlx_lm.awq、mlx_lm.dynamic_quant、mlx_lm.gptq |
いずれも調整用のデータを使う |
| 微調整する | mlx_lm.lora |
LoRA、DoRA、全体の3種類。量子化済みのモデルならQLoRAになる |
| ローカルのサーバー | mlx_lm.server |
OpenAIのチャットAPIに似た窓口。本番向けではないと明記 |
| 微調整の結果を合体 | mlx_lm.fuse |
GGUFへの書き出しオプションあり(対応モデルは限定) |
WWDC25のセッション
AppleのWWDC25の「Get started with MLX for Apple silicon」は、MLXを「Apple Silicon専用に作られたオープンソースの配列フレームワーク」と紹介しています。LM StudioがMLXを使っていること、テキスト生成はMLX LMが担当すること、数千億パラメータ級の言語モデルの生成と微調整にも使えると述べていることを確認しました(微調整の実演は、このセッションにはありません)。量子化については、「ビット数が小さく、グループサイズが大きいほど、小さく速くなる」という趣旨の説明がありました。
量子化のコマンドと、微調整のメモリを減らす工夫
mlx-lmの4つの量子化法(LEARNED_QUANTS.mdより)
| 手法 | 内容 | 既定値の例 |
|---|---|---|
| DWQ(蒸留重み量子化) | 元のモデルを先生にして、量子化後のパラメータを微調整する。結果は良いが時間がかかる | 4ビット、サンプル1024 |
| AWQ | 重みを量子化の前にスケーリングとクリップする。数分〜数時間 | 4ビット、サンプル32 |
| 動的量子化 | 層ごとの感度を見て、敏感な層に高い精度を割り当てる。最も速い | 敏感な層は5ビット、他は4ビット |
| GPTQ | 層の出力の二乗誤差が小さくなるように重みを決める。数分〜数時間 | 4ビット |
文書は、これらを重ねて使えるとしています(例:動的量子化の後にDWQ)。
微調整のメモリを減らす方法(LORA.mdより)
- 量子化したモデルで学習する(QLoRA)。
--batch-size(既定4)を減らし、--grad-accumulation-stepsで実質のバッチを保つ。--num-layers(既定16)を減らす。8や4にするとメモリは減るが、大きなデータでは質が下がるかもしれない。- 長い例を短く分ける。
--grad-checkpointで、計算を増やしてメモリを減らす。
文書には、32GBのMac(M1 Max)でMistral-7Bを--batch-size 1 --num-layers 4で学習し、1秒あたり約250トークンという例が載っています。これは文書の数字で、この記事では測っていません。
データの形式
学習用のtrain.jsonlが必要で、valid.jsonlは任意です。形式はchat、tools、completions、textで、自動判別されます。1つの例は1行に収めます。
M5での速さ:Appleの2025年11月の記事
Appleの機械学習研究のサイトは、2025年11月19日の記事で、M5チップのMacBook Pro(24GBのメモリ)とM4を、mlx_lm.generateで比べた結果を載せています。条件は、入力4096トークン、生成128トークンです。
読み方の前提を整理します。
- TTFTは、質問を入れてから最初の1トークンが出るまでの時間です。入力を読み込む処理(プリフィル)に左右されます。
- 生成速度は、2トークン目以降を1秒に何トークン出せるかです。
記事の表(M5がM4の何倍か)は次のとおりです。
| モデル | TTFTの倍率 | 生成の倍率 | メモリ(GB) |
|---|---|---|---|
| Qwen3-1.7B(BF16) | 3.57 | 1.27 | 4.40 |
| Qwen3-8B(BF16) | 3.62 | 1.24 | 17.46 |
| Qwen3-8B(4ビット) | 3.97 | 1.24 | 5.61 |
| Qwen3-14B(4ビット) | 4.06 | 1.19 | 9.16 |
| gpt-oss-20b(MXFP4) | 3.33 | 1.24 | 12.08 |
| Qwen3-30B-A3B(4ビット) | 3.52 | 1.25 | 17.31 |
記事の説明は次のとおりです。
- 最初のトークンまでは計算量で決まる(compute-bound)ので、M5のGPUに追加されたNeural Acceleratorsの恩恵が大きい。MLXはMetal 4のTensorOpsなどを使って対応している。
- 生成はメモリ帯域で決まる(memory-bandwidth-bound)。帯域はM4が120GB/s、M5が153GB/sで、約28%高い。生成の19〜27%の向上は、この帯域の差によるとされている。
- 24GBのMacBook Proに、BF16の8Bモデルか、4ビットの30B MoEが載り、どちらも推論で18GB未満に収まる。
- M5の効果を得るには、macOS 26.2以上が必要(脚注)。MLX自体は、すべてのApple siliconで動く。
僕らの計算です。帯域の比は153÷120で約1.275。記事の「28%」と合っています。生成の倍率が1.19〜1.27に収まっているのは、帯域の比に近い範囲です。
見立てです。この表の倍率は「M4との比」で、1秒あたり何トークンかという絶対値は、読んだ範囲では記事に載っていませんでした。手元のMacでどのくらい出るかは、実際に動かさないと分かりません。
選ぶときの目安
見立てです。
| 状況 | 向いていそうなもの | 理由(読んだ資料から) |
|---|---|---|
| Macで会話や要約を試したい | Ollama、LM Studio、mlx-lm | LM StudioはMLXを使っているとWWDC25で紹介 |
| Macで自分のデータで微調整したい | mlx-lm(LoRA/QLoRA) | mlx_lm.loraが公式の道具として文書化されている |
| アプリに組み込みたい | MLX Swift / Python | iOSなどにもSwiftのAPIがある(WWDC25) |
| 多人数に配りたい | vLLMなど | mlx_lm.serverは本番向けではない(公式の注意書き) |
よくあるつまずき
- メモリが足りず遅い:READMEは、RAMに対して大きなモデルは遅くなりうるとし、macOS 15以上で、モデルとキャッシュのメモリを固定(wire)して速くしようとする、と書いています。上限の変更には
sudo sysctl iogpu.wired_limit_mb=Nを示しています。Nは「モデルのMB数より大きく、マシンのメモリより小さい」値です。 - 非ネイティブのPython:ネイティブでないPythonだとインストールできないことがあります。確認方法は、
platform.processor()がarmを返すか、です。 - 全部のモデルが動くわけではない:READMEは「数千のLLMに対応」としつつ、未対応のモデルはissueやプルリクエストを、と案内しています。
- GGUFへの書き出し:
mlx_lm.fuse --export-ggufはありますが、文書ではMistral、Mixtral、Llama系のfp16に限られています。 - サーバーを外部に公開する:公式の注意書きで、基本的なセキュリティしかないとされています。
気をつけること
- この記事は、実際に使って確かめた記録ではありません。速度、メモリ、品質は、公式の文書と記事の数字のままです。
- M5の記事の数字は、Appleが自分の環境で測ったM4との比較です。第三者の再現は、読んだ範囲では確認できていません。
- M5の効果にはmacOS 26.2以上が必要と脚注にありますが、本文は当時の「最新のmacOSベータ」と書いています。今の最新の条件は、各自で確認してください。
- インストール文書のmacOS要件は14.0以上、mlx-lmのメモリ固定の機能は15以上、M5の最適化は26.2以上と、機能ごとに違います。
- mlx-lmの文書には、一部に誤りらしき記述がありました(GPTQの項目で、出力先の説明が「AWQのモデル」になっている)。コマンドを使う前に、
--helpも見てください。 - WWDC25のセッションのコードは、文字起こしからの引用で、誤記を含むと取得した結果に注記がありました。実際のコードはMLXの公式リポジトリで確かめてください。
- 文書の内容は更新されます。最新のバージョンの条件を確認してください。
出典
- MLX documentation(ml-explore、2026年10月8日確認)
- Build and Install(MLX documentation、ml-explore、2026年10月8日確認)
- MLX README(ml-explore、2026年10月8日確認)
- MLX(Apple Open Source、Apple、2026年10月8日確認)
- Get started with MLX for Apple silicon(WWDC25、Apple Developer、2026年10月8日確認)
- Exploring LLMs with MLX and the Neural Accelerators in the M5 GPU(Apple Machine Learning Research、Apple、2025年11月19日、2026年10月8日確認)
- mlx-lm README(ml-explore、2026年10月8日確認)
- LORA.md(mlx-lm、ml-explore、2026年10月8日確認)
- LEARNED_QUANTS.md(mlx-lm、ml-explore、2026年10月8日確認)
- SERVER.md(mlx-lm、ml-explore、2026年10月8日確認)
更新履歴
- 2026年10月25日 書き方を直しました。
- 前:運営者が使っていないと読める書き方 → いま:「この記事は、実際に使って確かめた記録ではありません」。公式の資料を読んでまとめた記事で、使い心地は書いていない、という意味に直した
