見出し画像

Mac で Qwen3.8-27B を試す

Macで「Qwen3.8-27B」を試したのでまとめました。


1. mlx-dspark

mlx-dspark」は、Apple Silicon向け機械学習フレームワーク「MLX」で、Speculative Decoding(投機的デコード)を利用するためのライブラリです。
「Qwen3.8-27B」に対応しており、M4 Pro 48GBでは8bit版で平均2.45倍、最大3.18倍の高速化が報告されています。

2. mlx-dspark で Qwen3.8-27B を試す

(1) Python 3.10の仮想環境の準備。

(2) 「mlx-dspark」のインストール。

pip install mlx-dspark

(3) Qwen3.8-27Bの推論の実行。
今回は、「unsloth/Qwen3.8-27B-MLX-8bit」を使用します。
8bit版は64GB以上のApple Silicon Macがおすすめです。
初回はモデルのダウンロードのため時間がかかります。

mlx-dspark generate \
  --model mlx-community/Qwen3.8-27B-8bit \
  --prompt "Pythonでクイックソートを実装してください"

Pythonでのクイックソートの実装例です。

## 1. 簡易版(読みやすさ重視)

```python
def quick_sort(arr):
if len(arr) <= 1:
return arr

pivot = arr[0]
left = [x for x in arr[1:] if x <= pivot]
right = [x for x in arr[1:] if x > pivot]

return quick_sort(left) + [pivot] + quick_sort(right)
```

### 使用例

```python
nums = [5, 3, 8, 1, 2, 7, 4, 6]
print(quick_sort(nums))
```

出力:

