M1/M2 32GB RAM の Mac でベストなローカル LLM

ここ 2週間ほど、無料でローカルバイブコーディングができる OpenCode で使うのに最適なローカル LLM を探す沼にハマってました。で、苦労の末、ナウのベストを見つけました。というわけで、oMLX で量子化や設定の微調整を行い、ベンチマークで比較した結果を公開します。

すべて Mac Studio M2 Max / 32 GB RAM /30-Core GPU で試した内容なので、M1/M2 で 32 GB 以上の RAM を積んでいればそのまま使えると思います。CPU の世代と RAM のサイズによって、ご自身で最適な変更をしてみてください。

たとえば dtype の FP16 (float16) は M1/M2 に最適なので、M3 以降では BF16 にすればよいですし、量子化は 4bit が性能を保てる限界なので、大きな RAM を持っていて性能が欲しい人は、oQ レベルを上げましょう。もちろん oQ4 でコンテキストサイズを大きくするのもアリ。32 GB 未満の RAM の場合 Qwen3.5-9B oQ6 あたりなら動きそうですが、テストしていないのであしからず。oMLX なら実 RAM サイズに合うように大きめモデルを量子化できるので、その辺も書いてます。

実行環境: MacOS VRAM と oMLX の設定

MacOS は Tahoe です。GPU が使えるメモリのサイズを 26 GB に増やしています。永続化するコマンドは以下。その下の記事には細かいことを書いています。

Zsh
sudo touch /etc/sysctl.conf
sudo chown root:wheel /etc/sysctl.conf
sudo chmod 0644 /etc/sysctl.conf
echo "iogpu.wired_limit_mb=26624" >> /etc/sysctl.conf

oMLX は v0.3.12 Tahoe版 .dmg をダウンロードして Applications フォルダに入れて使っています。頻繁にアップデートされており、バージョンが違うと結果が異なる可能性もありえます。

v0.3.12 リリースページ (下の Assets の中に .dmg があります)

Qwen3.6 の oQ 量子化はなぜかこのバージョン v0.3.12 だと途中でコケるので、少し前のリリース候補 v0.3.9rc1 を使いました。量子化が必要なときは v0.3.12 を Quit し、マウントした v0.3.9rc1 の .dmg から直接 oMLX を立ち上げる、というやり方です。ま、そのうち修正されるでしょうけど。Gemma-4 の oQ 量子化は v0.3.12 でもできました。

v0.3.9rc1 リリースページ (Qwen3.6 の量子化がコケる場合はこちら)

oMLX の Global Settings でいくつか変更を行っています。太字はやったほうが良いと思います。パラメータは今後知見がたまると変更する可能性があります。速い外付け SSD はあったほうが良いでしょう。 表示が全部英語ですみません。

SERVER

  • Host: Open to all (0.0.0.0) ← LAN の他の PC からアクセスしたい場合
  • Port: 8585 ← 一例。他のサービスと被らなければなんでも OK

RESOURESE MAGEMENT

  • Memory guard: 有効にして Aggressive に変更
  • Hot Cache Limit (In-Memory Cache): 6% (2GB)
  • Cold Cache Limit (SSD Cache): 75% (715GB) ← これは SSD の空きに応じて設定してください
  • Max Concurrent Requests: 2
  • Idle Timeout: 1 hour

CACHE

  • Cache Enabled: 有効
  • SSD Cache Directory: 外付け SSD を指定 (例:/Volumes/SSD/oMLX/.omlx/cache)

GENERATION DEFAULTS

  • Max Context Window: 65536 ← これより大きいプロンプトだとはじくようにします
  • Max Tokens: 65536 ← 別の話ですが、Context Window と合わせてこれより小さいと OpenCode で Compaction が走りまくって先に進まないため、最低限これくらいは必要っぽいです

最後に Save Settings して、Restart server します。一部の設定を反映するためにはリスタートが必須です。

