作者:Manjunath Janardhan

译者:Carl Cui

通常,本地部署 LLM 时需要给 LLM 找一个配置足够好的机器,那么有没有办法反其道而行之?如果你有一堆闲置的设备,能不能把它们的 CPU, GPU 和内存资源整合起来,运行一个它们单独无法处理的模型?作者 Manjunath Janardhan 借助开源工具 exo 在自己的两台 Mac 设备上把 Qwen3-Next-80B 运行了起来,可以达到每秒 70 ~ 80 个 token。

img

Mac Mini 的设置和负载快照,图片由 Manjunath Janardhan 制作

1. exo 是什么

exo 是一个由 Exo Labs 维护的开源项目,一句话概括:它将你所有的设备连接成个人 AI 集群,让你能够运行任何单台机器都无法容纳的模型。exo 的主要功能如下:

  • 自动设备发现 - 运行 exo 的设备可以在网络上自动相互发现,无需手动配置
  • 支持基于 Thunderbolt 的 RDMA - 在支持的硬件(M4 Pro/Max)上,能够在设备之间实现 99%的延迟降低
  • 拓扑感知自动并行 - exo 根据可用 RAM、CPU、GPU 资源以及节点之间的网络延迟,确定将模型在多个设备之间分割的最佳方式
  • Tensor 并行 - exo 支持模型分片,在 2 台设备上可加速 1.8 倍,在 4 台设备上可加速 3.2 倍
  • MLX 支持 - exo 使用 MLX 作为推理后端,并使用 MLX 分布式 进行分布式通信
  • 多 API 兼容性 - 兼容 OpenAI Chat Completions API、Claude Messages API、OpenAI Responses API 和 Ollama API,现有的工具和客户端可以无缝迁移
  • 自定义模型支持 - 从 HuggingFace hub 加载自定义模型,以扩展可用模型范围
  • 支持 54+ 个模型 - 从小型 Llama 模型到 671B DeepSeek 变体

2. Mac Mini M4 + MacBook Pro M4 Max

通过 exo,我配对了两台机器:

  • Mac Mini M4 - 16GB 统一内存,次要分区使用 9.8GB/16GB(61%)
  • MacBook Pro M4 Max - 64GB 统一内存,峰值时使用 55.1GB/64GB(86%)

这两台机器一起为集群提供了足够的运行资源,可以加载 Qwen3-Next-80B-A3B-Thinking-4bit(一个 44GB 的量化模型)。单独使用任何一台机器都无法舒适地处理。该模型以稳定的每秒 70–80 个 token(TPS)运行,第一个 token 的时间(TTFT)根据查询复杂度在 4 ~ 11 秒之间。Mac Mini 温度在峰值负载下达到 41 ~ 86°C,MacBook Pro 可以维持在较凉爽的状态,温度在 48 ~ 53°C 之间。

3. 入门指南

3.1 Mac 设备

对于 macOS,exo 提供了原生应用程序,下载DMG文件安装,它会自动运行并请求必要权限,不过需要 macOS Tahoe 26.2 或更高版本。

  • 从发布页面下载 EXO-latest.dmg
  • 将其复制到应用程序文件夹并启动
  • 在每个相同网络的其他机器上重复操作
  • 完成后节点会自动发现彼此,并在拓扑视图中显示出来

就这样简单。

3.2 Linux 和 Windows 设置

exo 官方指出,目前在 Linux 上仅支持 CPU 运行,GPU 支持在开发中

Linux 用户需要从源代码编译。首先,安装前置依赖:

  • uv - 用于 Python 依赖管理

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  • node - 用于构建控制面板,需要版本 18 或更高

    sudo apt update
    sudo apt install nodejs npm
    
  • rust - 用于构建 Rust 绑定,目前使用 nightly 版本

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    rustup toolchain install nightly
    

然后下载 exo 仓库,构建控制面板,并运行

# Clone exo
git clone https://github.com/exo-explore/exo

