shishi 4914ff4041 fix(dsv4): disable MTP speculative decoding for fair H20 comparison
MTP (multi-token prediction) speculative decoding was enabled, giving the
910C an unfair decode throughput advantage over the H20 baseline (which
has no MTP). Disable it so the benchmark measures pure model throughput.

- config.env: add DSV4_ENABLE_MTP=0 (default off)
- start_vllm_docker.sh: only add --speculative-config when DSV4_ENABLE_MTP=1
2026-07-29 16:50:13 +08:00

sskj — 多平台大模型推理性能基准测试项目

历史更新见 git log。项目目的与工作流见下方。 项目目的当新显卡GPU/NPU到货时用最短时间完成大模型在该平台上的推理性能评估与部署配置选型。 当前模型DeepSeek-V4-FlashFP8 / INT8后续接入 GLM5.2完全复用本项目的实验与报告流程。 新平台接入 SOPdocs/NEW_PLATFORM_GUIDE.md

这个项目解决什么问题

  1. 新卡快速评估:新平台到货后,按 SOP 复制实验目录、改少量配置,即可跑起与既有平台口径一致的 benchmark横向可比。
  2. 部署配置选型:通过 TP×DP 并行矩阵 + 自适应并发搜索,回答"该平台上哪种并行配置在什么并发下满足 SLO、吞吐最高"。
  3. 数据资产化每轮实验产出结构化结果jsonl/csv/manifest汇总成飞书性能报告并回填多维表格形成可检索的历史数据库。

标准工作流(全流程)

① 跑实验        experiments/<platform>/<experiment>/run_adaptive_concurrency*.sh
                └─ 公共搜索逻辑: scripts/common/adaptive_bench_lib.sh
② 落盘          adaptive_results/<run_id>/
                └─ adaptive_points.jsonl / adaptive_shapes.jsonl / adaptive_summary.* / run_manifest.json
③ 分析          用 Python 从 jsonl 实算禁止目测SLO 口径见 docs/SLO_STANDARDS.md
④ 飞书报告      按飞书 wiki「性能报告编写指南README」写到「显卡性能报告/<平台>」节点下
⑤ 回填多维表格  飞书「模型推理适配 Bench 迭代跟踪」:每成功探测点一行
  • SLO 口径S2 层DSV4-Flash / GLM5.2 均适用):TTFT P95 < 3sTPOT P95 < 50ms,严格小于。详见 docs/SLO_STANDARDS.md
  • 报告编写规范(章节骨架、分析口径、发布流程)以飞书 wiki「显卡性能报告 / 性能报告编写指南README」为准。
  • 多维表格每行 = 一个成功探测点config、Concurrency、Throughput、Input/Output TPS、TTFT/TPOT/E2E P95、SLO达标状态、开发文档链接

目录结构

仓库的目录布局、scripts/common/ 组件职责、结果命名规范与 results.json schema统一见 docs/EXPERIMENT_GUIDE.md(单一权威来源)与 docs/BENCHMARK_WORKFLOW.md

实验索引

TP/DP matrix + 自适应并发(当前主流形态)

实验 说明
experiments/h20/dsv4_h20_vllm_tp_dp_matrix/ H20 + vLLMTP2/DP4、TP4/DP2、TP8/DP1
experiments/h20/dsv4_h20_sglang_tp_dp_matrix/ H20 + SGLang同上
experiments/h200/dsv4_h200_vllm_tp_dp_matrix/ H200 + vLLM
experiments/h200/dsv4_h200_sglang_tp_dp_matrix/ H200 + SGLang
experiments/p800/dsv4_p800_sglang_tp_dp_matrix/ P800 + SGLangINT8TP2/DP4 启动 OOM 无数据,见 config.env 注释)
experiments/pro6000/dsv4_pro6000_vllm_tp_dp_matrix/ RTX 6000D + vLLM
experiments/pro6000/dsv4_pro6000_sglang_tp_dp_matrix/ RTX 6000D + SGLang

