exo-explore/exo
Run frontier AI locally.
exo – Appleシリコン(およびLinux)クラスター向け分散AI推論
製品概要 – exo(Exo Labs提供)は、複数のMac(またはLinuxマシン)を単一のAI「クラスター」にまとめるためのローカル実行プラットフォームです。デバイスを自動的に発見し、モデルシャードをネットワーク経由で共有し、全体を馴染みのあるOpenAI互換APIとWebダッシュボードを通じて公開します。コア推論エンジンはMLX(AppleのMetalベースのMLライブラリ)で、システムは独自のトポロジー認識パラレリズムとThunderbolt 5上のRDMAを追加し、ノード間のレイテンシを削減します。
主な機能(READMEに記載)
| 機能 | 説明 |
|---|---|
| 自動デバイス発見 | exoを実行するノードは、手動設定なしでLAN上で互いに検出します。 |
| Thunderbolt 5上のRDMA | Thunderbolt 5を介したリモートダイレクトメモリアクセスのDay-0サポートで、ノード間レイテンシを約99%削減すると主張。 |
| トポロジー認識自動並列化 | exoは各ノードのリソースとネットワーク帯域幅/レイテンシを検査し、クラスター全体でモデルを分割する方法を決定します。 |
| テンソル並列化 | モデルをデバイス間でシャーディングし、2ノードで約1.8倍、4ノードで約3.2倍の高速化(READMEによる)。 |
| MLXバックエンド | 推論にMLXライブラリを使用し、通信にMLX-distributedを使用。 |
| 複数のAPI互換性 | OpenAI Chat Completions、Claude Messages、OpenAI Responses、Ollama APIを公開し、既存のクライアントがそのまま動作します。 |
| カスタムモデルロード | HuggingFaceの任意のモデル(4ビット/8ビット量子化バリアントを含む)を取得し、クラスター上で実行します。 |
| ダッシュボード | 組み込みのWeb UI(http://localhost:52415)がクラスターのステータス、モデルインスタンスを表示し、モデルとチャットできます。 |
| クロスプラットフォーム | macOSアプリ(Homebrew caskまたはDMG)とmacOSおよびLinux向けソースビルド(Linuxでは現在CPUのみ)を提供。 |
クイックスタート概要
- インストール – macOSユーザーは
brew install --cask exoまたはDMGをダウンロード; Linux/macOSソースビルドにはuv、node、rust、およびmacOSではMetalツールチェーン用にXcodeが必要です。 - 実行 –
uv run exoでコーディネーター、ダッシュボード、APIがポート52415で起動します。アプリはexoを実行する他のマシンを自動的に検出します。 - RDMAを有効化(macOS 26.2+) – リカバリモードで再起動し、
rdma_ctl enableを実行して再起動します。 - モデルをデプロイ – ダッシュボードまたはRESTエンドポイント(
/instance/previews、/instance、/v1/chat/completionsなど)を使用してモデルをクラスターに配置し、チャットを開始します。
例:APIフロー(READMEから)
# 1. モデルを配置できる場所を確認
curl "http://localhost:52415/instance/previews?model_id=mlx-community/Llama-3.2-1B-Instruct-4bit"
# 2. インスタンスを作成(手順1のJSONペイロードを使用)
curl -X POST http://localhost:52415/instance \
-H 'Content-Type: application/json' -d '{"instance": {...}}'
# 3. インスタンスが準備できるまで待機
curl -N "http://localhost:52415/instance/await?model_id=mlx-community/Llama-3.2-1B-Instruct-4bit"
# 4. チャット(OpenAI互換エンドポイント)
curl -N -X POST http://localhost:52415/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"model":"mlx-community/Llama-3.2-1B-Instruct-4bit","messages":[{"role":"user","content":"What is Llama 3.2 1B?"}],"stream":true}'
# 5. 完了したら削除
curl -X DELETE http://localhost:52415/instance/<INSTANCE_ID>
リポジトリに記載のベンチマーク
READMEには3つのベンチマークスクリーンショット(Qwen-3 235B、DeepSeek v3.1 671B、Kimi K2 Thinking)が含まれており、4台の M3 Ultra Mac Studio でテンソル並列化とRDMAを使用して実行され、Jeff Geerlingのブログ記事から引用されています。これらはマルチTBのVRAM使用量と数倍の高速化を示していますが、リポジトリにはテキスト形式の生の数値は提供されていません。
インストールメモとプラットフォームの癖
- macOS – RDMAサポートにはmacOS 26.2以降、Thunderbolt 5対応Mac(M4 Pro/Max、M3 Ultraなど)が必要です。アプリはネットワークプロファイルをインストールし、システム設定の変更にユーザー許可が必要な場合があります。
- Linux – 現在CPUのみ; GPUサポートは「開発中」です。READMEでは、トラフィックを調整するだけのノードには
--no-workerフラグを推奨しています。 - モデルストレージ –
EXO_DEFAULT_MODELS_DIR、EXO_MODELS_DIRS、EXO_MODELS_READ_ONLY_DIRSで設定可能。オフラインモード(EXO_OFFLINE=true)をサポート。 - 名前空間分離 –
EXO_ZENOH_NAMESPACE(または--namespaceCLIフラグ)を設定して、同じLAN上で複数の独立したクラスターを実行します。
誰が使うべきか?
- 複数のAppleシリコンマシンを持ち、非常に大きなLLM(数千億パラメータ)をローカルで実行したい研究者やホビイスト。
- クラウドコストなしでオンプレミスで実行できるOpenAI互換エンドポイントを必要とする開発者。
- Thunderbolt 5を介した低レイテンシのノード間通信を試したいチーム。
結論
exo は、AppleのMLXスタックとThunderbolt 5 RDMAを活用し、ローカルハードウェア上でフロンティアサイズの言語モデルの分散推論を目指す、本格的でオープンソースのプロジェクトです。リポジトリは、低レベルのデバイス発見からすぐに使えるHTTP APIとUIまで完全なスタックを提供し、単なるチュートリアルやリストではなく、オンプレミスのAIワークロード用ツールとして明確に位置づけられています。
これを取り上げた記事
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト