EXO: как объединить несколько Mac в кластер для больших локальных LLM
EXO · distributed LLM · Mac Studio · Thunderbolt · локальный ИИ

EXO: как объединить несколько Mac в кластер для больших локальных LLM

Если модель не помещается в память одного компьютера, необязательно сразу переходить на сервер с несколькими дорогими GPU. EXO объединяет несколько устройств в один AI-кластер: узлы автоматически находят друг друга, система видит их память и соединения, а модель разбивается между устройствами через pipeline/tensor parallelism. Главная специализация проекта сегодня — Apple Silicon и быстрые связи между Mac через Thunderbolt.

v1.0.71 последний tagged release на момент проверки
Apache-2.0 open-source core
macOS Tier 1 Apple Silicon — основной протестированный platform path
Distributed local inference

EXO делает из нескольких Mac один логический AI-кластер

Каждый узел запускает EXO. Устройства обнаруживают друг друга, обмениваются topology information и формируют cluster. При запуске model instance EXO выбирает placement и разбивает вычисление между узлами.

Mac 1RAM + GPU
↔
Mac 2RAM + GPU
↔
EXO clusterplacement · sharding · scheduling
↔
Mac 3/4дополнительная память/compute
01 Automatic discovery

На поддерживаемой сети узлы могут находить друг друга без ручной таблицы IP.

02 Topology-aware placement

При распределении учитываются ресурсы устройств и параметры links между ними.

03 Tensor parallelism

Один inference может использовать несколько устройств параллельно.

04 Unified API

Для клиента cluster выглядит как один inference server.

Чтобы не путать с предыдущей статьёй

EXO и KTransformers решают «не хватает памяти» принципиально разными способами

ЗадачаEXOKTransformers
Где находится модельНа нескольких физических узлахНа одной машине: RAM + VRAM
Главный ресурсСуммарная unified memory устройствБольшая системная RAM + CPU
Основной hardware pathApple Silicon clusterx86 Linux + GPU
Network dependencyКритичнаНет межмашинной сети
MoE-only?НетОсобенно силён на MoE
Scale-outДобавить ещё устройствоУвеличивать ресурсы одной машины
Topology matters

Быстрый cluster — это не просто «сложить гигабайты памяти»

Distributed inference требует постоянного обмена tensors между устройствами. Поэтому две машины по медленному Wi‑Fi могут формально иметь больше памяти, но работать хуже одного компьютера.

Memory Сколько модели помещается

Суммарная доступная память определяет верхнюю границу веса model shards.

Bandwidth Сколько данных проходит между узлами

Особенно важно для tensor parallelism.

Latency Сколько стоит синхронизация

Частые коллективные операции чувствительны к задержкам.

Topology Кто с кем соединён напрямую

EXO строит placement с учётом фактических links.

Простая сумма 64 + 64 = 128 ГБ ещё ничего не говорит о скорости.

Для distributed inference сеть становится частью «шины памяти» всей системы.

Главная техническая особенность EXO

RDMA over Thunderbolt уменьшает overhead между Apple Silicon узлами

В текущем README EXO заявлена поддержка RDMA через Thunderbolt, включая Thunderbolt 5. Проект позиционирует это как способ резко сократить latency по сравнению с обычным network stack.

Mac StudioGPU/unified memory
⇄
Thunderbolt / RDMAhigh-bandwidth low-latency link
⇄
Mac StudioGPU/unified memory
RDMA не означает «любые два компьютера станут одним большим Mac».

Максимальная зрелость и тестирование сейчас сосредоточены именно на Apple Silicon/macOS. Поддержка других платформ заметно слабее.

Самый простой путь

На Mac лучше начинать с официального приложения

Актуальный README требует для macOS app macOS Tahoe 26.2 или новее. Установить можно через готовый DMG либо Homebrew.

brew install --cask exo

После запуска EXO работает в фоне, показывает cluster/dashboard и может устанавливать отдельный network profile для cluster networking.

App Рекомендуемый путь для macOS

Меньше ручных зависимостей и корректная интеграция network components.

Source Для разработки и свежего main

Нужны Python 3.13, Rust/nightly, Node/npm и uv.

Запуск из исходников

git clone https://github.com/exo-explore/exo
cd exo

cd dashboard
npm install
npm run build
cd ..

uv sync --extra mlx-cpu
uv run exo

Current pyproject.toml требует именно Python 3.13.x. Для development build зависимости EXO и backend лучше держать в отдельном environment.

Два и более узла

В базовом сценарии достаточно запустить EXO на каждом Mac

1Одинаковая версия EXO

Особенно важно при использовании RDMA и новых model backends.

2Одна сеть / Thunderbolt topology

Устройства должны реально видеть друг друга.

3Одинаковый namespace

Чтобы собрать нужные nodes в один логический cluster.

4Проверить dashboard

Убедиться, что видны все узлы и их ресурсы.

5Выбрать model