每个目录内:run_bench.sh 跑固定并发矩阵;run_adaptive_concurrency.sh 从 C=1 指数倍增搜饱和点;run_adaptive_concurrency_add16.sh 从 C=16 线性 +16 步进、带 TTFT SLO 停止与回退(当前主力用法,见 experiments/ADAPTIVE_CONCURRENCY_USAGE.md)。

其他实验H200 老形态 & 专项)

实验 说明
experiments/h200/dsv4_h200_sglang/ …/dsv4_h200_vllm/ H200 单引擎 baseline
experiments/h200/dsv4_h200_sglang_vs_vllm/ H200 引擎控制变量对比
experiments/h200/dsv4_h200_dspark/ …/dsv4_h200_vllm_dspark_vs_default/ DSpark 投机解码相关
experiments/h200/dsv4_h200_vllm_mtp_vs_default/ vLLM MTP 对比
experiments/h200/dsv4_h200_vllm_tp{2,4,8}_custom_bench/ 自定义压测客户端(多服务负载均衡)
experiments/h200/dsv4_h200_max_context_length/ …/dsv4_h200_long_context_matrix/ …/dsv4_h200_256k_4k_probe/ …/dsv4_h200_64k_sglang_vs_vllm/ 长上下文专项
experiments/p800/dsv4_p800_sglang/ …/dsv4_p800_max_context_length/ …/dsv4_p800_long_context_matrix/ …/dsv4_p800_256k_4k_probe/ P800 baseline 与长上下文专项
experiments/TEMPLATE/ 老式固定场景实验模板

快速复现

以 H20 vLLM 自适应并发搜索为例(其他平台同理,换目录即可):

# 1. dry-run只打印搜索计划不加载模型
cd experiments/h20/dsv4_h20_vllm_tp_dp_matrix
DRY_RUN=1 bash run_adaptive_concurrency_add16.sh

# 2. 单组合冒烟:只测 TP=8、1K/128并发上限 8
RUN_ID=smoke-$(date +%Y%m%d-%H%M%S) \
TP_LIST="8" ISL_LIST="1024" OSL_LIST="128" GRID_LIMIT=1 SEARCH_MAX_CONCURRENCY=8 \
bash run_adaptive_concurrency_add16.sh

# 3. 正式跑(放 tmux
tmux new-session -d -s h20-vllm-adaptive \
  "cd $(pwd) && bash run_adaptive_concurrency_add16.sh"

更多用法(断点续跑 RESUME_RUN_ID、常用覆盖参数experiments/ADAPTIVE_CONCURRENCY_USAGE.md

新平台 / 新模型接入

  • 新显卡:按 docs/NEW_PLATFORM_GUIDE.md 执行,核心动作是复制 experiments/h20/dsv4_h20_<engine>_tp_dp_matrix、改 config.env / adaptive_config.env / matrix.json 三件套,再加 platforms/<chip>.env
  • 新模型GLM5.2:复用同一实验目录结构,新增 experiments/<platform>/glm52_<platform>_<engine>_tp_dp_matrix/改模型路径、量化与引擎启动参数即可SLO 口径、报告流程、多维表格结构不变。

环境要求

  • 公共bash、Python 3、sglang.bench_serving 压测客户端Docker 或 venv绘图分析用 envs/charts/matplotlib
  • 各平台的镜像 / venv / 模型路径见对应实验目录的 config.envplatforms/<chip>.env模型与数据集路径是机器相关的,换机器时按实际路径调整。
  • 环境搭建规范见 envs/README.mdenvs/UV_ENV_SETUP.md

注意事项

  • 提交内容:实验代码 + 最终产物results.json / report.md / adaptive 的 jsonl 与 summary日志、raw_outputs、gpu_logs 不入库(.gitignore 已排除)。
  • 仓库会clone到多台机器实验脚本内引用公共组件一律用 ${SCRIPT_DIR}/../../../scripts/commonTEMPLATE 为 ../../),不要写绝对路径。
Description
No description provided
Readme 1.4 GiB
Languages
Python 63.9%
Shell 32.8%
Cuda 3.3%