当前位置: 首页 > article >正文

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)测试)

从源码安装

git clone https://github.com/exo-explore/exo.git
cd exo
pip install .
# alternatively, with venv
source install.sh

故障排除

  • 如果在Mac上运行,MLX 有一个带有故障排除步骤的安装指南。

性能

用户根据经验发现,可以提高Apple Silicon Mac的性能:

  1. 升级到最新版本的MacOS 15。
  2. 运行./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(四)


http://www.kler.cn/a/393675.html

相关文章:

  • Javaweb—Ajax与jQuery请求
  • 编写红绿起爆线指标(附带源码下载)
  • 爱普生SG-8200CJ可编程晶振在通信设备中的应用
  • ArkTs简单入门案例:简单的图片切换应用界面
  • JAVA题目笔记(十五)经典算法题
  • openSUSE 环境下通过 zypper 安装软件
  • Linux 系统上部署 RabbitMQ
  • Python 正则表达式进阶用法:分组与引用详解
  • 数据挖掘在金融交易中的应用:民锋科技的智能化布局
  • Linux:进程概念
  • dto,vo这些有什么用
  • 万字长文解读深度学习——Transformer
  • SpringBoot(4)- data整合
  • 实习冲刺Day21
  • JSX 是react 专有的吗
  • Simulink中Matlab function使用全局变量
  • 我们来学mysql -- EXPLAIN之select_type(原理篇)
  • Rocky9/Ubuntu使用pip安装python的库mysqlclient失败解决方式
  • C# 实现对指定句柄的窗口进行键盘输入的实现
  • C++研发笔记13——C语言程序设计初阶学习笔记11
  • MongoDB新版本安装配置教程(7.0.15版本-zip下载)
  • 构建Spring Boot编程训练系统:全面指南
  • springboot初体验
  • [Docker#5] 镜像仓库 | 命令 | 实验:搭建Nginx | 创建私有仓库
  • 加入GitHub Spark需要申请
  • Hive基础