powered by TechFeed
表示モード
Deep Dive

ローカルLLMにずっと失望してきた開発者が「初めて実用になった」と評するQwen 3.6 27B — M5 MacBookで30トークン/秒、フロンティアモデル並みの品質がオフラインで動く

6月29日、データインフラ系スタートアップQuesmaが「Qwen 3.6 27B is the sweet spot for local development」と題した記事を公開した。ローカル実行に最適なLLMとしてQwen 3.6 27Bを推す理由と、MacBookで実際に動かすまでの手順を詳しく紹介している。記事の書き手は長らくローカルモデルに失望してきたと言う。しかしQwen 3.6 27Bを試して、「汎用AIとして実際に意味をなす初めてのローカルモデル」と評した。クラウドAPIへの依存を下げたい開発者にとって、これは見逃せない評価だ。なぜ今ローカルモデルなのかクラウドAPIへの依存にはリスクがある。記事では現実的な懸念として以下を挙げている。

6月29日、データインフラ系スタートアップQuesmaが「Qwen 3.6 27B is the sweet spot for local development」と題した記事を公開した。ローカル実行に最適なLLMとしてQwen 3.6 27Bを推す理由と、MacBookで実際に動かすまでの手順を詳しく紹介している。

記事の書き手は長らくローカルモデルに失望してきたと言う。しかしQwen 3.6 27Bを試して、「汎用AIとして実際に意味をなす初めてのローカルモデル」と評した。クラウドAPIへの依存を下げたい開発者にとって、これは見逃せない評価だ。

なぜ今ローカルモデルなのか

クラウドAPIへの依存にはリスクがある。記事では現実的な懸念として以下を挙げている。

  • プロプライエタリなモデルは突然サービス終了することがある
  • 現在の月額$100課金は実コストより大幅に割り引かれており、いつ価格が是正されるかわからない
  • ローカルモデルはプロプライエタリデータや医療データを外部サーバーに送らずに使える

こうした背景から、「ローカルで動かせるモデルの品質が実用水準に達したか」は開発者にとって切実な問いになっている。Qwen 3.6 27Bはその問いに対する、現時点での一つの回答として位置づけられる。

「ローカルモデルに失望してきた」著者が推す一本

Qwen 3.6には2つのバリアントがある。

  • **Qwen 3.6 35B A3B**:Mixture-of-Experts(MoE)構造。全パラメータのうち一部だけを選択的に使うことで推論を高速化する設計
  • **Qwen 3.6 27B**:Denseモデル(全パラメータを毎回使う通常の構造)。やや遅いが品質が高い

記事ではMoEの35B A3Bより、Dense構造の27Bを推奨している。実際に六角形マインスイーパーの生成を両モデルで試したところ、35B A3Bは単一のindex.htmlで実装したのに対し、27Bは「pnpmパッケージとして作れ」という指示を正確に守り、1プロンプト・1回でNode.jsパッケージとして動くものを生成した。命令追従性の差が出た形だ。

実際のパフォーマンスはどのくらいか

MacBook Max M5 128GB(128GBユニファイドメモリを搭載した高スペック構成)で計測した結果、llama.cppで約30トークン/秒が出た。これはGPT-4oクラスのAPIが返す典型的なスループットと同等の水準だ。GPU使用率は95%で、Apple Siliconのリソースをほぼ使い切っている。

Artificial Analysisのベンチマークによると、Qwen 3.6 27Bの品質スコアはGPT-5 / Claude Sonnet 4.5クラス(2025年中頃のフロンティアモデル水準)に位置する。一方、ローカルコーディングのデフォルトとして広く使われるGemma 4 31Bはo1 / Claude 3.5 Sonnet相当(2024年末水準)とされており、Qwen 3.6 27Bが品質面で大きくリードしている。

NvidiaのRTX系でも動作する。Hacker Newsには以下のコメントが寄せられている。

I set this up today on my 5090 at Q6_K quantization and Q4_0 KV, got 50 tokens/s consistently at 123k context, using ~28/32gb vram through LM Studio.
gfosco、Hacker News

RTX 5090ならQ6_K量子化で50トークン/秒、123kコンテキストでも安定して動作している。Hacker Newsでは「サイズの割に強い(punches above its weight)」という評価が多く見られ、Will it Mythos?といった独自検証記事も出ている。

なお、Apple Silicon向けに最適化されたmlx-lmより、汎用のllama.cppの方が速かったとのことだ。

llama.cppでの起動手順

記事ではOllamaを使わず、llama.cppを直接使うことを推奨している。Ollamaはセットアップが簡単な反面、モデルの動作に関する透明性や設定の制御性に限界があり、記事でもその点を理由に推奨しないと明記している(参考)。

量子化モデルはunslothbartowskiがHugging Faceで配布している。推奨はQ8_0(8bit量子化)で、BF16の半分のサイズでありながら品質の劣化がほとんどない。さらに圧縮した量子化との比較はこのRedditスレッドが参考になる。

サーバー起動コマンドは以下。

llama-server -hf unsloth/Qwen3.6-27B-MTP-GGUF:Q8_0 \
    --spec-type draft-mtp -ngl 999 -fa on -c 65536 --jinja --port 8080

主なオプションの意味:

  • --spec-type draft-mtp:MTP(Multi-Token Prediction)による投機的デコード(次のトークンを先読みして生成を高速化する手法)
  • -ngl 999:全レイヤーをGPUに載せる
  • -fa on:Flash Attentionを有効化
  • -c 65536:コンテキストを64kトークンに設定(Qwen 3.6 27Bのネイティブコンテキストは256k)
  • --jinja:ツールコール(関数呼び出し機能)を有効化

http://127.0.0.1:8080を開けばそのままチャットできる。AIコーディングツールのOpenCode(自然言語でコードを生成・編集するいわゆる「vibe coding」ツール)と接続する設定は以下。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "llama": {
      "name": "llama.cpp (local)",
      "npm": "@ai-sdk/openai-compatible",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1",
        "apiKey": "local"
      },
      "models": {
        "qwen3.6-27b": { "name": "Qwen3.6-27B Q8 +MTP" }
      }
    }
  },
  "model": "llama/qwen3.6-27b"
}

ベンチマーク結果と手順の詳細はbenching-local-llms-on-apple-siliconのGitHubリポジトリにもまとめられている。

詳細はQwen 3.6 27B is the sweet spot for local developmentを参照していただきたい。