sskj/experiments/h200/dsv4_h200_sglang_vs_vllm
yy-fighting 8652a685e6 rewrite README, add new platform onboarding guide, fix broken scripts/common paths
- rewrite README with project purpose, standard workflow, corrected index
- add docs/NEW_PLATFORM_GUIDE.md (new GPU onboarding SOP, GLM5.2 reuse)
- fix ../../scripts/common -> ../../../scripts/common in 42 experiment scripts
- refresh stale docs (EXPERIMENT_GUIDE, H200_QUICKSTART, ADAPTIVE_CONCURRENCY_USAGE, BENCHMARK_WORKFLOW)
- remove dead code (dp_proxy.py) and .bak leftovers
- add p800 adaptive results (tp4_dp2/tp8_dp1 metrics + summary)
- gitignore envs/charts and .tmp_charts
2026-07-17 06:18:05 +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