exo - 使用日常设备运行AI集群
文章目录
- 一、关于 exo
- 特点
- 1、广泛的模型支持
- 2、动态模型分区
- 3、自动设备发现
- 4、ChatGPT兼容API
- 5、设备平等
- 二、安装
- 先决条件
- 从源码安装
- 故障排除
- 性能
- 三、使用
- 1、在多个macOS设备上的示例使用
- 设备1:
- 设备2:
- 2、多个异构设备(MacOS+Linux)上的示例用法
- 设备1(MacOS):
- 设备2(Linux):
- 四、调试
- 已知问题
- 推理引擎
- 网络模块
- 五、其它
一、关于 exo
在家中使用日常设备运行自己的AI集群📱💻🖥️⌚
exo:在家中使用日常设备运行您自己的AI集群。由 exolabs维护。
忘掉昂贵的NVIDIA GPU,将您现有的设备统一到一个强大的GPU中:iPhone、iPad、Android、Mac、Linux,几乎任何设备!
- github : https://github.com/exo-explore/exo
- discord | telegram| X
- Tests : https://dl.circleci.com/status-badge/redirect/circleci/TrkofJDoGzdQAeL6yVHKsg/4i5hJuafuwZYZQxbRAWS71/tree/main
- License: GPL v3
特点
1、广泛的模型支持
exo支持不同的模型,包括LLaMA(MLX和tinygrad)、Mistral、LlaVA、Qwen和Deepsearch。
2、动态模型分区
exo根据当前的网络拓扑和可用的设备资源优化地分割模型。这使您能够运行比在任何单个设备上都能运行的更大的模型。
3、自动设备发现
exo将使用可用的最佳方法自动发现 其他设备。零手动配置。
4、ChatGPT兼容API
exo为运行模型提供了一个ChatGPT兼容的API。使用exo在您自己的硬件上运行模型只是应用程序中的一行更改。
5、设备平等
与其他分布式推理框架不同,exo不使用主工架构,相反,exo设备连接p2p,只要一个设备连接到网络的某个地方,就可以用来运行模型。
exo支持不同的分区策略来跨设备拆分模型。默认分区策略是环形内存加权分区。这在一个环中运行推理,其中每个设备运行与设备内存成比例的模型层数量。
二、安装
当前推荐使用远吗 安装exo方法
先决条件
- Python>=3.12.0是必需的,因为在以前的版本中有asyncio的问题。
-
- NVIDIA驱动程序(测试与
nvidia-smi
) - CUDA(https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#cuda-cross-platform-installation)(使用
nvcc --version
) - cuDNN(https://developer.nvidia.com/cudnn-downloads)(用[链接](https://docs.nvidia.com/deeplearning/cudnn/latest/installation/linux.html#verifying-the-install-on-linux:~:text=at a time.-,Verifying the Install on Linux,Test passed!,-Upgrading From Older)测试)
- NVIDIA驱动程序(测试与
从源码安装
git clone https://github.com/exo-explore/exo.git
cd exo
pip install .
# alternatively, with venv
source install.sh
故障排除
- 如果在Mac上运行,MLX 有一个带有故障排除步骤的安装指南。
性能
用户根据经验发现,可以提高Apple Silicon Mac的性能:
- 升级到最新版本的MacOS 15。
- 运行
./configure_mlx.sh
。这会运行命令来优化苹果硅Mac上的GPU内存分配。
三、使用
1、在多个macOS设备上的示例使用
设备1:
python3 main.py
设备2:
python3 main.py
就是这样!无需配置-exo将自动发现其他设备。
exo启动一个类似ChatGPT的 WebUI(由tinygrad tinychat提供支持)http://localhost:8000
对于开发人员,exo还会在 http://localhost:8000/v1/chat/completions 上启动一个ChatGPT兼容的API端点。
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama-3.1-8b",
"messages": [{"role": "user", "content": "What is the meaning of exo?"}],
"temperature": 0.7
}'
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llava-1.5-7b-hf",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "What are these?"
},
{
"type": "image_url",
"image_url": {
"url": "http://images.cocodataset.org/val2017/000000039769.jpg"
}
}
]
}
],
"temperature": 0.0
}'
2、多个异构设备(MacOS+Linux)上的示例用法
设备1(MacOS):
python3 main.py --inference-engine tinygrad
这里我们明确告诉exo使用tinygrad推理引擎。
设备2(Linux):
python3 main.py
Linux设备将自动默认使用tinygrad推理引擎。
您可以在此处阅读有关tinygrad特定环境变量的信息。例如,您可以通过指定CLANG=1
来配置tinygrad以使用cpu。
四、调试
使用DEBUG环境变量(0-9)启用调试日志。
DEBUG=9 python3 main.py
对于tinygrad推理引擎,有一个单独的DEBUG标志TINYGRAD_DEBUG
可用于启用调试日志(1-6)。
TINYGRAD_DEBUG=2 python3 main.py
已知问题
在某些版本的MacOS/Python上,证书未正确安装,这可能会导致SSL错误(例如huggingface.co的SSL错误)。
要解决此问题,请运行安装证书命令,通常:
/Applications/Python 3.x/Install Certificates.command
🚧由于库的发展如此之快,iOS的实现已经落后于Python。
我们现在决定不发布有缺陷的iOS版本,也不会收到一堆过时代码的GitHub问题。
我们正在努力解决这个问题,并将在准备好后发布公告。
如果您现在想访问iOS实现,请发送电子邮件alex@exolabs.net使用您的GitHub用户名解释您的用例,您将被授予在GitHub上的访问权限。
推理引擎
exo支持以下推理引擎:
- ✅ MLX
- ✅ tinygrad
- 🚧 PyTorch
- 🚧 llama.cpp
网络模块
- ✅ GRPC
- 🚧 Radio
- 🚧 Bluetooth
五、其它
- exo正在招聘
更多详情见: https://exolabs.net/ - 参与
exo是实验性软件。尽早发现错误。创建问题以便修复。exo实验室团队将努力快速解决问题。 - 贡献
我们也欢迎社区的贡献。我们在这张表上有一份赏金清单。
2024-11-14(四)