はじめに
前回は phi4-8B や Qwen2.5-Coder-14B-Instruct などを対象に、MacBook Air (M4・32GB) 上で Roo Code と LM Studio/Ollama を使ったコード生成性能を評価しました。今回は、最新の Qwen3 系列モデル を中心に、同じタスクを用い評価し、前回との 差分 をまとめます。
※ Qwen3-30B-a3Bが最強でした
MacBook Air 32GBでローカルLLMによるコード生成を評価してみた(2025/04 最終稿:Qwen3-30B-A3Bのlmxが最強)
追加評価
- /nothinkをプロンプトにつけると余計な回り道せずにそれなりのコードを出力する様になりました。
- lmstudio-community/Qwen3-30B-A3B-MLX-4bitが品質、スピードともに最強!/nothink要らず。かなり早い
前回評価の振り返り
- 14B クラスモデル が最低限必要 (32GB 環境)
- 8bit 量子化 (Q4_0/Q8_0) がメモリ・性能バランスで最適
- M4 上では MLX 化 + LM Studio が安定
- コード系専用モデル より汎用モデルのほうが応答品質良好
- よく動いたモデル:phi4-8b, deepseek-r1-distill-qwen-14b, Qwen2.5-Coder-14B-Instruct, meta-llama-3.1-8b-instruct
- 動作が厳しいモデル:phi4-mini系, codegemma系, CodeLlama13b, IBM Granite20b, mistral-nemo-instruct-2407
今回の評価方法
評価手法は前回と同一:
・既存ファイルに Python の main 関数を追加し Hello World 出力
・scikit-learn の Iris 分類関数を作成し main 関数から呼び出し
・プロンプトを徐々に曖昧化し、複数モデルで出力の正しさを確認
具体的なプロンプトは下記。
・今開いているファイルにpythonのmain関数を追加してhello worldを出力するようにして
・scikit-learnのirisを分類する関数を作ってmain関数から呼び出すようにして
・複数モデルで評価して
Roo Code と Ollama MPS/MLX-LM それぞれで動作を比較。
評価対象モデル
-
Qwen3-MoE 系
- Unsloth Dynamic 2.0 量子化モデル (Ollama MPS)を評価
-
Qwen3-30B-A3B
(A3B: 推論時に約3.3B 活性化) → MoE 非対応で MLX-LM 変換不可 - ollamaをMPS対応バージョンにバージョンアップして評価(8Bとか4Bとか)
-
unsloth/Qwen3-8B:Q4_K_XL
/unsloth/Qwen3-4B:Q4_K_XL
→ 出力前に長い thinking mode を生成し、待ち切れず
-
Dense 系 Qwen3
-
qwen3-1.7B
→ ループ多発 -
qwen3-4B
→ Roo Code の diff 出力形式にならず -
qwen3-8B
→ 複雑タスクで正しいコード生成も diff 破壊 -
qwen3-14B
→ 正常動作、メモリ約9GB、生成高速だが思考ブロック多め
-
実験環境
- マシン:MacBook Air M4, 32GB RAM
- Roo Code:v3.15.0
- LM Studio:MLX-LM エンジン
- Ollama:v0.5.8 以上 (MPS 対応)
- 量子化:INT4 (Q4_0/Q4_K_XL), INT8 (Q8_0)
結果と所感
- 結局14Bモデルを量子化するのが一番安定する。Qwen3はコードの質がよい気がする。
- MoEモデル (A3B):変換も推論も不可。Dense モデル必須。
- qwen3-1.7B:軽量だがループ多発で実用性低い
- qwen3-4B/8B:コード生成そのものは高品質も、Roo Code 連携で diff 出力不可
- qwen3-14B:メモリ余裕、生成速度良好、コード品質高いが verbosity が過剰
- UD2.0 (Q4_K_XL):精度高いが MPS 上では待ち切れないほど遅い
前回評価との主な差分
項目 | 前回 | 今回 |
---|---|---|
モデル群 | phi4, Qwen2.5 系 | Qwen3 系 (MoE/Dense 両対応) |
量子化 | Q4_0/Q8_0 | Q4_K_XL (Dynamic 2.0), INT4/INT8 |
環境 | 32GB RAM, LM Studio + Roo Code | 32GB RAM, MPS(Ollama) / LM Studio + Roo Code |
Roo Code 連携可否 | diff 出力 OK | 14B以上で出力OK |
推論速度 | phi4-8B: 実用 | Qwen3-14B: 高速だが思考冗長 |
まとめと今後の展望
- Dense Qwen3-14B の8bit量子化が最もバランス良好:メモリ/速度/品質
- UD2.0 動的量子化 は精度良好だが、ollama(MPS:非mlx)でしか動かずとても遅い