news 2026/9/8 0:14:14

Exo 分布式推理集群:从单台 Mac 到多节点加速的完整实操指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Exo 分布式推理集群:从单台 Mac 到多节点加速的完整实操指南

Exo 分布式推理集群:从单台 Mac 到多节点加速的完整实操指南

【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo

Exo 是一个分布式推理集群工具:把多台设备自动组网成一个推理集群,让单机内存装不下的大模型可以拆到多台设备上加载,并且随设备增加继续提速。适合手上有几台 Apple Silicon 设备、想本地跑数百 B 参数模型、又希望现有客户端不用改协议的人。

三步跑通:最小可用的多节点推理

环境检查

  • Python 3.13(用 uv 管理)、Node.js 18+、Rust nightly——macOS 与 Linux 通用
  • macOS 另需 Xcode(提供 MLX 编译用的 Metal Toolchain)
  • Apple Silicon 硬件监控需要 macmon 工具
  • 要启用 RDMA:macOS 26.2+、Thunderbolt 5 设备,节点间全互联,且各设备系统版本完全一致

最小可运行配置

git clone https://gitcode.com/GitHub_Trending/exo8/exo cd exo/dashboard && npm install && npm run build && cd .. uv run exo

macOS 上也可走 GUI 路径:装官方 app(要求 macOS Tahoe 26.2+),启动后授权安装网络配置,应用常驻菜单栏即可。

验证成功的标志

启动后浏览器打开http://localhost:52415,能看到 dashboard 的集群视图和本地节点卡片;执行curl http://localhost:52415/models返回内置模型列表,说明 API 已就绪。单台 MacBook 作为节点运行的界面如下。

架构速览:从发现到张量并行

数据流向:客户端请求 → 协调层放置决策 → 各节点 MLX 引擎 → 流式回传。

核心模块拆解

  • placement.py — 调度层:结合实时拓扑与内存约束,计算模型在各设备上的可行分片方案
  • runner.py — 节点运行器:承接任务、分发到推理引擎、上报进度、支持取消
  • builder.py — MLX 推理引擎:加载模型、构建张量并行分片与 KV 前缀缓存
  • networking/src/swarm.rs — Rust 网络层:节点自动发现与发布/订阅消息通道

设计取舍

  • 选 MLX 而非 CUDA 后端:原生针对 Apple Silicon 优化,免驱动层;代价是 Linux 目前只能跑 CPU
  • 没有中心服务器:任何节点都能当协调层做放置决策,少一个单点故障
  • 张量并行/流水线分片由调度层按链路带宽自动选,用户不手动配置

实测数据:RDMA 与 TCP 的吞吐对比

Qwen3 235B A22B(8-bit)解码吞吐,Exo(RDMA)对 llama.cpp(TCP):

配置Exo (RDMA)llama.cpp (TCP)
单节点19.5 t/s20.4 t/s
2 节点26.2 t/s17.2 t/s
4 节点31.9 t/s15.2 t/s

测试环境:4 台 512GB M3 Ultra Mac Studio,Thunderbolt 5 全互联;数据来自 Jeff Geerling 的集群测试,仓库内同图见 docs/benchmarks/。官方同时声明:Tensor Parallel RDMA 把 TB5 链路上节点间延迟降低 99%;张量并行在 2 台/4 台设备上分别最高提速 1.8 倍/3.2 倍。注意 TCP 方案节点越多吞吐反而越低,RDMA 路径则随节点数继续提升。

进阶与扩展:基准、自定义模型与调优

常用集成

  • exo-bench — 测 prefill/decode 吞吐,对比不同放置方案 — 走/bench/chat/completions端点
  • HuggingFace 自定义模型 — 把 HF 上的模型拉进集群 —POST /models/add接口
  • 环境变量配置 — 存储/离线/隔离 —EXO_MODELS_DIRSEXO_OFFLINEEXO_LIBP2P_NAMESPACE

exo-bench 输出 prompt_tps、generation_tps 与峰值内存,可直接对比 ring 与 jaccl、pipeline 与 tensor 两类方案。

