综合介绍
Exo是一个开源项目,旨在利用日常设备(如iPhone、iPad、Android、Mac、Linux等)运行自己的AI集群。通过动态模型分区和自动设备发现,Exo能够将多个设备统一成一个强大的GPU,支持多种模型如LLaMA、Mistral、LlaVA、Qwen和Deepseek。Exo还提供了一个ChatGPT兼容的API,使用户可以轻松地在自己的硬件上运行模型。
功能列表
- 宽泛的模型支持:支持LLaMA、Mistral、LlaVA、Qwen和Deepseek等多种模型。
- 动态模型分区:根据当前网络拓扑和设备资源,优化模型分区。
- 自动设备发现:自动发现其他设备,无需手动配置。
- ChatGPT兼容API:提供一个兼容ChatGPT的API,便于在自己的硬件上运行模型。
- 设备平等:设备之间采用点对点连接,不使用主从架构。
- 多种分区策略:支持环形内存加权分区等多种分区策略。
使用帮助
使用帮助
安装流程
- 准备工作:
- 确保Python版本>=3.12.0。
- 如果使用Linux并支持NVIDIA GPU,请安装NVIDIA驱动、CUDA工具包和cuDNN库。
- 从源码安装:
- 克隆项目:
git clone https://github.com/exo-explore/exo.git
- 进入项目目录:
cd exo
- 安装依赖:
pip install -e .
- 或者使用虚拟环境安装:
source install.sh
- 克隆项目:
功能操作流程
- 运行模型:
- 在多台MacOS设备上运行示例:
- 设备1:
exo
- 设备2:
exo
- Exo会自动发现其他设备并启动一个类似ChatGPT的WebUI(由tinygrad tinychat提供支持),地址为
http://localhost:52415
。
- 设备1:
- 在单台设备上运行示例:
- 使用命令:
exo run llama-3.2-3b
- 使用自定义提示符:
exo run llama-3.2-3b --prompt "What is the meaning of exo?"
- 使用命令:
- 在多台MacOS设备上运行示例:
- 模型存储:
- 默认情况下,模型存储在
~/.cache/huggingface/hub
。 - 可以通过设置环境变量
HF_HOME
来更改模型存储位置。
- 默认情况下,模型存储在
- 调试:
- 使用环境变量
DEBUG
(0-9)启用调试日志:DEBUG=9 exo
- 对于tinygrad推理引擎,使用单独的调试标志
TINYGRAD_DEBUG
(1-6):TINYGRAD_DEBUG=2 exo
- 使用环境变量
- 格式化代码:
- 使用
yapf
格式化代码:- 安装格式化要求:
pip3 install -e '.[formatting]'
- 运行格式化脚本:
python3 format.py ./exo
- 安装格式化要求:
- 使用
使用方法
- 启动EXO:
exo
EXO将自动发现并连接其他设备,无需额外配置。
- 运行模型:
- 使用默认模型:
exo run llama-3.2-3b
- 自定义提示:
exo run llama-3.2-3b --prompt "EXO的意义是什么?"
- API使用示例:
- 发送请求:
bash
curl http://localhost:52415/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3.2-3b",
"messages": [{"role": "user", "content": "EXO的意义是什么?"}],
"temperature": 0.7
}'
- 发送请求:
性能优化
- MacOS用户:
- 升级到最新版本的MacOS。
- 运行
./configure_mlx.sh
优化GPU内存分配。
常见问题
- SSL错误:在某些MacOS/Python版本上,证书未正确安装。运行以下命令修复:
/Applications/Python 3.x/Install Certificates.command
- 调试日志:启用调试日志:
DEBUG=9 exo