本地多设备AI集群零门槛起步:exo 安装、排错与首次跑通全清单
【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo
如果你手上有好几台闲置的设备——几台 Mac、一台工作站,甚至树莓派——exo 能把它们拼成一个 AI 集群:每台机器各分担模型的一片,自动发现、自动分片,跑单个设备根本塞不下的前沿大模型。装完并跑通之后,你得到的不只是命令行工具,而是一个内置 Web 控制台:集群拓扑、模型下载、聊天界面全在一个页面里,默认地址http://localhost:52415。这篇文章只回答三个问题:怎么装、卡住了怎么修、跑起来了怎么确认。
开工前自检清单:exo 运行前置条件核对表
动手之前,先花一分钟对照下表打勾。大部分安装翻车都栽在这一步,而不是后面的命令本身。
| 项目 | 要求 | 说明 |
|---|---|---|
| 操作系统 | macOS(Apple Silicon)优先 | Tier 1 支持;Linux 目前仅 CPU 可用,Windows 在路线图上 |
| 内存 | 集群总和能装下模型 | 例如 Llama 3.1 8B fp16 约需 16GB 总量,两台 8GB 设备即可 |
| Python | 3.13 | 以仓库当前版本为准:pyproject.toml声明requires-python = "==3.13.*",uv 会自动管理,不用你手动装 |
| uv | 已安装 | Python 依赖管理器,Mac 用brew install uv,Linux 用官方安装脚本 |
| Node.js | 18+ | 构建 dashboard 前端用 |
| Rust | nightly 工具链 | 项目自带 Rust 网络绑定(rust/目录)需要现场编译 |
支持的具体硬件型号可以看仓库里的 PLATFORMS.md:当前 Tier 1 测试的是 M3 Ultra Mac Studio、M4 Pro Mac Mini、M5 / M4 Max MacBook Pro。清单全绿再往下走,能省掉 80% 的排错时间。
最短安装路径:从 clone 到启动的三步命令
不管 Mac 还是 Linux,主干流程都一样:拿代码、构建 dashboard、运行。
git clone https://gitcode.com/GitHub_Trending/exo8/exo cd exo/dashboard && npm install && npm run build && cd .. uv run exouv run exo第一次执行时会自动创建虚拟环境、安装依赖并编译 Rust 绑定,这一步比较慢,属于正常现象。如果你用的是 Nix,README 里还有一条捷径nix run .#exo,可以跳过大部分手动步骤(需要先在/etc/nix/nix.conf里配置 trusted-users 和 flakes,见 README.md)。
跑起来后终端会开始持续输出日志,浏览器打开http://localhost:52415就是控制台。到这里主干流程结束,下面按你的硬件分头走。
分平台落地:各硬件上 exo 安装与启动的差异点
Apple Silicon Mac:macOS App 一键安装与 RDMA 开关
Mac 上你有两条路。第一条是官方 macOS App,零命令行:brew install --cask exo下载 dmg 安装,应用在菜单栏驻留,要求 macOS Tahoe 26.2 或更高版本。首次启动会请求修改系统设置并安装一个网络 profile,这是 RDMA 功能需要的,点允许即可。卸载走应用内 菜单栏图标 → Advanced → Uninstall,或者执行仓库里的 app/EXO/uninstall-exo.sh。
第二条就是上面的源码路径。Mac 源码安装有两个 Linux 没有的坑:
- 需要 Xcode 提供 Metal 工具链,编译 MLX 时绕不开它;
- 硬件监控依赖
macmon,要用仓库指定的 commit 版本安装(Homebrew 里的 0.6.1 在 Apple M5 上会崩,具体命令见 CONTRIBUTING.md)。
如果你有多台带 Thunderbolt 5 的 Mac(M4 Pro Mac Mini、M4 Max Mac Studio、M3 Ultra Mac Studio 等),强烈建议顺手把 RDMA 打开:关机后长按电源键 10 秒进恢复模式,在 Utilities → Terminal 里执行rdma_ctl enable,重启。exo 会自动接管剩下的事。注意三个前提:集群内设备两两直连、线缆支持 TB5、所有机器 macOS 版本号必须完全一致(连 beta 号都要一样)。
NVIDIA GPU 与 Linux 主机:先认清现状再动手
先说结论避免你白折腾:exo 当前在 Linux 上跑在 CPU 上,NVIDIA GPU 支持(CUDA)还在开发中,pyproject.toml里预留的mlx-cuda12/mlx-cuda13扩展就是为此准备的,但现阶段别指望它给你加速。
如果你就是想先跑起来,Linux 的安装命令和主干流程一致,只需把工具链装齐:
sudo apt update && sudo apt install nodejs npm curl -LsSf https://astral.sh/uv/install.sh | sh curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup toolchain install nightlyLinux 用户还有两个 Mac 上没有的行为要知道:文件位置遵循 XDG 规范,模型默认在~/.local/share/exo/models,日志在~/.cache/exo/exo_log/;另外如果你的机器只有好网络没有算力,可以用uv run exo --no-worker把它拉进集群当纯协调节点。
纯 CPU 与轻量设备:当协调节点加入集群
内存小、算力弱的设备(比如树莓派)不要硬扛推理,让它们跑--no-worker模式接入集群即可——集群自动发现机制不需要任何手动配对,每台设备各自uv run exo,同网段的节点会自己汇合。模型怎么切、切给谁,由 exo 根据实时拓扑和设备资源自动决定,你不需要配置。
第一次成功长什么样:exo 首启命令与成功判定标准
启动命令就是最普通的:
uv run exo成功的判定标准很具体,别凭感觉:
- 终端日志:能看到节点启动信息,且 API 服务开始监听。想看更详细的初始化过程,加
-v(再详细一层是-vv)。 - 浏览器:打开
http://localhost:52415,出现 dashboard 页面且集群视图里能看到本机节点,即代表装通了。 - API 冒烟测试:新开一个终端,发一条最小请求,模型能吐字就是真跑通了:
curl -X POST http://localhost:52415/v1/chat/completions \ -H 'Content-Type: application/json' \ -d '{"model": "mlx-community/Llama-3.2-1B-Instruct-4bit", "messages": [{"role": "user", "content": "hi"}], "stream": false}'注意模型权重是在第一次使用时按需下载的,首次对话前会有一段下载时间,进度在 dashboard 里可见。
排错速查:exo 安装与启动高频问题修复
症状 1:uv run exo报 Python 版本不符或直接退出原因:项目锁死了 Python 3.13(requires-python = "==3.13.*"),系统里的其他版本不参与安装。 修复:删掉旧环境让 uv 重建,uv 会自己下载对应解释器,不需要你手动装 Python:
rm -rf .venv && uv run exo症状 2:uv run卡在 Rust 绑定编译,或提示找不到 cargo / nightly原因:rust/exo_rs的 PyO3 绑定要现场编译,工具链没装全。 修复:
rustup toolchain install nightly rustup default nightly装好后重新uv run exo,它会自动续上编译。
症状 3:http://localhost:52415打不开或页面空白原因:dashboard 前端没构建。npm install && npm run build必须在uv run exo之前完成过一次,且 Node 版本要 18+。 修复:
node --version cd dashboard && npm install && npm run build && cd ..症状 4:两台 Mac 互相发现不了,或 RDMA 不生效原因:大概率是 macOS 版本不一致(RDMA 端口在不同版本间无法互认)、线缆不支持 TB5、或没走 TB5 直连。 修复:先确认所有设备sw_vers输出完全一致;换 TB5 线缆直连;Mac Studio 避开网口旁边那个 TB5 端口。仍不行时按 README 的 Enabling RDMA 章节重新走一遍恢复模式流程。
症状 5:模型下载慢或超时原因:权重从 Hugging Face 拉取,网络质量决定一切。 修复:配置代理后重启,或换个网络时段;已下载模型的存放位置由EXO_DEFAULT_MODELS_DIR控制(默认~/.exo/models,Linux 为~/.local/share/exo/models),想放到外置 SSD 用EXO_MODELS_DIRS=/Volumes/ExternalSSD/exo-models uv run exo,完整变量表见 README.md 的 Environment Variables 一节。
延伸阅读:exo 仓库内文档导航
- README.md——快速开始、环境变量全表、四套兼容 API(OpenAI / Claude / Ollama)的调用示例
- docs/api.md——完整 API 端点参考
- CONTRIBUTING.md——从源码运行的前置依赖与模型卡片格式
- bench/exo_bench.py——集群 prefill/decode 速度压测工具,用法见 bench/METHODOLOGY.md
清单齐了就敲uv run exo,看到 dashboard 亮起的那一刻,你的设备们就已经是一个集群了。
【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考