性能调优清单

  • 优先启用 RDMA → 节点间延迟降低 99%;前提是线缆全互联支持 TB5、各设备 macOS 版本完全一致
  • 网络好但算力弱的机器用--no-worker只挂协调层 → 避免参与推理拖累整体
  • 模型目录指到外挂 SSD(EXO_MODELS_DIRS)→ 系统盘空间紧张时的下载兜底
  • 加载前用/instance/previews预览全部可行放置 → 先选 pipeline 还是 tensor,再拉起实例

常见问题与坑

  • 节点互相发现不了?基本是不在同网段或命名空间不同。用EXO_LIBP2P_NAMESPACE统一命名空间,并确认同一二层网络。
  • RDMA 端口发现失败?官方明确 RDMA 口在不同 macOS 版本间可能互相不可见。检查所有设备版本完全一致(beta 版本号也要相同)。
  • 内存不够装不下模型?换 4-bit 量化版本或减少参与节点,用/instance/previews看各放置的memory_delta_by_node再决定。
  • Linux 想用 GPU?目前 Linux 仅 CPU 推理,GPU 支持开发中,可装mlx-cuda12/mlx-cuda13extra 试 CUDA 版 MLX。

以上端点细节见 docs/api.md。

适用边界

  • 适合:Apple Silicon 多机组网、跑单机内存装不下的大模型;给现有工具提供 OpenAI/Claude/Ollama 兼容 API 的本地推理替代;用闲置 Mac 做推理原型验证
  • 不适合:Linux 生产推理(GPU 支持尚在开发);追求最低首字延迟的线上服务——多机张量并行与单机高带宽方案相比没有延迟优势

官方接口文档见 docs/api.md,完整安装与 RDMA 配置以仓库 README 为准。

【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 13:50:12

AI Agent 权限隔离与网关设计:从原理到最小实现

如果你所在团队已经开始认真使用 AI Agent,大概率会遇到这样的场景:代码审查 Agent 读不到 GitLab 权限之外的仓库,却被配置成了可以访问生产数据库;文档助手本来只需要写周报,结果因为它挂在了同一个共享账号下&#…

作者头像 李华
网站建设 2026/9/5 18:05:24

manzana源码解析:iOS与电脑之间局域网文件互传方案

简介:这是一份面向iOS开发者与跨平台通信学习者的实战型源码资源,聚焦于解决电脑(Mac/Windows)与iPhone在局域网或USB连接下的双向文件互传问题,涵盖Bonjour服务发现、MobileDevice框架调用、HTTP轻量服务搭建及iOS沙盒…

作者头像 李华
网站建设 2026/9/8 4:45:08

STM32C5A3R定时器PWM输出:从CubeMX配置到动态调频调占空比

在 STM32 嵌入式开发中,PWM(脉冲宽度调制)是最常用的输出方式之一,而 STM32C5A3R 的定时器 PWM 输出往往成为开发者第一个需要同时控制频率和占空比的外设。无论是控制电机转速、调节 LED 亮度、驱动蜂鸣器,还是给电源…

作者头像 李华
网站建设 2026/9/4 12:33:43

Umi-OCR:免费离线OCR文字识别工具,截图、批量、PDF一次搞定

Umi-OCR:免费离线OCR文字识别工具,截图、批量、PDF一次搞定 【免费下载链接】Umi-OCR OCR software, free and offline. 开源、免费的离线OCR软件。支持截屏/批量导入图片,PDF文档识别,排除水印/页眉页脚,扫描/生成二维…

作者头像 李华
网站建设 2026/9/8 7:00:47

DeepSeek V4 Pro与Grok 4.6实战对比:API接入、评测与踩坑指南

最近 “DeepSeek V4 Pro 对战 Grok 4.6” 的话题刷了不少技术群。标题里加 “突袭”“夯爆” 多少有点营销味,但抛开这些,技术圈确实在关心一件更实际的事:新模型已经进入开发工具链,被真实用户调用,也开始出现负载和稳…

作者头像 李华