以下すべてはオリジナルモデルを 32 GB RAM の Mac で oMLX を使って量子化したものを使っています。また、ベンチマークは oMLX の Inteligence Benchimark のサブセットを実行した結果を添えています: HumanEval (30/164) MBPP (100/500)。これだけでも完了するまで数時間かかるので、誰かが実行したベンチマークを調べるのも良いでしょう:

Community Benchmarks https://omlx.ai/benchmarks

(oMLX でベンチマークが完了すると勝手にアップロードされます。ただし、TurboQuant を有効化していると、通常設定じゃないから、みたいなことでアップされません)

オススメモデルの紹介

というわけで、2026年 5月末現在の、ボク調べ、特徴別イケてるローカル LLM は以下となります。設定はコーディング寄りで、Vision の有り無しは速度への影響を比較した結果です。モデルサイズは、oMLX の Models > Manager に表示される値を持ってきています。

注意!モデル名に VL と入っているものは、自分がモデルを選ぶときに Vision 対応とわかるよう、書き出し後にフォルダ名を変更しているためです!編集ミスしそうなのであらかじめお詫びをしておき、モデル名はボクの環境のものをそのままコピペします。モデルが保存されているフォルダは Global Settings の Model Directories にあります (一般的な場所)。ここを開くコマンドはこちら:

Zsh
open ~/.cache/huggingface/hub/
最初に書いておきますが Gemma-4 は入っていません。一度もベンチマークを完遂できなかったからです。できたのは簡単なチャットくらい。また、Qwen シリーズを Claude Opus で再トレーニングし性能を爆上げしたというタイプもいくつか試したのですが、oMLX では期待したほどの結果は出ませんでした。

Qwen3.6-35B-A3B-VL-oQ4-fp16 /高速・高性能 (だがメモリ食い)

ソースモデル: Qwen/Qwen3.6-35B-A3B

oMLX での oQ 量子化設定:

  • OQ LEVEL: oQ4
  • Text Only: 無効 (Vision あり)
  • Preserve MTP weights: 無効 (MTP なし)
  • Non-quant weight dtype: float16

モデルサイズ: 19.67 GB

量子化完了後の Model Settings:

  • Preset: qwen3.5/6(r, code)
  • TEMPERATURE: 0.8
  • Enable Thinking: 有効
  • Chat Template Kwargs に追加
    • preserve_thinking
    • true
  • TurboQuant KV Cache: 有効
    • BITS PER CHANNEL: 4-bit

Intelligence Benchmark:

Model: Qwen3.6-35B-A3B-VL-oQ4-fp16
Benchmark         Accuracy   Correct   Total   Time(s)   Think
--------------------------------------------------------------
HUMANEVAL            93.3%        28      30     882.2     Yes
MBPP                 95.0%        95     100    2874.5     Yes

Performance Benchmark:

oMLX - LLM inference, optimized for your Mac
https://github.com/jundot/omlx
Benchmark Model: Qwen3.6-35B-A3B-VL-oQ4-fp16
================================================================================

Single Request Results
--------------------------------------------------------------------------------
Test                TTFT(ms)    TPOT(ms)        pp TPS        tg TPS      E2E(s)    Throughput    Peak Mem
pp1024/tg128          1258.3       12.78   813.8 tok/s    78.9 tok/s       2.881   399.9 tok/s    19.45 GB
pp4096/tg128          4331.4       12.89   945.7 tok/s    78.2 tok/s       5.969   707.7 tok/s    19.57 GB
pp8192/tg128          8698.0       13.55   941.8 tok/s    74.4 tok/s      10.419   798.6 tok/s    19.68 GB
pp16384/tg128        18472.8       14.65   886.9 tok/s    68.8 tok/s      20.333   812.1 tok/s    20.18 GB

