# DSV4 H200 vLLM+DSpark vs vLLM default 对比实验 在 8x NVIDIA H200 上,用统一控制变量对比 **vLLM 开启 DSpark 投机解码** 与 **vLLM 默认配置** 的 TTFT / TPOT / 吞吐表现。 ## 目的 你之前的观察是:开启 DSpark 后 TTFT 比默认 vLLM 更长。这个实验把两个配置放在同一套场景下重测,确认现象并量化差异,为后续分析根因提供数据。 > 每次 server 启动的**完整命令行参数**会写入 `results///results.json` 的 `config.server_args`,方便在 P800 等其他平台复现时保持参数一致。 ## 控制变量 | 维度 | 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-DSpark` checkpoint;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 bash experiments/dsv4_h200_vllm_dspark_vs_default/run_bench.sh ``` 结果保存在 `experiments/dsv4_h200_vllm_dspark_vs_default/results//`: ``` results// ├── 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`