三步装好 exo:把几台电脑变成本地 AI 集群,免踩坑
【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo
exo 能把几台 Mac 或 Linux 机器自动组成本地 AI 集群,跑单台设备装不下的模型。它自动发现设备、自动切分模型,还自带一个网页聊天面板。读完这篇文章,你装好环境、装好依赖,浏览器打开http://localhost:52415就能和模型对话;家里再多开一台,它会自动加入集群。
开工之前
先把门槛摆清楚,差一项补一项,别装到一半卡住:
- ☑一台 Apple Silicon Mac(或 Linux 电脑)—— macOS 下走 GPU 是主力路径;Linux 目前以 CPU 推理为主,能跑但偏慢。
- ☑16GB 内存起步—— 试跑 1B 小模型约 0.7GB,16GB 机器从容;机器越多总内存越高,模型就越大。
- ☑10GB 以上空闲磁盘—— 模型权重默认下载到
~/.exo/models(Linux 在~/.local/share/exo/models)。 - ☑局域网互通—— 组集群的设备要在同一网络、能互相访问。
- ☑uv—— 管理 Python 依赖和虚拟环境。
- ☑Rust(nightly 工具链)—— exo 的网络层是 Rust 写的,安装时要本地编译绑定。
- ☑Node.js 18+—— 编译随包附带的 Svelte 前端面板。
最快安装路径
1. 装好三个工具
macOS(先装 Homebrew):
brew install uv node curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rustup toolchain install nightlyLinux(Ubuntu/Debian 为例):
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 nightly装完uv --version、node --version、rustc --version都能输出版本号即可。
2. 拉取 exo 源码
git clone https://gitcode.com/GitHub_Trending/exo8/exo cd exo3. 编译前端面板
cd dashboard && npm install && npm run build && cd ..构建产物落在dashboard/build/,exo 启动时由后端直接托管,跳过这步面板会是空白页。
4. 启动 exo
uv run exouv会按 pyproject.toml 声明的要求自动准备 Python 3.13 环境、编译 Rust 绑定,首次启动会慢几分钟,属正常现象。
更省事的路线只有一条:Mac 上直接brew install --cask exo装官方应用,它负责网络和后台运行,免去上面的命令行步骤,细节见 README.md 的 macOS App 一节。
跑通第一次
保持uv run exo运行,打开http://localhost:52415。你的这台机器会作为一个节点出现在面板里。
在面板顶部选模型,挑个小的:Llama-3.2-1B-Instruct-4bit(约 730MB),等下载和加载完成后发一句"你好"。
看到模型流式吐出回答,就跑通了。想组集群,在第二台设备上重复第 2、3、4 步,两台都会自动发现并出现在面板拓扑里,无需任何手动配对。
排错速查 🔍
- 症状:终端报
cargo: command not found或 Rust 绑定编译失败 → 原因:没装 nightly 工具链(项目 rust/exo_rs/ 依赖 nightly)→ 修复:rustup toolchain install nightly。 - 症状:端口 52415 被占用、启动报端口冲突 → 原因:上一个 exo 进程还在跑 → 修复:
lsof -i :52415找到 PID 后结束它,或另开uv run exo --api-port 52416。 - 症状:面板空白、请求 404 → 原因:跳过了前端构建 → 修复:
cd dashboard && npm run build && cd ..后重启。 - 症状:模型下载极慢或失败 → 原因:网络到 HuggingFace 不通畅 → 修复:稍后重试(断点续传);离线环境提前把模型放进
~/.exo/models,再EXO_OFFLINE=true uv run exo启动。 - 症状:两台机器都启动了,却互相看不到 → 原因:设备不在同一网络,或用了不同的发现命名空间 → 修复:确认同网段互通,且两边都用默认
--namespace启动。
接下来可以玩什么
- docs/api.md —— 完整 API 文档:Chat Completions、Claude Messages、Responses、Ollama 四种格式,把你现有的客户端直接指过来。
- bench/exo_bench.py —— 压测脚本:
uv run bench/exo_bench.py --model Llama-3.2-1B-Instruct-4bit测一下自己的设备跑到多少 tok/s。 - src/exo/shared/models/model_cards.py —— 模型卡加载逻辑,想跑仓库没收录的模型就从这里入手。
- PLATFORMS.md —— 平台支持路线图:哪些硬件在全力维护,Linux GPU 支持排在哪一档。
装到这一步,剩下的就是把第二、第三台设备拉进同一个网络——集群越大,能跑的模型越大。
【免费下载链接】exoRun frontier AI locally.项目地址: https://gitcode.com/GitHub_Trending/exo8/exo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考