sskj/experiments/h200/dsv4_h200_vllm_tp8_custom_bench
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_vllm_tp8_custom_bench

目的

当 vLLM 使用 TP=8Tensor Parallel = 8部署时单张 H200 上运行 1 个服务,独占全部 8 张 GPU

服务 端口 GPU 组
1 30005 0, 1, 2, 3, 4, 5, 6, 7

TP=8 提供最大的单服务 tensor-parallel 宽度,适合极高并发、大 batch 场景。本实验使用 自定义压测客户端 bench_client.py,直接调用 OpenAI /v1/chat/completions API。

与多服务方案的区别

特性 TP=2 (4 服务) TP=4 (2 服务) TP=8 (1 服务)
服务数量 4 2 1
每服务 GPU 2 4 8
单服务吞吐 较低 中等 最高
集群总吞吐 相近 相近 相近
适用场景 低并发、低延迟 中等并发 极高并发、大 batch

文件说明

文件 说明
bench_client.py 自定义异步压测客户端(复用 TP=2/TP=4 版本)
config.env 实验配置(单服务、端口 30005
run_bench.sh 编排脚本:启动 1 个服务 → 运行压测 → 解析结果
start_server.sh 启动 1 个 vLLM TP=8 服务(占用全部 8 GPU
parse_results.py 解析 bench_client.py 输出的 JSONL生成 results.json + report.md

快速运行

# 完整流程(自动启动服务、压测、生成报告)
bash experiments/dsv4_h200_vllm_tp8_custom_bench/run_bench.sh

# 跳过服务管理(已有服务在运行)
SKIP_MANAGE_SERVER=1 bash experiments/dsv4_h200_vllm_tp8_custom_bench/run_bench.sh

# 单独运行压测客户端(单服务)
python3 experiments/dsv4_h200_vllm_tp8_custom_bench/bench_client.py \
  --host 127.0.0.1 --port 30005 \
  --model deepseek-v4-flash \
  --concurrency 32 --input-len 512 --output-len 256 --num-prompts 640 \
  --output-file /tmp/test.jsonl

# 解析已有结果
python3 experiments/dsv4_h200_vllm_tp8_custom_bench/parse_results.py \
  experiments/dsv4_h200_vllm_tp8_custom_bench/results/<RUN_ID>

场景设计

本实验覆盖了从 单并发128 并发 的梯度,以及不同输入/输出长度组合:

并发 输入长度 输出长度 请求数 说明
1 512 256 20 单并发基线,测纯延迟
2 512 256 40 低并发
4 512 256 80 中低并发
8 512 256 160 中等并发
16 512 256 320 中高并发
32 512 256 640 高并发
64 512 256 1280 很高并发
128 512 256 2560 极限并发,测吞吐上限
1 2048 512 20 长输入基线
8 2048 512 160 长输入中并发
32 2048 512 640 长输入高并发
128 2048 512 2560 长输入极限并发
1 4096 1024 20 超长输入基线
8 4096 1024 160 超长输入中并发
32 4096 1024 640 超长输入高并发
128 4096 1024 2560 超长输入极限并发

输出格式

同 TP=2/TP=4 版本,输出 JSONL 原始数据、results.json 结构化结果、report.md 人类可读报告。

单独启动/停止服务

# 启动服务
bash experiments/dsv4_h200_vllm_tp8_custom_bench/start_server.sh

# 停止run_bench.sh 会自动停止,但也可以手动)
port=30005
pid_file="experiments/dsv4_h200_vllm_tp8_custom_bench/server_port${port}.pid"
[[ -f "$pid_file" ]] && kill "$(cat "$pid_file")" 2>/dev/null || true
rm -f "$pid_file"
pkill -9 -f "vllm serve.*DeepSeek-V4-Flash" 2>/dev/null || true

注意事项

  • 服务独占全部 8 张 GPU确保无其他进程占用 GPU。
  • 模型文件路径:/data/models/DeepSeek-V4-Flash
  • TP=8 相比 TP=2/TP=4 单服务延迟最低,但无法通过多服务并行提升低并发下的集群利用率。
  • 健康检查依赖 /health 端点vLLM 默认启用)。
  • 如果服务频繁崩溃,检查 GPU 显存是否充足OOM 是最常见原因)。