sskj/experiments/dsv4_h200_sglang_vs_vllm
yy-fighting 1482601ae5 Add num_prompts = 5×concurrency convention and update all experiments
- Document the rule in docs/EXPERIMENT_GUIDE.md section 7
- Update all config.env SCENARIOS to follow the 5x rule
- Migrate dsv4_h200_sglang, dsv4_h200_vllm, dsv4_p800_sglang
  from global NUM_PROMPTS to per-scenario num_prompts
- Keep long-context phase2 as exception (low counts documented)
- Add legacy 3-field fallback in run_bench.sh loops
2026-07-09 09:26:41 +00:00
..

DSV4 H200 SGLang vs vLLM 对比实验

在 8x NVIDIA H200 上,用统一控制变量对比 SGLang 与 vLLM serving DeepSeek-V4-Flash。

设计原则

  • 两个 backend 都使用 TP=8,绑定全部 8 张卡。
  • 压测客户端统一使用 sglang.bench_serving
  • 场景矩阵、并发、输入/输出长度、请求数对两个 backend 完全一致。
  • 每个 phase 启动 server 后先做 warmup再跑正式压测。
  • 短上下文和长上下文分阶段启动 server避免 max-model-len / max-num-seqs 显存冲突。
  • 每次 server 启动的完整命令行参数会写入 results/<RUN_ID>/<backend>/results.jsonconfig.phase1_server_args / config.phase2_server_args,方便在 P800 等其他平台复现时保持参数一致。

场景矩阵

Phase 1短上下文吞吐max_model_len=32k

Concurrency Input Output Num prompts
1 512 256 32
32 512 256 128
128 512 256 128
1 4000 512 32
32 4000 512 64

Phase 2长上下文max_model_len=210k

Concurrency Input Output Num prompts
1 32768 1024 8
1 65536 1024 4
1 131072 1024 2
1 200000 1024 1

ShareGPT 真实对话数据max_model_len=32k

Concurrency ShareGPT context len Output Num prompts
1 32768 256 32
32 32768 256 128

使用 datasets/ShareGPT_filtered_chat.json--sharegpt-context-len 32768 会自动过滤超长请求。

快速运行

bash experiments/dsv4_h200_sglang_vs_vllm/run_bench.sh

断点续跑

如果实验中途因为脚本/机器原因中断,可以复用同一个 RUN_ID 继续跑,已经完成的 scenario 会自动跳过:

RUN_ID=20260708-XXXXXX bash experiments/dsv4_h200_sglang_vs_vllm/run_bench.sh

判断标准是 raw_outputs/*.jsonl 已存在且 completed 数量达到预期。

结果保存在 experiments/dsv4_h200_sglang_vs_vllm/results/<RUN_ID>/

results/<RUN_ID>/
├── sglang/
│   ├── results.json
│   ├── report.md
│   └── raw_outputs/      # gitignored
├── vllm/
│   ├── results.json
│   ├── report.md
│   └── raw_outputs/      # gitignored
├── comparison.md
└── logs/

文件说明

文件 作用
config.env 公共配置:模型路径、端口、场景矩阵、虚拟环境
start_sglang.sh 按 phase 启动 SGLang server
start_vllm.sh 按 phase 启动 vLLM server
run_bench.sh 总 orchestrator跑 SGLang → 跑 vLLM → 生成对比报告
warmup.py sglang.bench_serving 发送少量预热请求
parse_backend.py 解析单个 backend 的 raw jsonl 为 results.json + report.md
compare.py 读取两个 backend 的 results.json,生成 comparison.md

环境

  • SGLM server: /data/user1/yy/envs/sglang
  • vLLM server: /data/user1/yy/envs/vllm
  • Benchmark client: /data/user1/yy/envs/sglang(统一用该环境的 sglang.bench_serving