YI-x1/benchmark-personal

用于评估不同推理引擎下不同模型的表现

Python

0

4 commits

updated Jul 3, 2026

See the code

README

benchmark-vllm-v.s-sglang

这是统一的 vLLM / SGLang benchmark 入口。目标是用新的 Matrix Runner 完成 week1-week4 的评测任务,并把新结果、日志、历史结果分开管理。

1. 核心概念

新评测入口是 scripts/matrix_runner.py。它读取 configs/tasks/*.json,展开模型、server、client 和参数矩阵,按 case 启动服务、运行 client、采集 GPU 指标,并把结果写入统一目录。

Matrix Runner
  -> configs/models/   # 模型路径、served model name、上下文长度
  -> configs/servers/  # vLLM / SGLang 服务启动模板
  -> configs/clients/  # GuideLLM、vLLM bench、自定义 evaluator
  -> configs/tasks/    # week1-week4 任务矩阵
  -> results/raw/      # 原始产物
  -> results/logs/     # stdout/stderr 日志
  -> results/summary/  # 归一化 CSV/JSONL

2. 目录结构

configs/
  models/             # 模型配置
  servers/            # vLLM / SGLang server 模板
  clients/            # benchmark client / evaluator 模板
  tasks/              # week-task 命名的任务入口
  vllm_sweep/         # vLLM sweep 参数
data/
  tool_call_eval/
  reasoning_stream_eval/
scripts/
  matrix_runner.py
  normalize_results.py
  tool_call_evaluator.py
  reasoning_stream_evaluator.py
  auto_run_ready_models.py
  vllm_startup_smoke.py
results/
  raw/                # 新体系原始产物
  logs/               # 新体系统一日志
  summary/            # 新体系统一汇总
  startup_smoke/      # 大模型启动 smoke
  archive/            # 历史结果索引
reports/              # 结论报告
docs/                 # 轻量文档索引
legacy/               # 旧体系代码和历史结果,只读追溯

3. 快速开始

cd /nfs100/xiaoyixiao/benchmark-vllm-v.s-sglang
export NO_PROXY=127.0.0.1,localhost
export no_proxy=127.0.0.1,localhost

只验证配置展开,不启动模型:

python3 scripts/matrix_runner.py configs/tasks/week1-2-task1-engine-compare.json --dry-run --limit 3
python3 scripts/matrix_runner.py configs/tasks/week4-task4a-tool-call-qwen25-7b-v2.json --dry-run

真实执行:

python3 scripts/matrix_runner.py configs/tasks/week4-task4a-tool-call-qwen25-7b-v2.json \
  --execute \
  --run-id formal_qwen25_7b_tool_v2_$(date +%Y%m%d_%H%M%S)

执行完成后归一化:

python3 scripts/normalize_results.py results/raw/<run_id>

4. Week 任务入口

WeekTask配置
week1-2task1: vLLM vs SGLang serving 性能configs/tasks/week1-2-task1-engine-compare.json
week3task2: prefix cachingconfigs/tasks/week3-task2-shared-prefix.json
week3task3: chunked prefillconfigs/tasks/week3-task3-chunked-prefill.json
week4task4a: Qwen2.5-7B tool callingconfigs/tasks/week4-task4a-tool-call-qwen25-7b-v2.json
week4task4b: Qwen2.5-14B tool callingconfigs/tasks/week4-task4b-tool-call-qwen25-14b-v2.json
week4task4c: QwQ-32B tool callingconfigs/tasks/week4-task4c-tool-call-qwq-32b-v2.json
week4task4d: GLM-4.5-Air-FP8 tool callingconfigs/tasks/week4-task4d-tool-call-glm45-air-fp8-v2.json
week4task5: structured / grammar-guided A/Bconfigs/tasks/week4-task5-structured-ab-qwen25-7b-v2-positive.json
week4task6a: DeepSeek-R1 reasoning streamconfigs/tasks/week4-task6a-reasoning-stream-deepseek-r1-7b-v2.json
week4task6b: Qwen2.5-7B plain stream 对照configs/tasks/week4-task6b-reasoning-stream-qwen25-7b-v2.json
week4task6c: QwQ-32B reasoning streamconfigs/tasks/week4-task6c-reasoning-stream-qwq-32b-v2.json
week4task6d: GLM-4.5-Air-FP8 reasoning streamconfigs/tasks/week4-task6d-reasoning-stream-glm45-air-fp8-v2.json
week5lm-eval: Qwen2.5-7B arc_easy/hellaswag 能力评测configs/tasks/week5-lm-eval-qwen25-7b-arc-hellaswag.json
week5OpenCompass: Qwen2.5-7B ARC-e/hellaswag 生成式对照configs/tasks/week5-opencompass-qwen25-7b-arc-hellaswag-gen-chat.json
week5vLLM: Qwen2.5-7B random completions serving 基线configs/tasks/week5-vllm-serve-random-qwen25-7b.json

5. 已导入 Benchmark 数据

已从 week5_eval_toolchain 迁入一组正式 Benchmark 数据,只迁移原始结果和归一化汇总,不迁移调研报告或报告草稿。导入数据仍按正式 run 命名,统一放在 results/raw/results/summary/

Benchmarkrun_id说明
lm-eval 能力评测formal_qwen25_7b_lm_eval_arc_hellaswag_0shot_chat_20260630_162918Qwen2.5-7B-Instructarc_easy / hellaswag,0-shot,chat template;配置入口为 configs/tasks/week5-lm-eval-qwen25-7b-arc-hellaswag.json
OpenCompass 生成式对照formal_qwen25_7b_opencompass_arc_hellaswag_gen_chat_20260701_092235Qwen2.5-7B-InstructARC-e / hellaswag,generation chat 模式;配置入口为 configs/tasks/week5-opencompass-qwen25-7b-arc-hellaswag-gen-chat.json
vLLM serving 性能基线formal_qwen25_7b_vllm_serve_random_c16_20260702_033210vllm bench serve/v1/completions,随机输入输出 workload,concurrency=16;配置入口为 configs/tasks/week5-vllm-serve-random-qwen25-7b.json

6. Clients 和 Servers

servers 指被测推理服务的启动方式,例如普通 vLLM、tool-call vLLM、reasoning-stream vLLM、SGLang。它决定模型如何被 serve 起来、端口是什么、GPU 怎么绑、要不要带 parser 参数。

clients 指压测或评测服务的请求端,例如 GuideLLM、vllm bench servetool_call_evaluator.pyreasoning_stream_evaluator.py。它决定怎么向服务发请求、发多少请求、如何评分和输出 client.json

7. 三个 vLLM Server 模板

  • configs/servers/vllm.json:通用 serving 性能模板,用于 week1-3。它只关心基础启动、prefix cache、chunked prefill 等性能参数。
  • configs/servers/vllm_tool_call.json:工具调用模板,用于 week4 tool calling。它会按任务注入 --enable-auto-tool-choice --tool-call-parser <parser>,也支持 structured outputs 参数。
  • configs/servers/vllm_reasoning_stream.json:推理流解析模板,用于 week4 reasoning stream。它会按任务注入 --reasoning-parser <parser>,用于解析 delta.reasoning<think> 类输出。

8. 结果和日志规范

results/raw/<run_id>/<case_id>/attempt_00/
  case_meta.json
  client.json
  results.jsonl
  gpu.csv

results/logs/<run_id>/<case_id>/attempt_00/
  server.stdout.log
  server.stderr.log
  client.stdout.log
  client.stderr.log

results/summary/
  <run_id>.csv
  <run_id>.jsonl

新的正式结果不要写进 legacy/benchmark_results/reports/docs/

9. 历史结果

历史结果只用于追溯:

legacy/benchmark_results/
results/archive/README.md

历史 legacy 结果不再追加。新跑的正式任务统一进 results/raw/results/logs/results/summary/

10. auto_run_ready_models_state.json

results/auto_run_ready_models_state.jsonscripts/auto_run_ready_models.py 的状态文件。它记录自动轮询任务哪些已经完成、哪些失败以及对应 run_id,避免自动 runner 反复跑同一个任务。

它不是 benchmark 结果本身,只是自动调度器的 checkpoint。正式结果仍以 results/raw/<run_id>/results/summary/<run_id>.csv/jsonl 为准。

11. 推荐工作流

  1. --dry-run 看 case 数和 case_id。
  2. 确认 GPU 空闲、模型权重存在、端口没有被占用。
  3. --execute --run-id <name> 跑正式任务。
  4. scripts/normalize_results.py results/raw/<run_id>
  5. 只引用 results/summary/<run_id>.csv/jsonl 写报告。
  6. 失败排查看 results/logs/<run_id>/,不要把日志散落到 docs 或 reports。

Contributors

YI-x1

4 commits

YI-x1/benchmark-personal

用于评估不同推理引擎下不同模型的表现

Python

0

4 commits

updated Jul 3, 2026

See the code

README

benchmark-vllm-v.s-sglang

这是统一的 vLLM / SGLang benchmark 入口。目标是用新的 Matrix Runner 完成 week1-week4 的评测任务,并把新结果、日志、历史结果分开管理。

1. 核心概念

新评测入口是 scripts/matrix_runner.py。它读取 configs/tasks/*.json,展开模型、server、client 和参数矩阵,按 case 启动服务、运行 client、采集 GPU 指标,并把结果写入统一目录。

Matrix Runner
  -> configs/models/   # 模型路径、served model name、上下文长度
  -> configs/servers/  # vLLM / SGLang 服务启动模板
  -> configs/clients/  # GuideLLM、vLLM bench、自定义 evaluator
  -> configs/tasks/    # week1-week4 任务矩阵
  -> results/raw/      # 原始产物
  -> results/logs/     # stdout/stderr 日志
  -> results/summary/  # 归一化 CSV/JSONL

2. 目录结构

configs/
  models/             # 模型配置
  servers/            # vLLM / SGLang server 模板
  clients/            # benchmark client / evaluator 模板
  tasks/              # week-task 命名的任务入口
  vllm_sweep/         # vLLM sweep 参数
data/
  tool_call_eval/
  reasoning_stream_eval/
scripts/
  matrix_runner.py
  normalize_results.py
  tool_call_evaluator.py
  reasoning_stream_evaluator.py
  auto_run_ready_models.py
  vllm_startup_smoke.py
results/
  raw/                # 新体系原始产物
  logs/               # 新体系统一日志
  summary/            # 新体系统一汇总
  startup_smoke/      # 大模型启动 smoke
  archive/            # 历史结果索引
reports/              # 结论报告
docs/                 # 轻量文档索引
legacy/               # 旧体系代码和历史结果,只读追溯

3. 快速开始

cd /nfs100/xiaoyixiao/benchmark-vllm-v.s-sglang
export NO_PROXY=127.0.0.1,localhost
export no_proxy=127.0.0.1,localhost

只验证配置展开,不启动模型:

python3 scripts/matrix_runner.py configs/tasks/week1-2-task1-engine-compare.json --dry-run --limit 3
python3 scripts/matrix_runner.py configs/tasks/week4-task4a-tool-call-qwen25-7b-v2.json --dry-run

真实执行:

python3 scripts/matrix_runner.py configs/tasks/week4-task4a-tool-call-qwen25-7b-v2.json \
  --execute \
  --run-id formal_qwen25_7b_tool_v2_$(date +%Y%m%d_%H%M%S)

执行完成后归一化:

python3 scripts/normalize_results.py results/raw/<run_id>

4. Week 任务入口

WeekTask配置
week1-2task1: vLLM vs SGLang serving 性能configs/tasks/week1-2-task1-engine-compare.json
week3task2: prefix cachingconfigs/tasks/week3-task2-shared-prefix.json
week3task3: chunked prefillconfigs/tasks/week3-task3-chunked-prefill.json
week4task4a: Qwen2.5-7B tool callingconfigs/tasks/week4-task4a-tool-call-qwen25-7b-v2.json
week4task4b: Qwen2.5-14B tool callingconfigs/tasks/week4-task4b-tool-call-qwen25-14b-v2.json
week4task4c: QwQ-32B tool callingconfigs/tasks/week4-task4c-tool-call-qwq-32b-v2.json
week4task4d: GLM-4.5-Air-FP8 tool callingconfigs/tasks/week4-task4d-tool-call-glm45-air-fp8-v2.json
week4task5: structured / grammar-guided A/Bconfigs/tasks/week4-task5-structured-ab-qwen25-7b-v2-positive.json
week4task6a: DeepSeek-R1 reasoning streamconfigs/tasks/week4-task6a-reasoning-stream-deepseek-r1-7b-v2.json
week4task6b: Qwen2.5-7B plain stream 对照configs/tasks/week4-task6b-reasoning-stream-qwen25-7b-v2.json
week4task6c: QwQ-32B reasoning streamconfigs/tasks/week4-task6c-reasoning-stream-qwq-32b-v2.json
week4task6d: GLM-4.5-Air-FP8 reasoning streamconfigs/tasks/week4-task6d-reasoning-stream-glm45-air-fp8-v2.json
week5lm-eval: Qwen2.5-7B arc_easy/hellaswag 能力评测configs/tasks/week5-lm-eval-qwen25-7b-arc-hellaswag.json
week5OpenCompass: Qwen2.5-7B ARC-e/hellaswag 生成式对照configs/tasks/week5-opencompass-qwen25-7b-arc-hellaswag-gen-chat.json
week5vLLM: Qwen2.5-7B random completions serving 基线configs/tasks/week5-vllm-serve-random-qwen25-7b.json

5. 已导入 Benchmark 数据

已从 week5_eval_toolchain 迁入一组正式 Benchmark 数据,只迁移原始结果和归一化汇总,不迁移调研报告或报告草稿。导入数据仍按正式 run 命名,统一放在 results/raw/results/summary/

Benchmarkrun_id说明
lm-eval 能力评测formal_qwen25_7b_lm_eval_arc_hellaswag_0shot_chat_20260630_162918Qwen2.5-7B-Instructarc_easy / hellaswag,0-shot,chat template;配置入口为 configs/tasks/week5-lm-eval-qwen25-7b-arc-hellaswag.json
OpenCompass 生成式对照formal_qwen25_7b_opencompass_arc_hellaswag_gen_chat_20260701_092235Qwen2.5-7B-InstructARC-e / hellaswag,generation chat 模式;配置入口为 configs/tasks/week5-opencompass-qwen25-7b-arc-hellaswag-gen-chat.json
vLLM serving 性能基线formal_qwen25_7b_vllm_serve_random_c16_20260702_033210vllm bench serve/v1/completions,随机输入输出 workload,concurrency=16;配置入口为 configs/tasks/week5-vllm-serve-random-qwen25-7b.json

6. Clients 和 Servers

servers 指被测推理服务的启动方式,例如普通 vLLM、tool-call vLLM、reasoning-stream vLLM、SGLang。它决定模型如何被 serve 起来、端口是什么、GPU 怎么绑、要不要带 parser 参数。

clients 指压测或评测服务的请求端,例如 GuideLLM、vllm bench servetool_call_evaluator.pyreasoning_stream_evaluator.py。它决定怎么向服务发请求、发多少请求、如何评分和输出 client.json

7. 三个 vLLM Server 模板

  • configs/servers/vllm.json:通用 serving 性能模板,用于 week1-3。它只关心基础启动、prefix cache、chunked prefill 等性能参数。
  • configs/servers/vllm_tool_call.json:工具调用模板,用于 week4 tool calling。它会按任务注入 --enable-auto-tool-choice --tool-call-parser <parser>,也支持 structured outputs 参数。
  • configs/servers/vllm_reasoning_stream.json:推理流解析模板,用于 week4 reasoning stream。它会按任务注入 --reasoning-parser <parser>,用于解析 delta.reasoning<think> 类输出。

8. 结果和日志规范

results/raw/<run_id>/<case_id>/attempt_00/
  case_meta.json
  client.json
  results.jsonl
  gpu.csv

results/logs/<run_id>/<case_id>/attempt_00/
  server.stdout.log
  server.stderr.log
  client.stdout.log
  client.stderr.log

results/summary/
  <run_id>.csv
  <run_id>.jsonl

新的正式结果不要写进 legacy/benchmark_results/reports/docs/

9. 历史结果

历史结果只用于追溯:

legacy/benchmark_results/
results/archive/README.md

历史 legacy 结果不再追加。新跑的正式任务统一进 results/raw/results/logs/results/summary/

10. auto_run_ready_models_state.json

results/auto_run_ready_models_state.jsonscripts/auto_run_ready_models.py 的状态文件。它记录自动轮询任务哪些已经完成、哪些失败以及对应 run_id,避免自动 runner 反复跑同一个任务。

它不是 benchmark 结果本身,只是自动调度器的 checkpoint。正式结果仍以 results/raw/<run_id>/results/summary/<run_id>.csv/jsonl 为准。

11. 推荐工作流

  1. --dry-run 看 case 数和 case_id。
  2. 确认 GPU 空闲、模型权重存在、端口没有被占用。
  3. --execute --run-id <name> 跑正式任务。
  4. scripts/normalize_results.py results/raw/<run_id>
  5. 只引用 results/summary/<run_id>.csv/jsonl 写报告。
  6. 失败排查看 results/logs/<run_id>/,不要把日志散落到 docs 或 reports。

Contributors

YI-x1

4 commits

Languages

Python

69.4%

HTML

7.7%

Rust

6.5%

Cuda

5.2%

MDX

4.3%

C++

3.5%