evalstone/bash/case/README_API_TEST.md

221 lines
6.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# EvalScope API 测试指南
本目录提供一键运行 API 模型评测的脚本。
## 1. 准备 API key
为了不把 key 写进代码,推荐用环境变量:
```bash
export EVAL_API_KEY="sk-xxxx"
```
如果使用智谱 / Vectron / 自定义 OpenAI-compatible 服务,按需改 `EVAL_API_URL`
```bash
export EVAL_API_URL="https://api.vectron.meta-stone.com/v1"
export EVAL_MODEL="DeepSeek/DeepSeek-V4-Flash"
```
## 2. 快速开始
### 2.1 测指定 datasets最常用
```bash
cd /data1/sora/evalscope
export EVAL_API_KEY="sk-xxxx"
export EVAL_DATASETS="gsm8k,aime24,arc"
bash bash/case/GLM52_API_TEST1.sh
```
想换 benchmark`EVAL_DATASETS` 即可。常用数据集:
```text
gsm8k, aime24, aime25, aime26, hmmt26, imo_answerbench, competition_math
bbh, drop
bigcodebench, humaneval, live_code_bench
gpqa_diamond, mmlu_pro, simple_qa, mmlu, cmmlu, arc, hellaswag, trivia_qa, winogrande
longbench_v2, openai_mrcr
tau2_bench, general_fc, bfcl_v3
```
### 2.2 使用内置模式
```bash
bash bash/case/GLM52_API_TEST1.sh --mode quick # 快速冒烟gsm8k,aime24,arc limit=20
bash bash/case/GLM52_API_TEST1.sh --mode lite # lite 套件
bash bash/case/GLM52_API_TEST1.sh --mode mid # 中等套件
bash bash/case/GLM52_API_TEST1.sh --mode full # 全量(不含 tau2_bench因为耗时
bash bash/case/GLM52_API_TEST1.sh --mode official # 与 DP4-Flash 官方发布对齐
```
### 2.3 测 GLM5.2
```bash
export EVAL_API_KEY="sk-xxxx"
export EVAL_API_URL="https://api.example.com/v1" # 替换为 GLM5.2 的实际 endpoint
export EVAL_MODEL="glm-5.2"
export EVAL_DATASETS="gsm8k,aime24,arc"
export EVAL_FOLDER_NAME="GLM52-API-Test"
bash bash/case/GLM52_API_TEST1.sh
```
## 3. 常用命令行参数
| 参数 | 说明 |
|---|---|
| `--api-key` | API key也可用 `EVAL_API_KEY` |
| `--api-url` | OpenAI-compatible API 地址 |
| `--model` | 模型名,如 `glm-5.2``DeepSeek/DeepSeek-V4-Flash` |
| `--datasets` | 逗号分隔的 benchmark 列表 |
| `--mode` | `quick / lite / mid / full / official / custom` |
| `--folder-name` | 输出目录名,默认 `API-Test` |
| `--config` | 评测配置 YAML默认 `config/dpv4-int8_nothinking.yaml` |
| `--batch-size` | 并发数,默认 4 |
| `--limit` | 每个 benchmark 最多测多少条,`none` 表示全量 |
| `--thinking` | 启用 thinking 模式 |
| `--no-thinking` | 关闭 thinking 模式 |
## 4. 查看进度
评测日志在 `logs/` 目录,最新日志:
```bash
ls -t logs/live_code_bench_thinking_*.log | head -1
```
实时看进度:
```bash
tail -f $(ls -t logs/live_code_bench_thinking_*.log | head -1)
```
## 5. 结果与成本
### 5.1 结果位置
```text
output/<FOLDER_NAME>/<benchmark>/seed_42/reports/<benchmark>.json
```
### 5.2 计算成本
运行完成后,用成本脚本按 token 量算钱:
```bash
# GLM5.2:输入 8 元/M输出 28 元/M折扣 0.65
bash bash/case/calc_glm52_cost.sh
# 输出到 results/P800_benchmark_cost_GLM52.csv
```
如果是其他模型,直接调工具:
```bash
python3 tools/calculate_cost.py \
--input "P800模型能力评测结果 - DS4-Flash-INT8-NO-Thinking-2.0-FULL.csv" \
--input-price 2 \
--output-price 8 \
--discount 1.0 \
--model-name MyModel \
--output results/cost_mymodel.csv
```
### 5.3 把成本写回 Excel
```bash
python3 tools/fill_excel_cost.py \
--input "/data1/sora/P800模型能力评测结果_统一格式_filled.xlsx" \
--output "/data1/sora/P800模型能力评测结果_统一格式_with_cost.xlsx" \
--input-price 8 \
--output-price 28 \
--discount 0.65 \
--model-name GLM-5.2
```
## 6. 价格预测与预算内选 dataset
### 6.1 多模型成本预测
`tools/predict_costs.py` 根据 `bash/case/model_pricing.yaml` 里的价格,对每个 benchmark 生成所有模型的成本矩阵。
```bash
# 生成 results/P800_benchmark_cost_all_models.csv/.xlsx
python3 tools/predict_costs.py
# 指定预算,筛选可测的 benchmark
python3 tools/predict_costs.py --budget 100
# 换模型价格表或基准 token 统计
python3 tools/predict_costs.py \
--pricing bash/case/model_pricing.yaml \
--benchmark "results/P800_benchmark_cost_GLM52.csv" \
--budget 500 \
--output results/my_cost_matrix
```
输出示例:
```text
=== 各模型总成本(元)===
GLM-5.2: 2014.44
GLM-5.1-lt32k: 1546.39
GLM-5-lt32k: 1054.64
Kimi-K2.5: 1174.06
MiniMax-M2.7: 707.77
DeepSeek-V3.2: 793.02
DeepSeek-V4-Pro: 1476.61
DeepSeek-V4-Flash: 360.03
```
### 6.2 按预算选择 datasets
假设总预算 100 元,脚本会输出每个模型在预算内可测的 benchmark。例如
```text
预算 100.00 元内可测的 benchmark
DeepSeek-V4-Flash: 27 个 -> bigcodebench, humaneval, live_code_bench, aime24, ...
GLM-5.2: 22 个 -> bigcodebench, humaneval, live_code_bench, aime24, ...
```
拿到列表后,直接替换 `EVAL_DATASETS` 即可开跑:
```bash
export EVAL_API_KEY="sk-xxxx"
export EVAL_MODEL="DeepSeek/DeepSeek-V4-Flash"
export EVAL_DATASETS="bigcodebench,humaneval,live_code_bench,aime24,aime25"
export EVAL_FOLDER_NAME="V4-Flash-budget-100"
bash bash/case/GLM52_API_TEST1.sh
```
### 6.3 与历史价格对比
飞书 wiki 里的历史价格需要手动导出为 CSV 并放到 `data/historical_prices.csv`,随后可写对比脚本。目前预测表已生成,可直接用于人工对比。
## 7. 常见问题
### 7.1 simple_qa 分数为 0
通常是 judge API 被限流HTTP 429。SimpleQA 需要调用外部 judge 模型打分。解决方案:
- 换成本地模型当 judge
```bash
bash bash/case/GLM52_API_TEST1.sh \
--datasets simple_qa \
--judge-model /data1/models/DeepSeek-V4-Flash-INT8 \
--judge-api-url http://localhost:30000/v1 \
--judge-api-key EMPTY
```
- 或降低 `--batch-size` / `--parallel-runs` 减少 judge 并发。
### 7.2 评测非常慢
代码类 benchmark`live_code_bench`、`bigcodebench`、`humaneval`)需要实际执行生成的代码并跑测试用例,耗时比纯文本生成高很多。可以先 `--limit 10` 测小样本。
### 7.3 只想重跑失败/漏掉的 benchmark
直接指定 datasets 即可EvalScope 会自动跳过已完成的(通过 `use_cache` 恢复)。