Continuous Batching
pp1024 / tg128
--------------------------------------------------------------------------------
Batch           tg TPS   Speedup        pp TPS    pp TPS/req    TTFT(ms)      E2E(s)
1x          78.9 tok/s     1.00x   813.8 tok/s   813.8 tok/s      1258.3       2.881
2x         116.5 tok/s     1.48x   577.4 tok/s   288.7 tok/s      3418.6       5.744
4x         235.1 tok/s     2.98x   564.1 tok/s   141.0 tok/s      4778.1       9.438
8x         473.1 tok/s     6.00x   488.9 tok/s    61.1 tok/s      9522.4      18.921

ハイライト: Vision ありで書き出した方が速かった (MLX-VLM のが速い?)。MTP は MoE の高速化に寄与しなかったため削除。試した中では速度と性能がトップ。MBPP (Python のベンチマーク)で 95% はありがたい。実際に使うとメモリの使用量が常に 20 GB を超えるような状況が続くが、oMLX のメモリ管理が良くなってきて、落ちるとか Mac 自体のパニック再起動とかもほぼなし。当面は安定のベストモデル。メモリ確保に oQ3.5 で書き出したら性能は HE: 86.7% / MBPP: 83.0% に低下。だったら Qwen3.5 9B のがよい。

Qwen3.6-27B-MLX-oQ4-FP16 /メモリ使用量控えめで高性能 (だが遅い)

ソースモデル: Qwen/Qwen3.6-27B

oMLX での oQ 量子化設定:

  • OQ LEVEL: oQ4
  • Text Only: 有効 (Vision なし)
  • Preserve MTP weights: 有効 (MTP あり)
  • Non-quant weight dtype: float16

モデルサイズ: 15.21 GB

量子化完了後の Model Settings:

  • Preset: qwen3.5/6(r, code)
  • TEMPERATURE: 0.8
  • Enable Thinking: 有効
  • Chat Template Kwargs に追加
    • preserve_thinking
    • true
  • Native MTP: 有効

Intelligence Benchmark:

Model: Qwen3.6-27B-oQ4-fp16-mtp 
Benchmark         Accuracy   Correct   Total   Time(s)   Think
--------------------------------------------------------------
HUMANEVAL            90.0%        27      30    3877.4     Yes
MBPP                 92.0%        92     100   13400.2     Yes

Performance Benchmark:

oMLX - LLM inference, optimized for your Mac
https://github.com/jundot/omlx
Benchmark Model: Qwen3.6-27B-oQ4-fp16-mtp
================================================================================

Single Request Results
--------------------------------------------------------------------------------
Test                TTFT(ms)    TPOT(ms)        pp TPS        tg TPS      E2E(s)    Throughput    Peak Mem
pp1024/tg128          6725.0       41.87   152.3 tok/s    24.1 tok/s      12.042    95.7 tok/s    16.95 GB
pp4096/tg128         25971.6       42.54   157.7 tok/s    23.7 tok/s      31.374   134.6 tok/s    18.05 GB
pp8192/tg128         52299.5       45.66   156.6 tok/s    22.1 tok/s      58.098   143.2 tok/s    18.46 GB
pp16384/tg128       107967.0       51.96   151.8 tok/s    19.4 tok/s     114.565   144.1 tok/s    18.28 GB

Continuous Batching
pp1024 / tg128
--------------------------------------------------------------------------------
Batch           tg TPS   Speedup        pp TPS    pp TPS/req    TTFT(ms)      E2E(s)
1x          24.1 tok/s     1.00x   152.3 tok/s   152.3 tok/s      6725.0      12.042
2x          29.4 tok/s     1.22x   125.1 tok/s    62.5 tok/s     12619.3      25.091
4x          57.4 tok/s     2.38x   113.7 tok/s    28.4 tok/s     24562.2      44.939
8x         112.6 tok/s     4.67x   101.1 tok/s    12.6 tok/s     47096.9      90.086

