WWDC Quick Look 💓 By SwiftGGTeam
MLX を使って Mac 上でローカルのエージェント AI を動かす

MLX を使って Mac 上でローカルのエージェント AI を動かす

元の動画を見る

ハイライト

Apple は MLX フレームワークと MLX-LM Server によって、4 層のローカルエージェント AI スタックを提供しています。Mac はネットワーク接続や API Key なしで完全な Agentic ワークフローを実行できます。M5 チップの Neural Accelerator は Prompt 処理速度を M4 の 4 倍に高め、Thunderbolt RDMA 対応により複数台の Mac での分散推論は最大 3 倍高速になります。

主要内容

チャットからエージェントへ:ボトルネックはループにある

これまで LLM とやり取りする方法は単純でした。メッセージを 1 つ送り、モデルがテキストで返答します。コマンド実行、ファイル編集、API 呼び出しが必要なら、すべて人間が手動で行っていました。(00:32

エージェントはこの流れを変えます。Agent はタスクを受け取ると、まずモデルに次に何をすべきか判断させます。その後、コマンド実行、ファイル読み取り、API 呼び出しなどのツールを使って実行し、結果を観察し、その結果をまたモデルに渡して次の判断に入ります。このループはタスクが完了するまで続きます。(00:45

このループをクラウドで回すと、呼び出しのたびにネットワークを通り、API 費用がすぐに積み上がり、機密データもローカルマシンの外へ出ます。Apple の解決策は、ループ全体を Mac 上に移すことです。データはマシンから出ず、いつでも利用でき、利用コストはゼロになります。(01:10

4 層のローカルエージェントスタック

Apple は、低レベルのハードウェアアクセラレーションから最上位の Agent ツールまで、4 層のアーキテクチャを定義しています。

第 1 層:MLX。 Apple silicon 向けに設計されたオープンソースの配列計算フレームワークです。低レベル計算、Metal アクセラレーション、メモリ管理を担当します。(02:49

第 2 層:MLX-LM。 モデルの読み込み、実行、量子化、微調整を提供します。HuggingFace 上の数千のモデルをサポートし、CLI ツールと Python API も備えています。(03:06

第 3 層:MLX-LM Server。 OpenAI プロトコル互換の HTTP サーバーで、ローカルモデルを標準 API として公開します。Structured Tool Calling と Reasoning Models をサポートし、クラウド LLM API の直接的な代替になります。(03:28

第 4 層:Agent。 OpenAI Chat Completions プロトコルをサポートするあらゆるフレームワークやツールが接続できます。Xcode、OpenCode、Pi Agent、カスタムスクリプトなどです。インターフェイスが標準化されているため、Agent はモデルがローカルで動いているのかクラウドで動いているのかを知る必要がありません。(03:53

このスタックはすでに広く採用されています。Ollama、LM Studio、vLLM などの人気ツールも、内部では MLX を使っています。(04:13

詳細

3 ステップでローカル Agent を構築する

ゼロからローカル Agent を動かすまでに必要なのは、3 つのコマンドだけです。(04:36

ステップ 1:MLX-LM をインストール

pip install mlx-lm

ステップ 2:ローカルサーバーを起動

mlx_lm.server --model mlx-community/Qwen-3.5-4B-8bit

まずは小さなモデルで環境を検証するのがおすすめです。サーバーが起動するとローカルポートを listen し、モデルを読み込んでリクエストを受け付けます。

ステップ 3:curl でテスト

curl -X POST \
  http://127.0.0.1:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"default_model","messages":[{"role":"user","content":"こんにちは!"}]}'

要点:

  • pip install mlx-lm で必要な依存関係を一度にインストールできる
  • --model は HuggingFace 上のモデル ID を指定し、初回実行時に自動でダウンロードされる
  • インターフェイスは OpenAI の /v1/chat/completions と完全互換であり、既存コードは URL を変えるだけでローカル実行へ切り替えられる

OpenCode をローカル MLX に向ける

OpenCode を例に、Agent がローカルサーバーを使うよう設定します。(05:18

{
  "$schema": "https://opencode.ai/config.json",
  "model": "mlx/default_model",
  "small_model": "mlx/default_model",
  "provider": {
    "mlx": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "MLX(ローカル)",
      "options": {
        "baseURL": "http://127.0.0.1:8080/v1"
      },
      "models": {
        "default_model": {
          "name": "デフォルト MLX モデル"
        }
      }
    }
  }
}

要点:

  • baseURL はローカル MLX-LM Server のアドレスを指す
  • npm フィールドは OpenAI 互換 SDK アダプタを指定する
  • modelsmall_model の両方をローカルに向けることで、すべての対話とツール呼び出しがローカルモデルを通る
  • 設定後、Agent の各会話、各ツール呼び出しはローカルモデルで処理される

M5 Neural Accelerator:Prompt 処理が 4 倍高速に

Agentic ワークフローには特有のボトルネックがあります。ツールが結果を返すたびに、モデルは次の推論に入る前にコンテキスト全体を再処理しなければなりません。典型的な Agent セッションは数十万 Token を含むことがあり、その大部分は新しいテキスト生成ではなく Prompt 処理、つまり Prefill です。(05:51

M5 チップは専用の Neural Accelerator を導入し、MLX はそれを直接使って行列乗算を実行できます。M5 上の行列乗算速度は M4 の 4 倍です。MLX が最適化した乗算カーネルと Attention カーネルと組み合わせることで、Prompt 処理速度もほぼ同じ割合で向上します。(06:12

つまり、Agent がコードベースを読み、ツールの戻り値を処理する速度が約 4 倍になります。開発者は追加のパラメータやコード変更を行う必要はありません。MLX が自動で最適なカーネルを選択します。(06:42

Continuous Batching:複数 Agent が並列でも待たない

実際の場面では、1 つの Agent が複数のサブ Agent を同時に起動することがよくあります。1 つはドキュメントを読み、1 つはコードを検索し、1 つはテストを書く、といった具合です。複数のリクエストが同時にローカルモデルへ届きます。(06:57

MLX-LM Server は Continuous Batching でこの問題を解決します。リクエストを 1 つずつ処理する代わりに、新しく到着したリクエストを進行中のバッチへ動的に合流させ、一緒に計算します。新しいリクエストは、現在のバッチが終わるまで待つ必要がありません。(07:18

その結果、すべてのサブ Agent がキューで待たずに並行実行され、ワークフロー全体の流れが止まりません。

分散推論:複数の Mac で超大型モデルを動かす

512GB のユニファイドメモリを備えた 1 台の Mac でも、超大型モデルの中には収まりきらないものがあります。DeepSeek の最新モデルは 1.6 兆パラメータで、重みだけで 800GB 以上のメモリを必要とします。(07:49

MLX は Thunderbolt または Ethernet で複数台の Mac を接続し、モデルを複数マシンに分割して実行できます。(08:08

起動方法:

mlx.launch --hostfile hosts.json \
  --backend jaccl \
  /remote/path/to/mlx_lm.server \
  --model mlx-community/Qwen-3.5-122B-A3B-8bit

要点:

  • --hostfile はクラスタノード設定を指定し、各ノードの接続情報を含む
  • --backend jaccl は Jaccl 通信バックエンドを使う
  • モデルは利用可能なすべてのデバイスへ自動で分割され、それ以外の操作は変わらない
  • macOS 26.2 以降は Thunderbolt RDMA をサポートし、低遅延かつ高帯域の通信を提供する
  • 4 ノード分散推論では最大 3 倍の高速化が可能

Agent にとって、この意味は 2 つあります。1 つ目は、1 台では載らないより大きなモデルを動かせること。2 つ目は、分散並列で Prompt を処理することで、Agent ループ内のコンテキスト処理そのものを直接高速化できることです。(08:17

実演:PR 要約から Xcode 統合まで

発表者は 3 つの実例を示しました。

PR 要約:ローカル Agent に MLX リポジトリの最近の Pull Request を取得させ、変更内容を要約し、注意が必要な点を示させます。モデルはローカルで動き、ネットワークを使うのは GitHub CLI コマンドだけです。(01:40

ゼロから SwiftUI App を構築:空の Xcode プロジェクトで、Agent に iPad の描画 App を作らせます。Agent はディレクトリ構造を確認し、計画を立て、コードを書き、xcodebuild を呼び出してコンパイルし、ビルドエラーを修正します。2 分後には動作する描画 App が得られます。その後、丸いペン先を追加するよう依頼すると、Agent はコードを修正して再ビルドし、シミュレータで結果を確認しました。(09:29

Xcode への直接統合:Xcode の Intelligence 設定で “Locally Hosted” プロバイダを追加し、ポートを 8080 に設定します。Xcode はローカル MLX サーバーへ直接接続します。発表者は意図的に Bug を入れ、モデルに特定と修正を依頼しました。モデルは数秒で問題を見つけ、周辺コードを確認し、修正案を書き、ビルドと実行で検証しました。(11:47

主な示唆

ローカルコードレビュー助手

何をするか:チーム内に Mac mini をローカルコードレビューサーバーとして配置し、各 PR の提出時にローカル Agent で静的解析とロジックチェックを自動実行する。

なぜ価値があるか:コードが社内ネットワークから出ず、コンプライアンスリスクを根本的に減らせます。MLX-LM Server の OpenAI 互換インターフェイスにより、既存のレビュー用ツールチェーンも移行しやすくなります。

始め方:mlx_lm.server で CodeQwen のようなコード特化モデルを読み込み、Git Hook または CI スクリプトからローカルの /v1/chat/completions エンドポイントを呼び出します。

オフライン対応のインテリジェント IDE プラグイン

何をするか:VS Code または Xcode 向けに、完全オフラインのコード補完・リファクタリングプラグインを開発する。

なぜ価値があるか:M5 の Neural Accelerator により、ローカルの Prompt 処理速度はクラウドに近い体験になります。同時に、遅延ゼロ、費用ゼロ、データ漏えいリスクゼロにできます。

始め方:プラグイン側では任意の OpenAI SDK を使い、baseURLhttp://127.0.0.1:8080/v1 に変更し、モデル名を default_model にします。

複数 Mac の家庭内計算プール

何をするか:自宅やオフィスにある複数台の Mac を Thunderbolt ケーブルで接続し、プライベートな分散推論クラスタを作る。

なぜ価値があるか:1 台の Mac で 7B モデルは楽に動きますが、122B モデルには複数台のマシンが必要です。Thunderbolt RDMA により通信遅延が実用水準まで低くなり、4 台なら 3 倍の高速化が見込めます。

始め方:各ノードを記述した hosts.json を用意し、mlx.launch --backend jaccl で分散サービスを起動します。

ローカル自動運用 Agent

何をするか:常駐するローカル Agent を配置し、サーバーログを監視し、異常を自動分析し、修復コマンドを実行する。

なぜ価値があるか:ログ、設定、証明書などの運用データは非常に機密性が高いものです。ローカル実行なら漏えいを防げます。Agent ループは大量のログコンテキストを数時間にわたって処理しても API 費用がかかりません。

始め方:OpenCode またはカスタム Python Agent フレームワークを使い、ログ読み取りや shell コマンド実行などのツール呼び出し機能を設定し、ローカル MLX-LM Server に向けます。

プライベート知識ベース Q&A

何をするか:社内文書、Wiki、コードリポジトリをインデックス化し、ローカル Agent で自然言語検索インターフェイスを提供する。

なぜ価値があるか:RAG、つまり検索拡張生成の中心的な課題は、機密文書をクラウドへ送れないことです。ローカル MLX モデル、ローカルベクトルデータベース、ローカル Agent を組み合わせれば完全な閉ループを作れます。

始め方:mlx-lm で Embedding モデルを読み込み、文書をベクトル化します。別の対話モデルで生成を行い、Agent が検索と回答を編成します。

関連セッション

コメント

GitHub Issues · utterances