EXO скачает weights и рассчитает placement.

6Проверить фактический sharding

Не считать cluster рабочим только потому, что два nodes появились в UI.

Разделение нескольких кластеров в одной сети

export EXO_LIBP2P_NAMESPACE=home-ai

В macOS app custom namespace можно задать в Advanced settings. Это полезно, если в одной LAN работают development и production clusters.

Namespace — не пароль и не HTTP-аутентификация.

Он помогает разделять peer discovery, но не должен использоваться как security boundary для EXO API.

Model support быстро меняется

EXO поддерживает готовые model cards и custom models из Hugging Face

В последних tagged releases добавлялись Qwen3.6, Gemma 4, MiniMax M2.7, GLM 5.1 и Kimi K2.6, включая multimodal support для части architectures. Можно также добавлять custom Hugging Face models.

Built-in cards Проверенные presets

Содержат информацию о quantization и способе sharding.

Hugging Face Custom model

Можно подключить собственный repository/model variant.

Multimodal Text + images

Новые releases расширяют vision/multimodal architectures.

Agents Tool calling

API умеет tool-call compatible responses для поддерживаемых моделей.

trust_remote_code выключен по умолчанию не случайно.

Если model repository требует выполнить собственный Python-код, включайте это только для источника, которому доверяете.

Один cluster — несколько совместимых API

К EXO можно подключать клиентов OpenAI, Claude и Ollama

/v1/chat/completions OpenAI Chat Completions

Стандартный chat endpoint.

/v1/responses OpenAI Responses API

Современный responses-compatible interface.

/v1/messages Claude Messages API

Anthropic-compatible request/stream format.

/ollama/api/chat Ollama compatibility

Для клиентов, ожидающих Ollama API.

curl http://localhost:52415/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "YOUR_MODEL",
    "messages": [
      {
        "role": "user",
        "content": "Объясни tensor parallelism простыми словами"
      }
    ],
    "stream": false
  }'
Не превращаем marketing numbers в закон природы

EXO публикует ускорение tensor parallelism, но результат зависит от topology

Current README проекта указывает project-authored ориентиры до 1,8× на двух устройствах и 3,2× на четырёх для tensor parallelism. Эти цифры нельзя считать универсальным scaling efficiency.

до 1,8×2 устройства — заявленный project benchmark
до 3,2×4 устройства — заявленный project benchmark
RDMAThunderbolt уменьшает communication overhead

Для своей системы используйте exo_bench.py. Он измеряет prompt TPS, generation TPS и peak memory для конкретной модели, числа nodes и sharding strategy.

uv run bench/exo_bench.py \
  --model YOUR_MODEL \
  --pp 128,512 \
  --tg 128 \
  --max-nodes 2 \
  --sharding tensor \
  --repeat 3 \
  --json-out benchmark.json
Хороший distributed benchmark должен сравнивать 1 node vs 2/4 nodes на той же модели.

Иначе невозможно понять, cluster действительно ускорил inference или просто позволил загрузить модель, которая раньше не помещалась.

Platform support в 2026

Главный supported path — Mac. Linux и особенно Windows пока заметно слабее

Tier 1 Apple Silicon macOS

В PLATFORMS.md перечислены M3 Ultra, M4 Pro и M4/M5-class MacBook Pro.

Linux Сейчас CPU path

README прямо указывает, что Linux inference на текущем supported path работает на CPU; GPU support развивается.

Windows Longer-term roadmap

Windows CUDA и Windows CPU указаны как planned, а не current Tier 1 support.

Для нескольких Windows/NVIDIA ПК EXO сегодня не выглядит зрелым выбором.

Если задача именно Windows cluster, лучше не строить production-схему на обещанной future support.

Сетевой AI-кластер нужно считать доверенной инфраструктурой

На 21 сентября 2026 года EXO API нельзя рекомендовать для прямого выхода в интернет

Official examples используют localhost:52415. При этом свежий issue #2267 сообщает, что control-plane API в исследованной версии bind'ится на 0.0.0.0 без authentication. Тот же report описывает path traversal в endpoint удаления модели.

1 Не публиковать 52415 напрямую

Firewall/VLAN/VPN должны ограничивать доступ trusted machines.

2 Не считать namespace auth

EXO_LIBP2P_NAMESPACE разделяет discovery, но не защищает HTTP API.

3 Изолировать cluster network

Для домашнего/офисного deployment выделите отдельный trusted segment.

4 Не включать trust_remote_code без проверки

Custom model может поставлять исполняемый Python-код.

5 Следить за main и security issues

Stable tag v1.0.71 старше части свежих fixes и bug reports.

6 Backups model/state не заменяют security

Но уменьшают последствия data-loss bug.

Свежий path traversal report пока не закрыт

Issue #2267 открыт 17 августа 2026 года и описывает DELETE /download/{node_id}/{model_id}, где значение .. может привести к рекурсивному удалению родительской директории model store. Автор report проверял commit от 22 июня 2026 года.

