把模型、数据集、提示模板、评测队列、结果对比与 AI 分析放进同一个本地工作台。
核心能力 · 快速开始 · 使用流程 · 架构 · 隐私 · 开发
Model Bench 是一个面向单机研究者的开源模型基准评测工作台。它通过 React 网页统一管理 本地 Transformers、vLLM 和 OpenAI 兼容模型,支持可复现的数据映射、批量实验、持久队列、 逐样本结果、可视化对比,以及受严格只读工具约束的结果分析助手。
Note
当前版本面向单用户、本机或受信任局域网环境。服务默认只监听 127.0.0.1,不包含账号、
多租户和公网鉴权能力。
| 模块 | 能力 |
|---|---|
| 模型接入 | 本地 Transformers、vLLM、多 GPU 张量并行、OpenAI 兼容 API |
| 数据工作台 | CSV、JSON、JSONL、Parquet;流式预览;字段发现与智能映射 |
| 非破坏性变换 | select、rename、concat、constant、cast、filter、template;原文件保持不变 |
| 实验编排 | 模型 × 数据修订 × 评测模板批量组合,重复结果检测,配置快照可追溯 |
| 持久队列 | 严格串行、同模型复用、暂停/继续、人工调序、取消、失败批量重试 |
| 指标系统 | Exact Match、Accuracy、Token F1、Choice Accuracy 等内置指标及 Python 插件 |
| 结果洞察 | 指标速览、模型/数据集筛选、高低排序、趋势、吞吐、Token、逐样本与 CSV 导出 |
| AI 分析助手 | 自然语言检索、指标比较、错误样本分析、页面导航;固定只读工具白名单 |
- 自动发现 NVIDIA GPU,并允许在实验级选择 GPU、dtype、上下文长度和显存利用率。
- 队首连续且运行快照一致的任务复用同一次模型加载,减少批量评测的冷启动成本。
- 自动检测多卡 P2P 能力;跨 NUMA、容器或无 NVLink 环境可回退到 NCCL socket 兼容传输。
- 没有 CUDA Toolkit/
nvcc时自动避开需要即时编译的 FlashInfer 采样路径。 - 运行、native library、vLLM 与 NCCL 输出统一写入对应运行的
run.log。
需要 Linux、Python 3.12,以及 curl、tar 等基础命令。初始化脚本会安装 uv、项目 Python
依赖、开发依赖和项目内 Node.js 24,并自动创建本地加密密钥与 SQLite schema。
./scripts/bootstrap.sh需要运行本地 Transformers 或 vLLM 模型时,再安装推理依赖:
./scripts/bootstrap.sh --inference./scripts/dev.sh- Web:http://127.0.0.1:5173
- API:http://127.0.0.1:8000
- OpenAPI:http://127.0.0.1:8000/docs
# 构建前端并由 FastAPI 托管
./scripts/start.sh
# 或使用持久 Screen 会话
./scripts/screen-start.sh
screen -r model-bench进入 Screen 后按 Ctrl+A、再按 D 可退出界面并保持服务运行。停止服务:
./scripts/screen-stop.shWarning
./scripts/screen-start.sh --lan 会监听局域网地址。Model Bench 当前没有用户鉴权,请只在受信任
网络使用,或通过 SSH 隧道访问默认的本地监听地址。
- 注册模型:填写本地权重目录,或配置 OpenAI 兼容 Base URL、模型名与 API Key。
- 导入数据集:上传单文件或注册服务器路径,预览字段并建立规范样本映射。
- 创建实验:选择模型、数据修订、系统评测模板、指标和生成参数。
- 观察队列:查看加载、进度、预计剩余时间、吞吐、Token 与运行日志。
- 比较结果:按运行、模型和数据集筛选,查看指标排序、趋势、吞吐和精确明细。
- 分析错误:进入逐样本页面,或让只读分析助手归纳代表性错误并定位证据样本。
内置模板覆盖原始输入、选择题零样本/少样本/CoT、问答题直接回答与问答题 CoT。模板会随运行 保存不可变快照;重试旧运行时会刷新到当前模板版本,使修复前后的结果保持不同配置身份。
数据修订最终映射为统一结构:
sample_id
prompt + optional system 或 messages
reference
choices
metadata
选择题推荐映射 prompt_field、choices_field 与 reference_field,并使用 Choice Accuracy。
它可以解析单字母答案,也能从 Final answer: C 形式的 CoT 输出中提取最终选项。
flowchart LR
UI[React + Ant Design] -->|REST / SSE| API[FastAPI]
API --> DB[(SQLite WAL)]
API --> FILES[Uploads & Result Files]
DB --> WORKER[Persistent Worker]
WORKER --> RUNNER[Isolated Run Process]
RUNNER --> HF[Transformers]
RUNNER --> VLLM[vLLM]
RUNNER --> REMOTE[OpenAI-compatible API]
RUNNER --> ARTIFACTS[manifest · samples · metrics · log]
UI --> ASSISTANT[Read-only Analysis Assistant]
ASSISTANT --> DB
ASSISTANT --> ARTIFACTS
API 控制进程与 worker 分离。worker 从 SQLite 持久队列领取任务,每组运行在独立子进程中执行; 异常退出后,未完成状态可以恢复或重试。数据库保存配置、状态与汇总,逐样本明细保存在文件中。
每条运行默认生成:
bench-data/results/<experiment-id>/<run-id>/
├── manifest.json
├── samples.jsonl
├── metrics.json
└── run.log
Model Bench 采用 local-first 设计。以下内容默认只留在本机,并被 Git 忽略:
bench-data/:SQLite 数据库、运行结果、上传数据集与指标插件。.env:自动生成的 Fernet 主密钥。- 已注册模型和数据集:系统只在 SQLite 中保存本地路径与配置,不复制外部权重或服务器文件。
- 结果分析助手设置、对话历史和加密后的 API Key。
- 常见本地模型、数据、结果、上传与 checkpoint 目录,以及模型权重文件。
API Key 使用 Fernet 加密后写入本地 SQLite,读取配置时不会返回明文。.env 中的主密钥与数据库
必须同时保护;任一文件都不应提交到公开仓库。
结果分析助手的“允许向外部 API 发送样本内容”开关默认开启。启用时,每轮最多发送 20 条代表 样本的提示、预测、参考答案与 metadata;关闭后只发送本地汇总。连接外部服务前请根据数据敏感性 检查此设置。
Caution
自定义 Python 指标被视为受信任代码。它会在独立进程中运行,但这不是安全沙箱;不要上传或运行 来历不明的插件。
| 环境变量 | 默认值 | 说明 |
|---|---|---|
BENCH_DATA_DIR |
./bench-data |
SQLite、上传、插件与结果根目录 |
BENCH_HOST |
127.0.0.1 |
生产 API 监听地址 |
BENCH_PORT |
8000 |
生产 API 端口 |
BENCH_MAX_UPLOAD_BYTES |
2147483648 |
单文件上传大小上限 |
NCCL_COMPAT |
自动检测 | 设为 1 可强制多卡兼容传输 |
.venv/bin/ruff check backend
.venv/bin/ruff format --check backend
.venv/bin/pytest -q
PATH="$PWD/.tools/node/bin:$PATH" npm test --prefix frontend
PATH="$PWD/.tools/node/bin:$PATH" npm run build --prefix frontendGPU smoke test:
MODEL_PATH=/path/to/model BACKEND=transformers GPU_IDS=0 ./scripts/gpu-smoke.sh
MODEL_PATH=/path/to/model BACKEND=vllm GPU_IDS=0,1 ./scripts/gpu-smoke.sh- 单用户、单机或可信局域网部署。
- 文本生成评测;支持单轮 prompt 和多轮 messages。
- 单数据集建议控制在十万条以内,预览和运行采用流式读取。
- 暂不支持多模态、Hugging Face Dataset ID、多文件关联和任意 Python 数据预处理。
如果你希望快速比较本地模型、提示策略与医学/通用文本数据集,同时保留可追溯的运行快照和 逐样本证据,Model Bench 可以直接作为实验控制台使用。
本项目采用 Apache License 2.0。