# Build dashboard
cd exo/dashboard && npm install && npm run build && cd ..

# Run exo
uv run exo

这启动了 exo 控制面板和 API,地址为 http://localhost:52415/

3.3 控制面板:集群可见性即用即现

内置的网页控制面板可以提供实时的集群拓扑视图。每个节点显示其当前的 CPU 使用率、温度、功耗和内存利用率。您可以查看哪个设备正在处理模型的哪一部分,这其实是拓扑感知自动并行引擎在起作用。

它会显示可组合的 RAM 和可以在您的 AI 集群中运行的模型:

img

可以运行 80GB(64GB + 16 GB)RAM 的模型,截图由 Manjunath Janardhan 完成

下载并运行你的第一个模型后,模型会根据每台机器的 RAM 在两台机器上分层:

img

exo 为聊天做准备,截图由 Manjunath Janardhan 完成

在推理过程中,你可以看到 Mac Mini 的 CPU 飙升到 97%,温度达到 86°C,功耗为 82W,而 MacBook Pro 则稳定在 8-13%之间。exo 足够智能,可以根据可用资源分配工作负载。仪表板中的 THINK 模式启用思维链推理,你可以在生成后展开或折叠。

img

exo 开始运行,截图由 Manjunath Janardhan 完成

3.4 兼容 OpenAI API

exo 在 http://localhost:52415/v1 上暴露了一个完全兼容 OpenAI 的 REST API。这意味着任何支持 OpenAI SDK 的工具、代理框架或应用程序都可以指向您的本地集群,无需更改代码。

使用 curl 的一个快速示例:

curl -N -X POST http://localhost:52415/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "mlx-community/Qwen3-Next-80B-A3B-Thinking-4bit",
    "messages": [
      {"role": "user", "content": "What is sky blue ?"}
    ],
    "stream": false
  }'

这是使 exo 对开发者强大的原因。你可以将其连接到 Agentic AI 应用、LangChain、LlamaIndex、你自己的 agentic 管道,或任何 OpenAI 兼容客户端。你的本地集群便作为一个私有推理服务。

4. 基于 Thunderbolt 5 的 RDMA

如果你有支持 Thunderbolt 5 的 M4 Pro 或 M4 Max 硬件,exo 支持 RDMA(远程直接内存访问),这是 macOS 26.2 中新增的功能。据报道,这能将节点间延迟降低高达 99%,达到与数据中心互联相当的性能。

我目前无法在我的设置中测试这一点(RDMA 未启用警告在我的截图中可见,因为我的机器使用 WiFi,而不是 Thunderbolt 5)。但 Jeff Geerling 的 4 * M3 Ultra Mac Studio 集群的基准测试显示 Qwen3–235B 以生产级速度运行。这就是这款工具可以达到的极限。

5. 实际性能数据

以下是我测试查询时的性能数据:

  • “为什么天空是蓝色的?” - TTFT:10,739 毫秒,TPS:每秒 75.2 个 token(平均 13.3 ms 一个 token)
  • “用 Python 编写贪吃蛇游戏” - TTFT:4,049 毫秒,TPS:每秒 69.1 个 token
  • 常规推理:跨会话持续保持每秒 68 ~ 75 token

对于完全在本地硬件上运行、零云成本的 80B 参数推理模型,这些数字确实令人印象深刻。THINK 模式下,TTFT 增加了 ,但启用该模式后,模型输出质量明显更强。

6. 写在最后

exo 是我遇到的最实用的开源 AI 工具之一。入门门槛非常低,目前主要是在 Mac 上,而上限则非常高。在家里运行一个能够思考的 80B 模型,分布式跨越同一 WiFi 网络上的两台笔记本电脑,两年前听起来还像是科幻小说。

如果你正在构建 agentic AI system、运行本地实验,或者只是好奇当硬件协同工作时能做什么,不妨试试 exo。

原文链接

I Turned Two Macs Into an 80B AI Cluster for Free — Exo Is the Open-Source Tool You’ve Been Waiting For