Skip to content

An easy service for deploying model which contains basic proxy and agents that support multiple and heterogeneous devices.

Notifications You must be signed in to change notification settings

FesianXu/Easy-Model-Service

Repository files navigation

Easy Model Service介绍

Easy Model Service (EMS) 是一个轻量级的模型服务器,支持部署异构后端的大模型推理服务,在工作中可以帮助大规模的刷库任务。EMS 基于fastapi,包含了一个Proxy和多个Agent,如下框图所示。对比简单采用mpirun进行大规模刷库,主要功能点有:

  1. 计算后端的健康检查:每5秒钟触发健康检查,检测当前后端列表中是否有节点不可用,从而将不可用的后端剔除,并且当后端节点自愈后能够自动加入可用后端池子参与计算。
  2. 支持异构计算资源的后端:对于生产环境,可能具有不同类型的计算后端,包括GPU(还包括不同厂商)/CPU/NPU等等,计算和流量承接解耦的方式有利于异构资源的统一调度,隐藏具体计算后端的差异。
  3. 调试灵活性:基于请求的方式触发计算,比起mpirun具有更高的调试灵活性。
graph TD
    subgraph Client
        C[客户端]
    end

    subgraph Proxy服务器
    	LB[负载均衡器]
    	C -->|1、 HTTP请求| LB
        LB -.维护可用计算后端的列表.-> HC[健康检查器]
        HC -.每5秒触发后端健康检测.-> WT[(可用的后端池)]
        Q[(环形队列\nMAX_QUEUE_SIZE=1000)]
        LB --> |2、 队列缓冲请求| Q
        Q --> |3、 轮询策略分发请求| WT
        
    end

    subgraph Agent集群
        WT --> |4、 转发请求| A1
        WT --> |4、 转发请求| A2
        WT --> |4、 转发请求| A32
        A1[[Agent 10000]] -->|加载| M1["大语言模型 (model_path)"]
        A2[[Agent 10001]] -->|加载| M2["大语言模型 (model_path)"]
        A32[[Agent 10031]] -->|加载| M32["大语言模型 (model_path)"]
    end
Loading

如何启动

启动前确保已经安装好了基本依赖,可以新建个虚拟环境避免污染。

python -m venv .venv
source .venv/bin/activate  # for Linux/Mac
pip install -r requirement.txt

启动

# 1. 拉取仓库
git clone https://github.com/FesianXu/Easy-Model-Service.git EMS
cd EMS

# 2. 启动agent,如果有多个节点,可以采用mpirun启动。
source ./utils.sh
mpirun_start_agents

# 3. 启动proxy
sh ./start_proxy.sh

# 4. 用户端发起异步的请求
python my_request.py

About

An easy service for deploying model which contains basic proxy and agents that support multiple and heterogeneous devices.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published