ハイライト: MTP が高速化に寄与。モデル自体のサイズが 16 GB 程度なので、コンテキストサイズを大きめにできる。Native MTP を無効にし、TurboQuant を 4-bit などとする事で、多少の速度を犠牲にさらに大きなコンテキストが使えるのも強み。性能なら MoE より Dense でしょ!と当初 OpenCode で使ってましたが、将棋のタイトル戦を見ているような気分でした (良い手を指してくるけど毎回長考に入るので)。性能を求めて oQ5 で書き出しても 32 GB RAM で動きます。MBPP は驚異の 95% だけど 10% 以上遅くなるので正直キツい。

Qwen3.5-9B-VL-oQ8-fp16-mtp /十分な速度と極小使用メモリ (性能も OK)

ソースモデル: Qwen/Qwen3.5-9B

(Qwen3.6 シリーズは 27B が最小なので、ひとつ前の Qwen3.5)

oMLX での oQ 量子化設定:

  • OQ LEVEL: oQ8
  • Text Only: 無効 (Vision あり)
  • Preserve MTP weights: 有効 (MTP あり)
  • Non-quant weight dtype: float16

モデルサイズ: 10.00 GB

量子化完了後の Model Settings:

  • Preset: qwen3.5/6(r, code)
  • TEMPERATURE: 0.8
  • Enable Thinking: 有効
  • Chat Template Kwargs に追加
    • preserve_thinking
    • true
  • Native MTP: 有効

Intelligence Benchmark:

Model: Qwen3.5-9B-VL-oQ8-fp16-mtp
Benchmark         Accuracy   Correct   Total   Time(s)   Think
--------------------------------------------------------------
HUMANEVAL            90.0%        27      30    3094.9     Yes
MBPP                 82.0%        82     100     10340     Yes

Performance Benchmark:

oMLX - LLM inference, optimized for your Mac
https://github.com/jundot/omlx
Benchmark Model: Qwen3.5-9B-VL-oQ8-fp16-mtp
================================================================================

Single Request Results
--------------------------------------------------------------------------------
Test                TTFT(ms)    TPOT(ms)        pp TPS        tg TPS      E2E(s)    Throughput    Peak Mem
pp1024/tg128          2053.9       20.43   498.6 tok/s    49.3 tok/s       4.649   247.8 tok/s    10.18 GB
pp4096/tg128          7411.8       21.15   552.6 tok/s    47.7 tok/s      10.098   418.3 tok/s    10.86 GB
pp8192/tg128         14856.2       22.19   551.4 tok/s    45.4 tok/s      17.674   470.8 tok/s    11.41 GB
pp16384/tg128        30293.1       23.44   540.8 tok/s    43.0 tok/s      33.270   496.3 tok/s    12.29 GB

Continuous Batching
pp1024 / tg128
--------------------------------------------------------------------------------
Batch           tg TPS   Speedup        pp TPS    pp TPS/req    TTFT(ms)      E2E(s)
1x          49.3 tok/s     1.00x   498.6 tok/s   498.6 tok/s      2053.9       4.649
2x          68.0 tok/s     1.38x   445.2 tok/s   222.6 tok/s      4454.3       8.367
4x         135.5 tok/s     2.75x   337.1 tok/s    84.3 tok/s      8013.8      15.928
8x         268.7 tok/s     5.45x   293.4 tok/s    36.7 tok/s     15931.5      31.730

ハイライト: Vision あり・なしでの有意な違いはない。50トークン/秒近いスピードで、メモリも 10 GB とちょっとしか使わない。MPBB (Python) 82% で構わない用途なら全然あり。Vision ありで書き出すなら、Enable Thinking を無効にして大量の画像のインデックスを作らせるとか。逆に Vision と MTP を外して書き出し、利用できるメモリを最大にする/小さな RAM で動かす、というのもあり。別のモデルですが、Qwopus3.5-9B-v3 は MBPP が 85% に微増。

あとがき

32 GB RAM の Mac だと、大きなコンテキスト (大きなコードや文章) を扱わないのであれば、35B-A3B がベストだと思います。バイブコーディングをしているときなどは、コードが大きくなってメモリに収まらなくなってきたら 27B や 9B に切り替える感じでしょうか。OpenCode でテトリスくらいのものを作るなら 35B-A3B が速くて性能も良くて、なかなか快適でした。https://artificialanalysis.ai/ で比較すると Coding Index は 27B のが上なんですけどね。

