# EvalScope 评测脚本与配置 本仓库包含一组基于 [EvalScope](https://github.com/modelscope/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 模式、输出目录组织等。 ```bash 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}.xlsx` - `results/{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 安装依赖 ```bash conda create -n evalscope python=3.12 -y conda activate evalscope cd /data1/sora/evalscope pip install -e ./evalscope ``` ### 4.2 运行单个 benchmark ```bash python bash/run.py --datasets gsm8k --limit 50 ``` ### 4.3 运行 suite ```bash python bash/run.py --suite official --limit none ``` 详细参数见 `myread.md` 或: ```bash 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