EXO: как объединить несколько Mac в кластер для больших локальных LLM
Если модель не помещается в память одного компьютера, необязательно сразу переходить на сервер с несколькими дорогими GPU. EXO объединяет несколько устройств в один AI-кластер: узлы автоматически находят друг друга, система видит их память и соединения, а модель разбивается между устройствами через pipeline/tensor parallelism. Главная специализация проекта сегодня — Apple Silicon и быстрые связи между Mac через Thunderbolt.
EXO делает из нескольких Mac один логический AI-кластер
Каждый узел запускает EXO. Устройства обнаруживают друг друга, обмениваются topology information и формируют cluster. При запуске model instance EXO выбирает placement и разбивает вычисление между узлами.
На поддерживаемой сети узлы могут находить друг друга без ручной таблицы IP.
При распределении учитываются ресурсы устройств и параметры links между ними.
Один inference может использовать несколько устройств параллельно.
Для клиента cluster выглядит как один inference server.
EXO и KTransformers решают «не хватает памяти» принципиально разными способами
Быстрый cluster — это не просто «сложить гигабайты памяти»
Distributed inference требует постоянного обмена tensors между устройствами. Поэтому две машины по медленному Wi‑Fi могут формально иметь больше памяти, но работать хуже одного компьютера.
Суммарная доступная память определяет верхнюю границу веса model shards.
Особенно важно для tensor parallelism.
Частые коллективные операции чувствительны к задержкам.
EXO строит placement с учётом фактических links.
Для distributed inference сеть становится частью «шины памяти» всей системы.
RDMA over Thunderbolt уменьшает overhead между Apple Silicon узлами
В текущем README EXO заявлена поддержка RDMA через Thunderbolt, включая Thunderbolt 5. Проект позиционирует это как способ резко сократить latency по сравнению с обычным network stack.
Максимальная зрелость и тестирование сейчас сосредоточены именно на Apple Silicon/macOS. Поддержка других платформ заметно слабее.
На Mac лучше начинать с официального приложения
Актуальный README требует для macOS app macOS Tahoe 26.2 или новее. Установить можно через готовый DMG либо Homebrew.
brew install --cask exo
После запуска EXO работает в фоне, показывает cluster/dashboard и может устанавливать отдельный network profile для cluster networking.
Меньше ручных зависимостей и корректная интеграция network components.
Нужны 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
Особенно важно при использовании RDMA и новых model backends.
Устройства должны реально видеть друг друга.
Чтобы собрать нужные nodes в один логический cluster.
Убедиться, что видны все узлы и их ресурсы.
EXO скачает weights и рассчитает placement.
Не считать cluster рабочим только потому, что два nodes появились в UI.
Разделение нескольких кластеров в одной сети
export EXO_LIBP2P_NAMESPACE=home-ai
В macOS app custom namespace можно задать в Advanced settings. Это полезно, если в одной LAN работают development и production clusters.
Он помогает разделять peer discovery, но не должен использоваться как security boundary для EXO API.
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.
Содержат информацию о quantization и способе sharding.
Можно подключить собственный repository/model variant.
Новые releases расширяют vision/multimodal architectures.
API умеет tool-call compatible responses для поддерживаемых моделей.
trust_remote_code выключен по умолчанию не случайно.
Если model repository требует выполнить собственный Python-код, включайте это только для источника, которому доверяете.
К 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
}'
EXO публикует ускорение tensor parallelism, но результат зависит от topology
Current README проекта указывает project-authored ориентиры до 1,8× на двух устройствах и 3,2× на четырёх для tensor parallelism. Эти цифры нельзя считать универсальным scaling efficiency.
Для своей системы используйте 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
Иначе невозможно понять, cluster действительно ускорил inference или просто позволил загрузить модель, которая раньше не помещалась.
Главный supported path — Mac. Linux и особенно Windows пока заметно слабее
В PLATFORMS.md перечислены M3 Ultra, M4 Pro и M4/M5-class MacBook Pro.
README прямо указывает, что Linux inference на текущем supported path работает на CPU; GPU support развивается.
Windows CUDA и Windows CPU указаны как planned, а не current Tier 1 support.
Если задача именно Windows cluster, лучше не строить production-схему на обещанной future support.
На 21 сентября 2026 года EXO API нельзя рекомендовать для прямого выхода в интернет
Official examples используют localhost:52415.
При этом свежий issue #2267 сообщает,
что control-plane API в исследованной версии bind'ится на 0.0.0.0 без authentication.
Тот же report описывает path traversal в endpoint удаления модели.
Firewall/VLAN/VPN должны ограничивать доступ trusted machines.
EXO_LIBP2P_NAMESPACE разделяет discovery, но не защищает HTTP API.
Для домашнего/офисного deployment выделите отдельный trusted segment.
Custom model может поставлять исполняемый Python-код.
Stable tag v1.0.71 старше части свежих fixes и bug reports.
Но уменьшают последствия 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.
Поэтому корректная позиция — не заявлять конкретный CVE, а считать API доверенным LAN-only сервисом до подтверждённого upstream fix/release.
Distributed local AI сложнее одного мощного компьютера
Плохой link убивает scaling.
Discovery, election, topology и node failures добавляют новые failure modes.
Главные преимущества сегодня привязаны к Apple Silicon + MLX.
Stable v1.0.71 старее нескольких месяцев текущих изменений.
В 2026 issue tracker содержит reports по JACCL/RDMA/topology.
Иногда cluster лишь позволяет вместить модель.
Меньшая современная модель может быть быстрее и достаточной по качеству.
Не использовать как публичный inference service «из коробки».
Именно unified memory, MLX и Thunderbolt/RDMA делают этот проект необычным.
Когда EXO имеет смысл
Суммарной памяти хватает на model, но один Mac её не вмещает.
Большая модель доступна по OpenAI/Claude-compatible API в локальной сети.
Данные и model inference остаются внутри своей инфраструктуры.
Практическая лаборатория distributed MLX.
Новые releases постепенно расширяют vision/model support.
Добавить ещё один совместимый Mac вместо перехода на отдельный GPU-server.
EXO: releases, platforms, API, license и текущие security issues
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 лучше держать только в доверенной сети.
Частые вопросы про 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 содержит более свежую разработку.
Есть несколько компьютеров и хотите понять, можно ли объединить их для одной большой LLM?
Нужны точные модели CPU/GPU, RAM/unified memory каждого узла и тип соединения между ними. После этого можно оценить EXO, KTransformers или более простой single-node вариант.