```text
[1,
----------------------------------------------------------------
225 tokens · 5.70s · 39.5 tok/s · accept 4.09/round · 56 target fwds
----------------------------------------------------------------

4. Qwen3.8-27BをAPIサーバとして起動

(1) Qwen3.8-27BをAPIサーバーとして起動。
デフォルトでは 127.0.0.1:8080 で待ち受けます。

mlx-dspark serve --model mlx-community/Qwen3.8-27B-8bit
  listening on http://127.0.0.1:8080   (OpenAI base_url: http://127.0.0.1:8080/v1)
  claude code : ANTHROPIC_BASE_URL=http://127.0.0.1:8080   (or run `mlx-dspark claude`)
================================================================
  curl http://127.0.0.1:8080/v1/chat/completions -H 'Content-Type: application/json' \
    -d '{"model":"Qwen3.8-27B-8bit","messages":[{"role":"user","content":"Hi"}],"stream":true}'
================================================================

同じサーバー・同じポートで、OpenAI互換とAnthropic互換の両方が同時に有効になります。

・OpenAI互換
http://127.0.0.1:8080/v1/chat/completions

・Anthropic互換
http://127.0.0.1:8080/v1/messages

5. pi でゲーム作成

5-1. pi

「pi」はシステムプロンプトが比較的小さく、ローカルLLMでも利用しやすい軽量なエージェントハーネスです。エージェントハーネスは、LLMにシステムプロンプト、ツール、エージェントループ、コンテキスト管理などを提供して、実際の作業を遂行できるようにする実行基盤です。

今回の構成は次のようになります。

Qwen3.8-27B:LLM
 ↓
mlx-dspark:推論・高速化
 ↓
pi:エージェントハーネス
 ↓
read / write / edit / bash:ツール

5-2. pi のツール

pi のデフォルトツールは4つです。

・read : ファイルを読む
・write : ファイルを作成・上書き
・edit : 既存ファイルを部分編集
・bash : シェルコマンドを実行

さらに、読み取り専用ツールとして以下があります。これらはデフォルトでは無効で、--tools などで有効化します。

・grep : ファイル内容検索
・find : ファイル検索
・ls : ディレクトリ一覧

pi --tools read,write,edit,bash,grep,find,ls

pi はこれ以外の機能を Extensions や Skills で追加する設計です。

5-3. pi のセットアップ

(1) piのインストール。

npm install -g @mariozechner/pi-coding-agent
pi update

(2) piの設定ファイル「~/.pi/agent/models.json」を編集。

{
  "providers": {
    "mlx-dspark": {
      "baseUrl": "http://127.0.0.1:8080/v1",
      "api": "openai-completions",
      "apiKey": "dummy",
      "models": [
        {
          "id": "mlx-community/Qwen3.8-27B-MLX-8bit",
          "contextWindow": 40960,
          "maxTokens": 8192,
          "reasoning": true,
          "thinkingLevelMap": {
            "off": "off",
            "minimal": "minimal",
            "low": "low",
            "medium": "medium",
            "high": "high",
            "xhigh": "xhigh"
          },
          "compat": {
            "thinkingFormat": "qwen-chat-template",
            "supportsDeveloperRole": false
          }
        }
      ]
    }
  }
}

5-4. シューティングゲームの作成

(1) piの起動。

pi --provider mlx-dspark \
  --model mlx-community/Qwen3.8-27B-MLX-8bit \
  --thinking xhigh

Shift+Tab で推論レベルを順番に切り替えられます。

off → minimal → low → medium → high→ xhigh

(2) ゲーム作成を指示。

JavaScriptでシューティングゲームを作って

6. OpenCode でゲーム作成

6-1. OpenCode

「OpenCode」は、ターミナルで動作するオープンソースのコーディングエージェントです。複数のLLMプロバイダーに対応しており、OpenAI互換APIを介してローカルLLMも利用できます。

今回の構成は次のようになります。

Qwen3.8-27B:LLM

mlx-dspark:推論・高速化

OpenCode:コーディングエージェント

read / write / edit / bash:ツール

6-2. OpenCode のツール

OpenCode は標準でかなり多くのツールを持っています。公式ドキュメント上の組み込みツールは以下です。

・bash : シェル実行
・read : ファイル読み込み
・write : ファイル作成・上書き
・edit : ファイル部分編集
・grep : 内容検索
・glob : ファイル検索
・apply_patch : パッチ適用
・lsp : 定義・参照・Hoverなどのコード解析(experimental)
・skill : SKILL.md を読み込む
・todowrite : 作業Todo管理
・webfetch : URLの内容取得
・websearch : Web検索
・question : 実行途中でユーザーへ質問

websearch はOpenCode provider利用時、または OPENCODE_ENABLE_EXA=1 の場合に利用できます。LSPも環境変数で有効化する実験機能です

6-3. OpenCode のセットアップ

(1) OpenCodeのインストール。

npm install -g opencode-ai

(2) グローバル設定フォルダの作成。

mkdir -p ~/.config/opencode

(3) グローバル設定ファイルを編集。

・~/.config/opencode/opencode.json

{
  "$schema": "https://opencode.ai/config.json",
  "model": "mlx-dspark/mlx-community/Qwen3.8-27B-MLX-8bit",
  "provider": {
    "mlx-dspark": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "MLX DSpark",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1",
        "apiKey": "dummy"
      },
      "models": {
        "mlx-community/Qwen3.8-27B-MLX-8bit": {
          "name": "Qwen3.8 27B MLX 8-bit",
          "attachment": false,
          "reasoning": true,
          "temperature": true,
          "tool_call": true,
          "interleaved": {
            "field": "reasoning_content"
          },
          "limit": {
            "context": 40960,
            "output": 8192
          },
          "variants": {
            "off": {
              "reasoningEffort": "none"
            },
            "minimal": {
              "reasoningEffort": "minimal"
            },
            "low": {
              "reasoningEffort": "low"
            },
            "medium": {
              "reasoningEffort": "medium"
            },
            "high": {
              "reasoningEffort": "high"
            },
            "xhigh": {
              "reasoningEffort": "xhigh"
            }
          }
        }
      }
    }
  }
}

variantsには、推論レベルとして off、minimal、low、medium、high、xhigh を設定しています。

6-3. シューティングゲームの作成

(1) OpenCodeを起動。

opencode

Ctrl+T で推論レベルを順番に切り替えられます。

off → minimal → low → medium → high→ xhigh

(2) ゲーム作成を指示。

JavaScriptでシューティングゲームを作って

以下を「OpenCode でゲーム作成」の次に追加できます。


7. Claude Code でゲーム作成

7-1. Claude Code

「Claude Code」は、Anthropicが提供するターミナル型のコーディングエージェントです。プロジェクト内のファイル編集、コマンド実行、コードの検証などをエージェントとして実行できます。

今回の構成は次のようになります。

Qwen3.8-27B:LLM

mlx-dspark:推論・高速化、Anthropic互換API

Claude Code:コーディングエージェント

Read / Write / Edit / Bash:ツール

7-2. Claude Code のツール

Claude Codeの主なデフォルト内蔵ツールは次です。

・Read:ファイルを読む
・Edit / Write:ファイルを編集・作成
・Glob:ファイル名で検索
・Grep:ファイル内容を検索
・Bash:コマンド、Git、テストなどを実行
・WebSearch / WebFetch:Web検索・ページ取得
・Agent:サブエージェントを起動
・AskUserQuestion:ユーザーへ確認
・Skill:スキルを実行
・LSP:定義・参照・型エラーの確認(言語プラグインが必要)

7-2. Claude Codeのセットアップ

(1) Claude Codeのインストール。

curl -fsSL https://claude.ai/install.sh | bash

7-3. シューティングゲームの作成

(1) mlx-dspark経由でClaude Codeを起動。

mlx-dspark claude

mlx-dspark claudeは、起動中のmlx-dsparkサーバーを検出し、Claude Codeの接続先とモデルを自動的に設定します。設定は起動したプロセス内だけで有効になり、通常のClaude Codeのログイン情報や設定ファイルは変更されません。

内部的には、次のような環境変数が設定されます。

・ANTHROPIC_BASE_URL:mlx-dsparkサーバーのURL
・ANTHROPIC_AUTH_TOKEN:ローカル接続用トークン
・ANTHROPIC_MODEL:読み込まれているQwen3.8-27B
・ANTHROPIC_SMALL_FAST_MODEL:バックグラウンド処理用モデル

(2) ゲーム作成を指示。

JavaScriptでシューティングゲームを作って



いいなと思ったら応援しよう!