EvalScope 评测脚本与配置
本仓库包含一组基于 EvalScope 的评测脚本、配置和辅助工具,用于通过 OpenAI-compatible API 统一运行各类 LLM benchmark。
代码本身与具体模型无关,当前默认配置以 DeepSeek-V4-Flash-INT8 为例,可通过命令行参数或配置文件切换到其他模型。
1. 代码组成
/data1/sora/evalscope/
├── bash/ # 可执行脚本
│ ├── run.py # 统一 benchmark 入口
│ ├── collect_results.py # 汇总分数到 Excel/CSV
│ ├── perf_backup.py # 断点续跑:备份与恢复 predictions/perf
│ ├── pull_swe_bench_images.py # 预拉 SWE-bench Docker 镜像
│ └── test.sh # 本地测试脚本示例
├── config/
│ └── dpv4-int8_nothinking.yaml # benchmark 生成参数配置
├── tools/docker/ # Docker 构建上下文(仅构建产物,不含运行镜像)
│ ├── Dockerfile.py312
│ ├── bash/
│ ├── evalscope/
│ └── tau2-bench/
├── myread.md # 详细使用手册
└── DOCKER_BUILD.md # Docker 镜像构建说明
2. 核心脚本
2.1 bash/run.py
统一的 benchmark 启动入口,支持 suite、自定义 datasets、thinking 模式、输出目录组织等。
python bash/run.py \
--model DeepSeek-V4-Flash-Int8 \
--api-url http://localhost:30000/v1 \
--dataset-dir /data1/sora/evalscope \
--output-dir /data1/sora/evalscope/output \
--suite official \
--limit none
主要特性:
--suite:预置full/lite/mid/group1/group2/group3/official--datasets:覆盖 suite,逗号分隔自定义 benchmark--thinking/--thinking-max-tokens-scale/--max-tokens-add:支持 thinking 模型--folder-name:自定义输出顶层文件夹名- 自动生成汇总 Excel 到
results/{folder_name}.xlsx
2.2 bash/collect_results.py
读取 output/{folder_name}/{benchmark}/seed_{seed}/reports/*.json,汇总成:
results/{folder_name}.xlsxresults/{folder_name}.csv
由 run.py 在每个 benchmark 结束后自动调用,也可单独运行。
2.3 bash/perf_backup.py
实现断点续跑:
- 每次 benchmark 完成后把
predictions/和 report JSON 备份到 durable 目录。 - 再次运行同一 benchmark 前自动恢复到
work_dir,避免重复推理。 - 记录
active_time,kill 后重启不会重复计算等待时间。
2.4 bash/pull_swe_bench_images.py
根据数据集实例批量预拉 SWE-bench 评测所需的 Docker 镜像,支持:
--dataset:指定swe_bench_verified/swe_bench_lite等--max-workers:控制并发数- 国内源加载数据集元数据
2.5 config/dpv4-int8_nothinking.yaml
各 benchmark 的 temperature、top_p、max_tokens、subset_list、agent_config 等参数。未在此文件中的 benchmark 会回退到 run.py 里的默认生成参数。
3. 输出目录约定
output/
└── {folder_name}/ # 默认 model_name,thinking 时默认 model_name_THINKING
├── {benchmark}/
│ ├── seed_{seed}/
│ │ ├── predictions/
│ │ ├── reviews/
│ │ ├── reports/{benchmark}.json
│ │ └── logs/
│ └── seed_{seed}_run_{n}/ # multi-run 数据集的第 n 次运行
└── active_time/ # 真实运行时间累计
results/
└── {folder_name}.xlsx
4. 快速开始
4.1 安装依赖
conda create -n evalscope python=3.12 -y
conda activate evalscope
cd /data1/sora/evalscope
pip install -e ./evalscope
4.2 运行单个 benchmark
python bash/run.py --datasets gsm8k --limit 50
4.3 运行 suite
python bash/run.py --suite official --limit none
详细参数见 myread.md 或:
python bash/run.py --help
5. 设计说明
- 模型无关:
run.py通过--model/--api-url接入任意 OpenAI-compatible 服务。 - 配置可覆盖:YAML 配置 + 命令行参数,未配置的 benchmark 自动使用默认生成参数。
- 可恢复:基于
perf_backup.py,适合长时间评测任务在 kill/中断后继续。 - 可汇总:基于
collect_results.py,自动产出可对比的 Excel/CSV。
6. 相关文档
- 详细使用手册:
myread.md - Docker 构建说明:
DOCKER_BUILD.md - 上游 EvalScope:https://github.com/modelscope/evalscope
Description
Languages
Python
88.2%
TypeScript
5.5%
HTML
4.8%
CSS
0.7%
Jinja
0.3%
Other
0.4%