yy-fighting 162168da3c feat: record exact server launch args in results.json for reproducibility
- sglang_vs_vllm/run_bench.sh: add phase1/phase2 server_args per backend
- dspark_vs_default/run_bench.sh: add server_args for dspark/default
- READMEs document where to find the recorded server args
2026-07-08 08:21:55 +00:00

83 lines
2.8 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.

# 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.json``config.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
bash experiments/dsv4_h200_sglang_vs_vllm/run_bench.sh
```
结果保存在 `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`