
在家中使用日常设备运行自己的AI集群。
商品编号: GIS78467447
exo 将您的所有设备连接成一个AI集群。
exo 将您的所有设备连接成一个AI集群。exo不仅能够运行大于单个设备容量的模型,而且通过 对Thunderbolt的RDMA零日支持,随着添加更多设备,模型运行速度更快。
运行exo的设备会自动相互发现,无需任何手动配置。每个设备提供一个API和一个用于与集群交互的仪表板(运行在 http://localhost:52415)。
有两种运行exo的方式:
先决条件:
brew (macOS上的简单包管理)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
uv (用于Python依赖管理)
macmon (用于Apple Silicon上的硬件监控)
node (用于构建仪表板)
brew install uv macmon node
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
这将在 http://localhost:52415/ 启动exo仪表板和API
exo提供了一个可以在Mac后台运行的macOS应用程序。
该macOS应用程序需要macOS Tahoe 26.2或更高版本。
在此处下载最新版本:EXO-latest.dmg。
应用程序将请求权限以修改系统设置并安装新的网络配置文件。我们正在对此进行改进。
如果您更喜欢通过API与exo交互,这里有一个创建小型模型实例(mlx-community/Llama-3.2-1B-Instruct-4bit)、发送聊天完成请求和删除实例的示例。
1. 预览实例部署
/instance/previews 端点将预览模型的所有有效部署位置。
curl "http://localhost:52415/instance/previews?model_id=llama-3.2-1b"
示例响应:
{
"previews": [
{
"model_id": "mlx-community/Llama-3.2-1B-Instruct-4bit",
"sharding": "Pipeline",
"instance_meta": "MlxRing",
"instance": {...},
"memory_delta_by_node": {"local": 729808896},
"error": null
}
// ...possibly more placements...
]
}
这将返回该模型的所有有效部署位置。选择您喜欢的部署位置。
要选择第一个,可以通过管道传递给 jq:
curl "http://localhost:52415/instance/previews?model_id=llama-3.2-1b" | jq -c '.previews[] | select(.error == null) | .instance' | head -n1
2. 创建模型实例
向 /instance 发送POST请求,在 instance 字段中包含您想要的部署位置(完整负载必须与 CreateInstanceParams 中的类型匹配),您可以从步骤1中复制:
curl -X POST http://localhost:52415/instance \
-H 'Content-Type: application/json' \
-d '{
"instance": {...}
}'
示例响应:
{
"message": "Command received.",
"command_id": "e9d1a8ab-...."
}
3. 发送聊天完成请求
现在,向 /v1/chat/completions 发送POST请求(与OpenAI API格式相同):
curl -N -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": "What is Llama 3.2 1B?"}
],
"stream": true
}'
4. 删除实例
完成后,通过实例ID删除实例(通过 /state 或 /instance 端点查找):
curl -X DELETE http://localhost:52415/instance/YOUR_INSTANCE_ID
其他有用的API端点:
curl http://localhost:52415/modelscurl http://localhost:52415/state更多详细信息,请参阅 src/exo/master/api.py 中的API类型和端点。
在macOS上,exo使用GPU。在Linux上,exo目前运行在CPU上。我们正在扩展硬件加速器支持。如果您希望支持新的硬件平台,请搜索现有的功能请求并点赞,以便我们了解哪些硬件对社区很重要。
请参阅 CONTRIBUTING.md 了解如何为exo做出贡献的指南。
exo.zip