目录

ModelGavel

项目简介

ModelGavel 是一个智能模型选择系统,根据机器的硬件资源和模型性能指标,自动选择最适合的模型来处理任务。系统结合了 DCGM GPU 指标采集和模型性能评估,实现了高效的模型调度和资源利用。

项目结构

modelgavel/
├── apps/                 # 应用核心代码
│   ├── api/              # API 接口模块
│   ├── cores/            # 核心功能模块
│   │   ├── get_gpu_metric/  # GPU 指标采集
│   │   ├── manager/          # 模型管理
│   │   └── tasks/            # 任务处理
│   ├── extensions/       # 扩展功能
│   ├── models/           # 数据模型
│   └── utils/            # 工具函数
├── docs/                 # 文档
│   ├── api.md            # API 文档
│   ├── installation.md   # 安装文档
│   ├── introduction.md   # 项目介绍
│   └── judge_inputs.md   # 输入格式文档
├── .gitignore            # Git 忽略文件
├── README.md             # 项目说明
├── local.env             # 环境配置
├── main.py               # 项目入口
├── requirements-dev.txt  # 开发依赖
└── requirements.txt      # 生产依赖

核心功能

1. 智能模型选择

  • 根据机器硬件指标和模型性能自动选择最优模型
  • 基于多维度评分系统(GPU 资源、模型能力、响应速度)
  • 支持不同类型模型的选择和调度

2. GPU 指标采集

  • 集成 DCGM 工具采集 GPU 相关指标
  • 实时监控 GPU 利用率、显存使用情况等
  • 提供 GPU 健康状态评估

3. 模型管理

  • 管理和监控运行中的模型
  • 支持模型部署信息获取
  • 维护模型运行状态

4. 任务调度

  • 定时任务管理
  • MQTT 消息推送
  • 任务状态监控

安装指南

前提条件

  • Docker 和 docker-compose 已安装
  • 足够的系统资源(至少 4GB RAM,建议 8GB 以上)
  • 网络连接

安装步骤

  1. 克隆代码库
git clone https://your-repository-url/modelgavel.git
cd modelgavel
  1. 创建 docker-compose.yml 文件

在项目根目录创建 docker-compose.yml 文件:

version: '3.8'

services:
  modelgavel:
    build: .
    ports:
      - "8000:8000"
    env_file:
      - local.env
    restart: unless-stopped
  1. 配置环境变量

编辑 local.env 文件,设置必要的环境变量:

# API 配置
API_HOST=0.0.0.0
API_PORT=8000

# 模型配置
MODEL_API_ENDPOINT=http://192.168.1.209:11434/v1/chat/completions

# 日志配置
LOG_LEVEL=INFO
  1. 构建和运行
docker-compose up -d --build
  1. 验证安装

查看服务状态:

docker-compose ps

API 接口

1. 任务管理接口

  • GET /api/ctrl/list - 获取当前运行的任务列表
  • POST /api/ctrl/list - 启动或停止定时任务

请求示例

{
  "action": "start",
  "job_id": "task_1",
  "data": {
    "machine": [/* 机器指标 */],
    "models": [/* 模型信息 */]
  }
}

响应示例

{
  "running": true,
  "topic": "task_msg/task_1"
}

使用说明

1. 启动系统

# 使用 Docker 启动
docker-compose up -d

# 或直接运行
python main.py

2. 提交任务

使用 POST 请求到 /api/ctrl/list 接口,提交模型选择任务:

curl -X POST http://localhost:8000/api/ctrl/list \
  -H "Content-Type: application/json" \
  -d '{
    "action": "start",
    "job_id": "model_selection",
    "data": {
      "machine": {
        "gpu_utilization": 0.3,
        "gpu_memory_free": 8.5,
        "gpu_count": 2
      },
      "models": [
        {
          "type": "text-generation",
          "model_size": "15GB",
          "latency": 0.8,
          "throughput": 3,
          "gpu_memory_usage": "8GB",
          "response_speed": 0.10,
          "model_capability": 0.40,
          "gpu_availability": 0.30
        },
        {
          "type": "text-generation",
          "model_size": "7GB",
          "latency": 0.5,
          "throughput": 5,
          "gpu_memory_usage": "4GB",
          "response_speed": 0.20,
          "model_capability": 0.30,
          "gpu_availability": 0.30
        }
      ]
    }
  }'

3. 监控任务

使用 GET 请求到 /api/ctrl/list 接口,查看当前运行的任务:

curl http://localhost:8000/api/ctrl/list

配置指南

环境变量配置

编辑 local.env 文件,设置以下环境变量:

  • API_HOST - API 服务主机地址
  • API_PORT - API 服务端口
  • MODEL_API_ENDPOINT - 模型 API 调用地址
  • LOG_LEVEL - 日志级别(INFO, DEBUG, ERROR 等)

评分权重配置

系统默认的评分权重配置:

指标 英文字段名 权重 说明
GPU 可用性 gpu_availability 0.30 GPU 资源的可用程度,包括利用率、显存空闲等
模型能力 model_capability 0.25 模型的综合能力评分,基于模型类型和规格
响应速度 response_speed 0.20 模型的响应速度,考虑模型尺寸和负载

技术栈

  • 后端框架:Flask
  • API 框架:Flask-RESTX
  • 任务调度:APScheduler
  • 消息传递:MQTT
  • GPU 监控:DCGM
  • 容器化:Docker

开发指南

安装开发依赖

pip install -r requirements-dev.txt

许可证

本项目采用 MIT 许可证。详情请查看 LICENSE 文件。

项目状态

项目处于活跃开发状态,欢迎贡献和反馈。

关于
156.0 KB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802032778号