Исправляющий PR #2273 создан 23 августа, добавляет containment checks и regression tests, но на момент проверки 21 сентября 2026 года всё ещё имеет статус Open, то есть не смержен в upstream main.

Это не опубликованный GitHub Security Advisory, а открытый bug report + несмёрженный fix.

Поэтому корректная позиция — не заявлять конкретный CVE, а считать API доверенным LAN-only сервисом до подтверждённого upstream fix/release.

Ограничения

Distributed local AI сложнее одного мощного компьютера

01Network становится частью inference path

Плохой link убивает scaling.

02Cluster stability сложнее

Discovery, election, topology и node failures добавляют новые failure modes.

03Mac-first

Главные преимущества сегодня привязаны к Apple Silicon + MLX.

04Tagged release отстаёт от main

Stable v1.0.71 старее нескольких месяцев текущих изменений.

05RDMA edge cases существуют

В 2026 issue tracker содержит reports по JACCL/RDMA/topology.

06Не любое увеличение nodes ускоряет

Иногда cluster лишь позволяет вместить модель.

07Большая модель ≠ лучший выбор

Меньшая современная модель может быть быстрее и достаточной по качеству.

08Безопасность API требует внимания

Не использовать как публичный inference service «из коробки».

EXO особенно интересен владельцу нескольких Apple Silicon машин, а не любого набора старых ПК.

Именно unified memory, MLX и Thunderbolt/RDMA делают этот проект необычным.

Практические сценарии

Когда EXO имеет смысл

01 Несколько Mac mini/Studio

Суммарной памяти хватает на model, но один Mac её не вмещает.

02 Локальный coding backend

Большая модель доступна по OpenAI/Claude-compatible API в локальной сети.

03 Private research cluster

Данные и model inference остаются внутри своей инфраструктуры.

04 Эксперименты с tensor parallelism

Практическая лаборатория distributed MLX.

05 Большие multimodal models

Новые releases постепенно расширяют vision/model support.

06 Scale-out вместо замены всего железа

Добавить ещё один совместимый Mac вместо перехода на отдельный GPU-server.

Первоисточники

EXO: releases, platforms, API, license и текущие security issues

Материал проверен 21 сентября 2026 года.

Latest tagged release — v1.0.71. Main branch активно развивается и уже содержит platform/dependency changes, которые не следует автоматически приписывать апрельскому tagged build.

Вывод

EXO интересен тем, что превращает несколько Mac не в «ферму запросов», а в одну распределённую LLM

Самый сильный сценарий проекта — несколько Apple Silicon устройств, соединённых быстрым Thunderbolt link. Тогда cluster может загрузить модель, которая физически не помещается в unified memory одного Mac, и использовать tensor parallelism для совместного inference.

Но в сентябре 2026 EXO всё ещё нельзя воспринимать как зрелую универсальную платформу для любых Windows/Linux компьютеров. Mac — основной supported path, cluster networking остаётся сложной частью системы, а текущий API лучше держать только в доверенной сети.

FAQ

Частые вопросы про EXO

Что такое EXO простыми словами?

Open-source система, которая объединяет несколько устройств в один локальный AI-кластер и распределяет model inference между ними.

Можно ли сложить память двух Mac?

Не буквально как один физический RAM pool, но EXO может разбить model shards между узлами, поэтому суммарная память cluster позволяет запускать модель крупнее памяти одного устройства.

Какие компьютеры поддерживаются лучше всего?

На 21 сентября 2026 года Tier 1 support — Apple Silicon macOS. Linux работает ограниченнее, Windows указан в longer-term roadmap.

Нужен ли Thunderbolt?

Нет для самого факта cluster networking, но быстрый Thunderbolt/RDMA link — одно из ключевых преимуществ EXO на нескольких Mac.

Можно ли подключить Open WebUI?

Да. EXO имеет Ollama-compatible и OpenAI-compatible API, поэтому совместимые клиенты можно направить на его endpoint.

Работает ли Claude-compatible API?

Да. Есть endpoint /v1/messages в формате Claude Messages API.

Можно ли использовать custom model с Hugging Face?

Да. EXO поддерживает custom model repositories. Для моделей, требующих trust_remote_code, этот режим нужно включать явно.

Безопасно ли открыть EXO API в интернет?

Не рекомендуется. На момент проверки есть открытый high-severity bug report по unauthenticated model-delete API, а исправляющий upstream PR ещё не смержен.

Какая версия актуальна?

На 21 сентября 2026 года latest tagged release — EXO v1.0.71. Main branch содержит более свежую разработку.

Локальный AI-кластер

Есть несколько компьютеров и хотите понять, можно ли объединить их для одной большой LLM?

Нужны точные модели CPU/GPU, RAM/unified memory каждого узла и тип соединения между ними. После этого можно оценить EXO, KTransformers или более простой single-node вариант.