4台Mac Studio跑通Qwen3-235B:exo分布式AI集群从0到4节点RDMA实战
【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo
手上有2~4台Mac Studio,但单机的统一内存装不下235B参数的模型——这正是exo分布式AI集群解决的问题:把同一网络里的多台设备拼成一个推理集群,而且节点越多,模型跑得越快。目标很朴素:分布式大模型跑得稳,随时能对话。这篇教程从装好第一个节点到接上RDMA全程走一遍,无论是家庭实验室爱好者,还是想把现有工具指向本地大模型的开发者,都能照着操作。
从克隆到4节点:最简短的exo搭建教程
先确认系统:macOS Tahoe 26.2+ 或 Linux(Linux目前跑在CPU上,GPU支持开发中)。macOS上需要装Xcode(提供MLX编译用的Metal工具链),任何平台都要装好uv、node、rust。
搭建本身只有三条命令,每台机器都一样。先克隆仓库并进入根目录:
git clone https://gitcode.com/GitHub_Trending/exo8/exo cd exo克隆完成后,把内置仪表盘构建出来——它是一个静态页面,只需构建一次:
cd dashboard && npm install && npm run build && cd ..最后启动节点。命令跑起来后,仪表盘和API会一起监听在 http://localhost:52415:
uv run exo剩下的机器重复上面三步就行。全程不需要任何手动配置,只要在同一网络(或雷电网络)里,跑着exo的节点会自动发现彼此,合并成一个集群。每个节点都自带一份仪表盘和API,你打开其中任意一台,管理的是同一个集群。节点越多,总内存越大,推理还越快:4台M3 Ultra Mac Studio实测用张量并行跑Qwen3-235B(8-bit)达到31.9 tokens/s,2节点提速1.8倍,4节点提速3.2倍。
到这里,一个能用的exo分布式AI集群就跑通了。上面这个数字来自普通TCP的雷电桥接链路,RDMA接上之后优势才真正拉开。
exo RDMA配置:不能跳过的6步手动操作
RDMA(远程直接内存访问)让一台机器直接读写另一台的内存,不经过操作系统内核的网络协议栈,设备间通信延迟降低约99%。配合Thunderbolt 5的高带宽,这才是exo"加节点=变快"而不是"只是分摊内存"的原因。
这个能力随macOS 26.2提供,但需要手动开启一次。支持的机型:M4 Pro Mac Mini、M4 Max Mac Studio与MacBook Pro、M3 Ultra Mac Studio。集群里的每台机器都走一遍同样的6步:
- 关机;
- 按住电源按钮10秒,直到出现启动菜单;
- 选择"选项"进入恢复模式;
- 从"实用工具"菜单打开终端;
- 输入
rdma_ctl enable并回车; - 重启。
⚠️ 接线前注意三件事:RDMA集群里的机器必须两两直连(全网格,不经过交换机),线缆要支持TB5;Mac Studio上不要用以太网口旁边那个Thunderbolt 5口;所有机器的系统版本必须完全一致。开完之后exo会自动接管,日常使用不用再管。接好线后,仪表盘会显示集群拓扑和每个节点的内存、温度、功耗:
跑模型的两种方式:图形界面党与命令行党
图形界面党:在仪表盘里30秒拉起大模型
浏览器打开 http://localhost:52415 ,在右侧"INSTANCE"面板点LAUNCH INSTANCE,从下拉菜单选模型,选分片策略(Pipeline或Tensor),选通信方式(MLX Ring或MLX RDMA),设好最小节点数,点启动。仪表盘中央是集群拓扑和各节点实时状态,左侧带聊天区,模型加载完就能直接对话:
命令行/编程党:用REST API管理exo多节点AI推理
exo暴露了REST API,兼容OpenAI Chat Completions、Claude Messages、Ollama三种格式,现有客户端可以不改配置直接指向它。整个流程分四步,完整字段说明见API完整文档:
# 1. 预览某模型所有合法的分片方案 curl "http://localhost:52415/instance/previews?model_id=llama-3.2-1b" # 2. 创建实例(载荷取preview里的instance,参数见docs/api.md) curl -X POST http://localhost:52415/instance -H 'Content-Type: application/json' -d '{"instance": {...}}' # 3. 等待模型加载完成(SSE流,出现type=ready即就绪) curl -N "http://localhost:52415/instance/await?model_id=llama-3.2-1b"就绪之后就可以像平时一样发聊天请求;用完DELETE实例释放显存:
# 4. 发送聊天请求(OpenAI兼容格式) curl -N -X POST http://localhost:52415/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{"model": "llama-3.2-1b", "messages": [{"role": "user", "content": "Hello"}], "stream": true}' # 用完删除实例 curl -X DELETE http://localhost:52415/instance/<instance_id>调优与排坑:你最容易碰到的4个问题
拓扑怎么连?直连,RDMA场景必须全网格——每台机器的TB5口都直接接到其余机器上。走交换机或路由器既失去RDMA的意义,延迟也变差。仪表盘里的拓扑视图可以直接核对接线有没有接对。
张量并行还是管道并行?张量并行——把单层权重切到多台机器上同时算,适合计算密集型模型,是exo"加节点提速"的主要手段(4台机器最高3.2倍);管道并行——按层把模型切开逐段接力,适合单层权重已经超出单机内存的场景。exo会做拓扑感知的自动并行选择:根据每条链路的带宽和各节点资源的实时视图挑拆分方案,你也可以先用/instance/previews把每种合法方案列出来再决定。
能不能混设备?可以。exo按每台机器的实际能力分配任务,32GB的MacBook和512GB的Mac Studio能进同一个集群。唯一的硬约束是RDMA:必须TB5直连才生效,否则退回普通网络跑管道并行也没问题。
过热了怎么办?盯着仪表盘的温度和功耗指标,长任务时某节点持续偏热,就降低并发或再加一台机器分摊负载。大模型也可以放到高速外置SSD上,缩短加载时间:
EXO_MODELS_DIRS=/Volumes/ExternalSSD/exo-models uv run exo集群拓扑稳定之后,模型越大,越值得把负载摊到更多节点上。同样这套4节点配置,Kimi-K2-Thinking(原生4-bit)用张量并行也能稳定跑起来:
如果你手上正闲置着几台Mac,最快的尝试路径就是先跑通一台、打开仪表盘,再把第二台拉进来感受速度差——动手一次,比看十篇评测都值。
【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考