- New experiments/dsv4_h200_vllm_dspark_vs_default/ - start_dspark.sh: vllm serve with --spec-method dspark --spec-tokens 5 - start_default.sh: plain vllm serve baseline - Unified scenario matrix (512/4000 input, 1/32/128 concurrency) - parse_backend.py + compare.py focused on TTFT differences - README.md + root README entries
2.3 KiB
2.3 KiB
DSV4 H200 vLLM+DSpark vs vLLM default 对比实验
在 8x NVIDIA H200 上,用统一控制变量对比 vLLM 开启 DSpark 投机解码 与 vLLM 默认配置 的 TTFT / TPOT / 吞吐表现。
目的
你之前的观察是:开启 DSpark 后 TTFT 比默认 vLLM 更长。这个实验把两个配置放在同一套场景下重测,确认现象并量化差异,为后续分析根因提供数据。
控制变量
| 维度 | DSpark | Default |
|---|---|---|
| 硬件 | 8x H200,TP=8,全部 8 张卡 | 同上 |
| 后端 | vllm serve --spec-method dspark --spec-tokens 5 |
普通 vllm serve |
| 压测客户端 | sglang.bench_serving --backend vllm |
同上 |
| 场景矩阵 | 5 个场景完全一致 | 同上 |
| KV cache | fp8 | fp8 |
| max_model_len | 32768 | 32768 |
| max_num_seqs | 256 | 256 |
注:DSpark 使用独立的
DeepSeek-V4-Flash-DSparkcheckpoint;default 使用标准的DeepSeek-V4-Flash。这是 DSpark 方案本身带来的差异, unavoidable。
场景矩阵(全部测 5 个)
| Concurrency | Input len | Output len | Num prompts |
|---|---|---|---|
| 1 | 512 | 256 | 32 |
| 32 | 512 | 256 | 128 |
| 128 | 512 | 256 | 128 |
| 1 | 4000 | 512 | 32 |
| 32 | 4000 | 512 | 64 |
快速运行
bash experiments/dsv4_h200_vllm_dspark_vs_default/run_bench.sh
结果保存在 experiments/dsv4_h200_vllm_dspark_vs_default/results/<RUN_ID>/:
results/<RUN_ID>/
├── dspark/
│ ├── results.json
│ ├── report.md
│ └── raw_outputs/ # gitignored
├── default/
│ ├── results.json
│ ├── report.md
│ └── raw_outputs/ # gitignored
├── comparison.md
└── logs/
文件说明
| 文件 | 作用 |
|---|---|
config.env |
模型路径、端口、虚拟环境、场景矩阵 |
start_dspark.sh |
启动带 DSpark 投机解码的 vLLM server |
start_default.sh |
启动普通 vLLM server |
run_bench.sh |
总 orchestrator:DSpark → default → 对比报告 |
parse_backend.py |
解析单个 backend 的 raw jsonl 为 results.json + report.md |
compare.py |
读取两个 backend 结果,生成 TTFT 聚焦的 comparison.md |
环境
- DSpark server:
/data/user1/yy/envs/vllm-dspark - Default server:
/data/user1/yy/envs/vllm - Benchmark client:
/data/user1/yy/envs/sglang