Skip to content

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

 
 
 

Contributors