返回首页
EXO
1 / 4
数字商品
有货
免费

EXO

在家中使用日常设备运行自己的AI集群。

商品编号: GIS78467447

商品描述

exo 将您的所有设备连接成一个AI集群。

详细介绍

exo logo

exo:在家中使用日常设备运行自己的AI集群。由 exo labs 维护。

Discord X License: Apache-2.0


exo 将您的所有设备连接成一个AI集群。exo不仅能够运行大于单个设备容量的模型,而且通过 对Thunderbolt的RDMA零日支持,随着添加更多设备,模型运行速度更快。

功能

  • 自动设备发现:运行exo的设备自动相互发现 - 无需手动配置。
  • Thunderbolt上的RDMA:exo提供了 对Thunderbolt 5的RDMA零日支持,实现设备间99%的延迟减少。
  • 拓扑感知自动并行:exo根据设备拓扑的实时视图,确定将模型分割到所有可用设备的最佳方式。它考虑了设备资源和每个链接之间的网络延迟/带宽。
  • 张量并行:exo支持分片模型,在2个设备上最高可实现1.8倍加速,在4个设备上最高可实现3.2倍加速。
  • MLX支持:exo使用 MLX 作为推理后端,使用 MLX分布式 进行分布式通信。

基准测试

在4台M3 Ultra Mac Studio上使用张量并行RDMA运行Qwen3-235B(8位) 基准测试 - 在4台M3 Ultra Mac Studio上使用张量并行RDMA运行Qwen3-235B(8位)

来源: Jeff Geerling: Mac Studio上的15TB显存 – Thunderbolt 5上的RDMA

在4台M3 Ultra Mac Studio上使用张量并行RDMA运行DeepSeek v3.1 671B(8位) 基准测试 - 在4台M3 Ultra Mac Studio上使用张量并行RDMA运行DeepSeek v3.1 671B(8位)

来源: Jeff Geerling: Mac Studio上的15TB显存 – Thunderbolt 5上的RDMA

在4台M3 Ultra Mac Studio上使用张量并行RDMA运行Kimi K2 Thinking(原生4位) 基准测试 - 在4台M3 Ultra Mac Studio上使用张量并行RDMA运行Kimi K2 Thinking(原生4位)

来源: Jeff Geerling: Mac Studio上的15TB显存 – Thunderbolt 5上的RDMA


快速开始

运行exo的设备会自动相互发现,无需任何手动配置。每个设备提供一个API和一个用于与集群交互的仪表板(运行在 http://localhost:52415)。

有两种运行exo的方式:

从源代码运行(Mac & Linux)

先决条件:

  • 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

macOS App

exo提供了一个可以在Mac后台运行的macOS应用程序。

exo macOS App - running on a MacBook

该macOS应用程序需要macOS Tahoe 26.2或更高版本。

在此处下载最新版本:EXO-latest.dmg

应用程序将请求权限以修改系统设置并安装新的网络配置文件。我们正在对此进行改进。


使用API

如果您更喜欢通过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/models
  • 检查实例ID和部署状态:curl http://localhost:52415/state

更多详细信息,请参阅 src/exo/master/api.py 中的API类型和端点。


硬件加速器支持

在macOS上,exo使用GPU。在Linux上,exo目前运行在CPU上。我们正在扩展硬件加速器支持。如果您希望支持新的硬件平台,请搜索现有的功能请求并点赞,以便我们了解哪些硬件对社区很重要。


贡献

请参阅 CONTRIBUTING.md 了解如何为exo做出贡献的指南。

下载内容

1 个文件·1.57 MB

exo.zip

ZIP
1.57 MB