💡 从一个真实需求说起
手里有几台吃灰的Mac Mini或MacBook,想跑个70B参数的Llama模型做测试,结果发现单台设备内存根本不够用。买专业GPU?预算直接奔着五位数去了。能不能把这些闲置设备"拼"起来,组成一个能用的AI集群?
开源项目 exo 给出了一个实用的解决方案:把你的旧设备变成分布式AI推理集群,不需要复杂配置,设备即插即用。
🎯 exo是什么
exo 是一个开源的分布式AI推理框架,让你用家里的多台设备(Mac、iPhone、iPad)组建AI集群。几个主要特点:
- P2P对等架构:没有主节点,设备之间直接连接
- 自动设备发现:局域网内自动识别可用设备
- 智能模型分片:大模型自动切分到多台设备
- 低延迟通信:支持 Thunderbolt 5 RDMA,延迟降低99%
技术栈方面:推理引擎用的是 MLX(针对 Apple Silicon 优化)或 tinygrad,后端主要是 Python 写的(占61.6%),关键的 RDMA 驱动部分用 Rust 实现(7.1%),前端管理界面用 Svelte 搭建,网络层靠 mDNS 做服务发现加 P2P 消息传递。
🏗️ 架构设计:为什么不需要主节点
传统分布式系统(比如 Kubernetes)都是 Master-Worker 那一套,得配置控制平面、负载均衡器、服务发现组件。exo 反其道而行:
传统架构:Master → Worker1, Worker2, Worker3
↓ 主节点挂了就全完蛋
exo架构:Device1 ⟷ Device2 ⟷ Device3
↓ 设备随时加入随时退出
具体怎么做的:
- 服务发现:用 mDNS(就是 AirDrop 那套机制),设备一启动就自动广播自己
- 模型分片:按层切分模型,70B模型分4片的话,每台设备就加载17.5B
- 张量传递:环形拓扑结构,激活值在设备间依次流转
- RDMA 加速:Thunderbolt 5 能跑到120Gbps 带宽,延迟不到1ms
🚀 实战部署:3分钟搭建集群
环境要求:
- macOS 26.2+(Tahoe 版本)
- 几台 Mac 在同一个局域网
- 每台设备至少16GB 内存(跑70B 模型最好准备4台)
部署步骤:
# 1. 每台设备先装个依赖
brew install uv
# 2. 拉代码
git clone https://github.com/exo-explore/exo
cd exo
# 3. 每台设备分别启动
uv run exo
# 4. 浏览器打开管理界面
open http://localhost:52415
实际跑起来是什么样:
集群会自动找到所有在线设备,模型自动分片加载到各个设备上,Dashboard 能看到实时数据:吞吐量45 tokens/sec,延迟12ms。
云栈社区之前测过,2台 M2 Mac Mini 跑 Llama-3-8B,性能直接提升1.8倍。
📊 技术细节
1. 模型分片算法
# 简化版代码,实际更复杂
def shard_model(model, devices):
layers = model.get_layers()
shard_size = len(layers) // len(devices)
for i, device in enumerate(devices):
start = i * shard_size
end = start + shard_size
device.load_layers(layers[start:end])
每台设备只装一部分模型层,推理的时候数据在设备间流转完成计算。
2. P2P 通信怎么玩
发现阶段:mDNS 广播 → 建立 TCP 连接 → 交换设备信息
推理阶段:Token 输入 → Device1 算 → 传激活值 → Device2 算 → 出结果
容错处理:设备掉线了自动重新分片,跟 Kubernetes 的 Pod 重调度差不多意思
3. RDMA 为什么快
传统网络:应用层 → TCP → IP → 网卡(10-50ms)
RDMA 直通:应用层 → 网卡内存(不到1ms)
Thunderbolt 5 原生支持 RDMA,不用额外买硬件。
💼 适合什么场景
| 场景 |
以前怎么办 |
用 exo |
| 小团队做 AI 原型 |
租云 GPU,2美元/小时 |
用现有设备,不花钱 |
| 边缘 AI 部署 |
搭 Kubernetes 集群 |
零配置 P2P |
| 教学研究 |
单机跑小模型 |
多设备跑大模型 |
成本算一下:
- 4台二手 Mac Mini(M2 16GB):2000美元左右
- 一张 H100 GPU:3万美元起
- 性能差3-5倍,但教学和原型测试完全够用
🔧 运维要注意什么
exo 虽然零配置,但生产环境还是得盯着:
该看的指标:
- 设备在线状态
- 分片分布是否均衡
- 网络延迟(RDMA vs TCP)
- 内存用了多少
遇到问题怎么办:
- 设备掉线:自动重新分片,30秒内恢复
- 网络抖动:RDMA 自动重连
- 内存不够:降级用 CPU 推理或减少分片数
建议接 Prometheus 采集指标,Grafana 做监控面板。想深入了解云原生监控,可以看看运维 / DevOps / SRE 学习路径( https://yunpan.plus )。
🤔 有什么局限
目前的限制:
- 只支持 Apple Silicon(M 系列芯片)
- 必须在局域网(mDNS 协议限制)
- 大模型还是得多台设备(单台跑不了70B)
后续可能会做:
- 支持 NVIDIA GPU(基于 tinygrad)
- 跨网段连接(NAT 穿透)
- 模型量化优化(减少设备数量)
📝 总结一下
exo 把数据中心那套分布式推理搬到了家里,几个亮点:
- 去中心化架构,没有单点故障,配置简单
- RDMA 硬件直通,消费级设备也能跑出接近专业 HPC 的性能
- 自动发现、自动分片、自动容错,基本不用管
对运维工程师来说,这是个学习分布式系统设计的好案例;对 AI 开发者来说,这是个低成本验证大模型的实用工具。
关注《云栈运维云原生》,一起聊聊云原生技术和开源项目!
🔗 项目资源
- GitHub 仓库:
https://github.com/exo-explore/exo
- Python 学习:
https://yunpan.plus/f/26
标签:#exo #Github #分布式AI #云原生 #开源项目 #MLX #P2P架构