ここ 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 サイズに合うように大きめモデルを量子化できるので、その辺も書いてます。
Contents
実行環境: MacOS VRAM と oMLX の設定
MacOS は Tahoe です。GPU が使えるメモリのサイズを 26 GB に増やしています。永続化するコマンドは以下。その下の記事には細かいことを書いています。
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.confoMLX は 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 にあります (一般的な場所)。ここを開くコマンドはこちら:
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_thinkingtrue
- 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 YesPerformance 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_thinkingtrue
- 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 YesPerformance 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_thinkingtrue
- 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 YesPerformance 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