とりあえず色々とスッキリしたので、しばらくはバイブコーディングに時間を使おうと思います。

oMLX についてもうちょっと

ここ数日はずっと oMLX をいじっています。oMLX とは Ollama や LM Studio のように、Mac でローカル LLM を実行する環境ですが、めっちゃいいです。GUI が web ブラウザで開ける、GUI からサーバが再起動ができる、モデルのダウンロードや oQ 量子化が簡単にできる、M1/M2 チップで速く動く FP16 へも変換できる、Vision や MTP 機能を外して少し小さくできる、各種ベンチマークが簡単に実行・共有できる、Claude Code / Codex / OpenClaw / OpenCode 等コーディングエージェントの LLM 実行環境として使える、KV キャッシュを外付け SSD 等に置ける、更新が頻繁で新しい技術が早く試せる、等など。ボクは Ollama と Open WebUI の自動起動をやめ、別の Mac で動いている Dify を使うこともなくなりました。

oLMX による oQ 量子化と FP16

oMLX は、量子化などがされる前のモデルを oQ 量子化することができます。元のサイズは Mac の RAM に乗り切る必要はありません。なので、元の LLM 自体のファイルサイズが 60 GB を超えるくらいでも、がんばってダウンロードして oQ4 (4 bit) 量子化してしまえば 20 GB 以下にはなります。つまり、32 GB RAM の Mac であれば設定で GPU に RAM を 24~26 GB くらい割り当てられるので、動かすことができちゃうんです。

さらに oMLX で量子化する際には、M1/M2 向けに FP16 (float16) という精度も選べます。M1/M2 という初期の Apple Silicon は、現在主流の BF16 (bfloat16) には対応しておらず同精度で書き出された LLM だと性能が発揮できません。もし、Hugging Face に FP16 で書き出されたお目当てのモデルが見つからなくても、自分で簡単に最適化して使うことができるのです。

Redit なんかを見てると、M1/M2 なら FP16 が n% 速いとか、MoE に MTP は効果がない等の既存モデルにも有益な情報がちょいちょいあがってきて助かります。ダウンロードが一番時間がかかるため、量子化前の Qwen3.6 ソースモデルを手元に置いておき、いつでも書き出せるようにしています。ベンチマークのおかげで、書き出し後に残すか消すかの判断がすぐできるのも oMLX のよいところですね。

作者さんが FP16版を HF に置いてくれてます

oMLX の作者の Jun Kim さん (Jundot) や、Issue で FP16 サポートのリクエストをしてくれた Kir Belevich さん (deepsweet) の Hugging Face リポジトリには、FP16 で oQ 量子化された新しめ&有名どころの複数バリアントがアップされています。よって、書き出しが面倒、SSD に空きがない、という方は、ここからダウンロードして使うのが手っ取り早くてオススメです。

Image by Stable Diffusion (Mochi Diffusion) 

いまだにこんな古い画像生成 AI を使ってますが、いかんせんお手軽で良いです。ともあれ今回のキャッチ画像は、記事の内容に合わせて「表彰台に乗った 3人の陸上選手」をイメージ。いつものごとく最小限のプロンプトで出たとこ勝負したのですが、なんと一位の選手のゼッケンが AI。ボクが大好きなバンド、ハク。の Gt. Vo. もあいちゃんなので、即採用となりました。あ、ビジュは全然違います。

Date:
2026年5月30日 23:08:30

Model:
realisticVision-v51VAE_original_768x512_cn

Size:
768 x 512

Include in Image:
top 3 track and field athletes on the podium

Exclude from Image:

Seed:
3829489016

Steps:
21

Guidance Scale:
20.0

Scheduler:
DPM-Solver++

ML Compute Unit:
CPU & GPU

© Peddals.com