exo 介绍
了解项目的详细信息和使用方法
忘掉昂贵的NVIDIA GPU吧,将你现有的各种设备统一成一个强大的GPU:iPhone、iPad、Android、Mac、Linux,几乎任何设备都可以!
参与
exo 是 实验性 软件,早期版本预计会有bug。请创建问题报告,这样我们可以进行修复。exo labs 团队会努力快速解决这些问题。
我们也欢迎社区贡献。我们在这个表格中列出了一些悬赏任务。
功能特点
广泛的模型支持
exo 支持LLaMA模型 (MLX 和 tinygrad) 以及其他流行的模型。
动态模型分区
exo 会根据当前的网络拓扑和设备资源情况优化分割模型,让你能够在任何单一设备上运行更大的模型。
自动设备发现
exo 将使用最佳方法自动发现其他设备,无需手动配置。
ChatGPT兼容API
exo 提供了一个ChatGPT兼容的API来运行模型。你只需在你的应用中做一行代码的改动,就可以使用exo在你自己的硬件上运行模型。
设备平等
与其他分布式推理框架不同,exo 不采用主从架构。相反,exo 设备之间是点对点连接的。只要某个设备连接在网络中的某个地方,就可以用来运行模型。
exo 支持不同的分区策略来跨设备分割模型。默认的分区策略是环形内存加权分区,该策略会在一个环形拓扑中运行推理,每个设备根据其内存大小运行一定数量的模型层。
安装
目前推荐的安装exo的方法是从源码安装。
先决条件
需要Python>=3.12.0,因之前版本存在asyncio问题。
从源码安装
sh1 2 3git clone https://github.com/exo-explore/exo.git 4cd exo 5pip install . 6# 或者,使用虚拟环境 7source install.sh
疑难解答
- 如果在Mac上运行,MLX 有一个安装指南和故障排除步骤
文档
在多个MacOS设备上的示例用法
设备1:
sh1python3 main.py
设备2:
sh1python3 main.py
就这样!无需配置,exo 会自动发现其他设备。
使用带有对等句柄的exo库是访问运行在exo上的模型的本地方式。参见这个Llama 3的示例。
exo 还在http://localhost:8000上启动一个ChatGPT兼容的API端点。注意:目前这仅支持尾节点(即被选为环形拓扑末端的节点)。示例请求:
sh1curl http://localhost:8000/v1/chat/completions \ 2 -H "Content-Type: application/json" \ 3 -d '{ 4 "model": "llama-3-8b", 5 "messages": [{"role": "user", "content": "exo的意义是什么?"}], 6 "temperature": 0.7 7 }'
调试
使用DEBUG环境变量(0-9)启用调试日志。
sh1DEBUG=9 python3 main.py
已知问题
- 🚧 由于库发展迅速,iOS 实现已经落后于Python。我们决定目前不发布有bug的iOS版本,以免因代码过时而收到大量GitHub问题。我们正在努力解决这个问题,并会在准备好时宣布。如果你现在需要访问iOS实现,请发送邮件至[email protected],提供你的GitHub用户名并解释你的使用场景,你将获得GitHub上的访问权限。
推理引擎
exo 支持以下推理引擎: