sskj/README.md

221 lines
23 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.

# sskj — 多平台大模型推理性能基准测试项目
> **更新2026-08-02 00:08:00 CST**
>
> 修复 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 3 混合 Capture 时序。首轮正式 Run 证明当前 SGLang `/start_profile` 请求会阻塞到捕获结束,旧实现因此在 Profile 完成后才发送 128K Prefill第二份 Trace 未覆盖注入;随后混合背景触发默认 300 秒 Scheduler watchdog第三段未执行。新实现异步触发 Profile先捕获 2 个 Decode Step再通过原生 `/generate` + `input_ids` 立即注入 128K 请求,避免 benchmark 客户端启动延迟;混合背景缩为单波 32 请求Profiling 专用 watchdog 提升至 1800 秒,并让异常退出自动将 manifest 标记为 `FAILED`。
>
> **更新2026-08-01 19:34:34 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 3 正式时间线代码交付。正式 Control 与混合背景统一为 `1K -> 1K, C=32`;所有 `/start_profile` 请求显式记录 `start_step` 和 `num_steps`Control 在活跃 Decode 后跳过 2 Step混合场景先保留 2 个纯 Decode Step 再注入 `128K -> 1`,长 Prefill 从首个 Chunk 开始捕获。继续沿用已通过的双节点 PyTorch/Nsight smoke、16 Rank/6 份 Nsight 报告 fail-closed 门禁和单服务三段 Capture Range正式结果尚未生成因此不创建 `phase3_exp.html` 或 `phase3_code.html`。
>
> **更新2026-08-01 15:24:52 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 2.5 RDMA 需求建模。正式 Run `dsv4pro-phase2_5-20260801-130007` 完成 Scout 5/5 与 Confirm 6/664K Prefill 在 C=16 已进入约 2,984 input tok/s、79.90 Gbit/s/rail 的平台C=32/64 不再显著增长。拟合通信强度为 3.332 MB/input-token/rail单 Rail 400G 需约 15,006 input tok/s约为当前平台的 5 倍,因此当前是模型计算/实现吞吐先饱和,不是 RDMA 先饱和。新增 `phase2_5_exp.html`、`phase2_5_code.html`、精简证据集和可复用的模型部署 RDMA 需求评估流程;实验结束后双节点容器与 16 张 GPU 已清理。
>
> **更新2026-08-01 02:40:00 CST**
>
> 新增 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 2.5 RDMA 需求建模唯一入口。实验保持现有 TP16/EP2 服务参数不变,先以 `64K -> 1` 的 C=1/4/16/32/64 建立 Input TPS 与每 Rail HCA 带宽关系,再自动选择平台前、拐点和最大稳定并发,对 `64K -> 1K` 重复确认。结果将给出每 Token 跨机字节数、400G 所需 Token TPS、并发饱和曲线和“模型计算先饱和还是 RDMA 先饱和”的机器可读结论;正式结果尚未生成,因此暂不创建 Phase 2.5 HTML 档案。
>
> **更新2026-07-31 19:02:00 CST**
>
> Phase 3 Nsight smoke 已在 Head/Worker 各生成一份可解析报告;首份时间线确认 NCCL AllReduce、Sparse MLA、CUTLASS GEMM 与 MoE kernel 均可见。根据 smoke 修正正式 captureDecode 对照和混合负载必须等服务实际进入 `Decode batch` 后才触发;每段等待本节点全部 8 个 rank 完成,而非任一 rank双节点近同步停止以减少 Gloo 断链噪声。`nsys stats` 改为可写临时 SQLite、保留 Kernel/API/NVTX 高价值汇总并删除临时库,结果与报告数量均 fail-closed。
>
> **更新2026-07-31 18:53:00 CST**
>
> Phase 3 PyTorch Profiler 首轮 smoke 已证明双节点 16 个 rank 均可完成 trace 写盘Head/Worker 分别生成 8 份、约 1.5/1.4 GB 压缩 trace。修复当前 OpenSSH 不接受 `scp remote:/path/.` 导致 Worker 结果未回收的问题,改为 SSH tar 流式传输;正式入口不再忽略回收失败,并新增至少 16 份 PyTorch rank trace、至少 2 份 Nsight 节点报告的结果门禁。
>
> **更新2026-07-31 18:43:00 CST**
>
> 为 Phase 2 实验档案第 11 节的 GPU/DCGM、CPU/进程/NUMA、双 Rail RDMA、PCIe/NCCL 四组结果补充服务器证据路径。每组同时标明结构化汇总 CSV、Head/Worker 原始采样日志、通信原始输出及实际命令文件,便于从结论直接追溯最终 Run `dsv4pro-phase2-20260731-163620` 的证据。
>
> **更新2026-07-31 18:38:00 CST**
>
> 新增 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 3 时间线分析唯一入口。代码提供双节点环境审计、PyTorch Profiler smoke、Nsight Systems smoke 与三段正式 capture range覆盖 Decode 对照、Decode 背景叠加 128K Prefill、独立 128K Prefill沿用 Phase 1 已验证的 TP16/EP2、CUDA Graph 与双 Rail NET/IB 配置,不重复 Phase 2 的硬件采样和通信微基准。阶段尚未产出正式结果,因此按档案门禁暂不创建 `phase3_exp.html` 或 `phase3_code.html`。
>
> **更新2026-07-31 17:22:20 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 2 正式收口。最终 Run `dsv4pro-phase2-20260731-163620` 在 28 分 44 秒内完成 8/8 benchmark、8/8 精确测量窗口和 18/18 采集器启停;混合 Prefill 令 Decode Output TPS 下降 23.96%、TPOT P95 增加 66.75%。GPU/CPU/NUMA、双 Rail RDMA、PCIe P2P、8/16-GPU AllReduce 与 `NCCL_CROSS_NIC=0/1/2` 数据均已归档;证据排除原始 Rail 带宽饱和、整机 CPU 饱和、GPU 降频和 CROSS_NIC 选择作为首要原因。实验结束后两节点容器、端口和 16 张 GPU 均已清理。
>
> **更新2026-07-31 17:08:30 CST**
>
> 修正阶段档案门禁的适用范围:规则禁止在 Phase 尚无阶段结果时提前创建 HTML但不追溯撤下已经完成正式 Run 和结果汇总的档案。Phase 2 已有正式 Run `dsv4pro-phase2-20260731-130125` 的 8/8 结果,因此恢复 `phase2_exp.html`、`phase2_code.html` 及主计划、Phase 1/2 页面之间的双向导航。
>
> **更新2026-07-31 17:01:56 CST**
>
> 固定阶段档案生成门禁:某个 Phase 在实验结束、结果汇总并完成汇报确认前,不创建或维护 `phaseN_exp.html` 与 `phaseN_code.html`;进行中只维护代码、原始结果和主计划状态。阶段确认完成后再一次性生成两份最终 HTML。Phase 2 尚待最终正式复跑,因此暂时撤下其两份 HTML 及导航;已完成的 Phase 1 档案继续保留。
>
> **更新2026-07-31 16:46:05 CST**
>
> 统一 DeepSeek-V4-Pro 推理优化档案命名与导航Phase 1/2 实验页分别更名为 `phase1_exp.html`、`phase2_exp.html`,代码页保持 `phase1_code.html`、`phase2_code.html`。主计划中的入口统一为“打开 Phase N 实验档案 / 代码详解”并为实验页与代码页补齐双向链接。Phase 1 状态同步为固定点 11/11、混合 A/B 3/3、阶段总结果 14/14。
>
> **更新2026-07-31 16:27:58 CST**
>
> 完成 Phase 2 Worker 通信代码分发的双节点真机 smoke test。Run `dsv4pro-phase2-stage-smoke-20260731-162326` 依次通过 Head/Worker P2P、两组单机 8-rank AllReduce 和一组双机 16-rank AllReduce全部 `wrong_values=0`。两节点暂存文件 SHA256 一致;结束后 `/tmp` 暂存、通信容器和 GPU 进程均已清理。本次使用 1 MiB、单次迭代仅验证执行链路不作为正式性能数据。
>
> **更新2026-07-31 16:18:35 CST**
>
> 修复 Phase 2 双节点通信基线在 Worker 启动后立即退出的问题。唯一入口仍只在 Head `174.1.51.5` 执行;脚本现在按 `RUN_ID` 将 `communication_baseline.py` 自动暂存到 Head/Worker 的 `/tmp`,校验 SHA256 后只读挂载进通信容器并在结果目录保存当次源码与哈希。Worker `174.1.51.7` 不再依赖同路径 Git 工作树,异常退出也会清理暂存文件。新增回归测试后 Phase 2 单元测试为 9/9。
>
> **更新2026-07-31 15:59:49 CST**
>
> 在 DeepSeek-V4-Pro 双机 Pro6000D 推理优化主计划和 Phase 2 实施档案中增加 `phase2_code.html` 的直接入口,便于从阶段状态、实验命令与结果页面跳转到对应代码调用关系和逐行实现说明。
>
> **更新2026-07-31 15:33:02 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang Phase 2 最终采集代码。提交 `30664faa41f8` 新增正式 benchmark 精确时间窗、双节点 DCGM fail-closed 门禁、进程级 5 秒 Host 采样、机内 PCIe P2P 全矩阵、单机 8-rank 与双机 16-rank AllReduce、`NCCL_CROSS_NIC=0/1/2` A/B以及与 Phase 2 第 5 节逐项对应的结构化 CSV 和 `report.md`。通信/NCCL 术语档案同步补充 DCGM、Host Engine、SM、Warp、NUMA、NIC、PIX/SYS、algbw/busbw 与 Linux 监控工具;最终双机复跑前不进入 Phase 3。
>
> **更新2026-07-31 14:15:00 CST**
>
> 恢复并完善 Phase 2 档案中的采集命令与指标解释。第 5 节现按实际实现记录时间 Marker、`nvidia-smi`、DCGM Field 10011005/1009/1010、`mpstat`、`pidstat`、`perf`、`numastat`、`sar`、`ethtool` 和 `mlx5_0/mlx5_3` HCA Counter并逐项说明字段含义、分析方法及对应原始/汇总文件。同步记录首轮线程级 1 秒 `pidstat` 日志过重,后续应改为进程级 5 秒采样。
>
> **更新2026-07-31 13:59:12 CST**
>
> 补充 Phase 2 双节点执行边界:正式实验前仅需在 Worker `174.1.51.7` 启动并验证 `nvidia-dcgm` Host Engine完整 `run_hardware_contention_attribution.sh all` 入口仍然只在 Head `174.1.51.5` 执行,由其通过 SSH 管理 Worker 服务与采集器。文档明确列出两台节点分别需要运行的命令,避免在 Worker 重复启动整套实验。
>
> **更新2026-07-31 13:40:03 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang TP16 的 Phase 2 首轮硬件归因。正式 Run `dsv4pro-phase2-20260731-130125` 在 26 分 26 秒内完成 8/8 个 benchmark无 OOM混合负载下 Decode Output TPS 下降 24.03%TPOT P95 增加 66.79%。两端双 Rail `NET/IB + GDRDMA` 流量均衡、错误增量为 0最高每 Rail 平均约 70 Gbit/s原始 RoCE 带宽未饱和;整机 CPU 与 GPU 频率也未见全局瓶颈。档案补充了 6000D 无 NVLink、机内 PCIe P2P/IPC、跨机 GDRDMA 的真实通信路径,并记录 Worker DCGM Host Engine 未启动、Case 时间窗过宽和 `pidstat` 日志过大的采集限制。
>
> **更新2026-07-31 13:11:40 CST**
>
> 新增 Phase 1 与 Phase 2 的独立代码详解 HTML 档案,行号固定到提交 `ca1f2f63375c`。文档从唯一入口展开到配置来源、文件调用关系、双机服务与 RDMA 门禁、benchmark 请求生成、混合 Prefill/Decode 时序、两节点采集器、Case 时间窗切片和结构化结果,并为 `MEM_FRACTION_STATIC` 等关键变量记录“默认值定义 → Shell 传递 → 服务参数 → Run 证据”的完整追踪路径。代码档案保持独立,不加入主计划 HTML 或阶段介绍 HTML 的导航。
>
> **更新2026-07-31 11:57:13 CST**
>
> 实现 DeepSeek-V4-Pro 双机 Pro6000D SGLang TP16 的 Phase 2 硬件与资源竞争归因。新增唯一入口 `run_hardware_contention_attribution.sh`,内部复用 Phase 1 的双机服务与 benchmark不要求用户手工启动 Phase 1默认重放长/并发 Prefill、普通/持续/长上下文 Decode 和混合 Prefill/Decode A/B。Head 与 Worker 在同一诊断窗口采集 GPU、DCGM、CPU、进程、NUMA、`eth0/eth3` 和 `mlx5_0/mlx5_3` RDMA 数据,并保存 Case marker、完整命令、Manifest 和结构化汇总。正式执行只需运行 Phase 2 的 `all` 入口。
>
> **更新2026-07-31 10:45:24 CST**
>
> 为 DeepSeek-V4-Pro 双机 Pro6000D SGLang TP16 的 Phase 2 硬件归因同步宿主机监控环境:`174.1.51.5` 与 `174.1.51.7` 均安装 `sysstat 12.5.2``pidstat`、`mpstat`、`sar -n DEV,EDEV` 的 1 秒实时采样验证通过。两节点的 sysstat service/timer 保持 `disabled/inactive`,正式实验由编排脚本显式启停采集,避免后台周期任务干扰 Case。Phase 2 必须同时保存 Head/Worker 的 sysstat、GPU、SGLang 与 RDMA 时间序列;`docker top` 用于 PID 映射,`perf` 用于 CPU 硬件事件,`numastat` 用于 NUMA 亲和,`mlx5_0/mlx5_3` HCA 计数器用于 RoCE 数据面,均不能由 sysstat 完整替代。
>
> **更新2026-07-31 00:11:25 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang TP16 的长 Decode 补测Run `dsv4pro-phase1-long-decode-20260730-234236` 结果 2/2 成功。`1K → 4K, C=16` 生成 65,536 个目标输出 tokenOutput TPS 为 310.02TPOT P95 为 50.33 ms相比 `1K → 1K, C=16`Output TPS 增加 4.99%TPOT P95 仅增加 0.62%。`128K → 1K, C=1` 生成完整 1,024 tokenTTFT P95 为 49.326 sTPOT P95 为 32.24 ms其 TTFT 与 `128K → 1` 纯 Prefill 仅差 2.03%TPOT P95 相比 1K Context 仅增加 2.47%。Phase 1 至此共完成 11 个固定点和 3 个混合结果14/14 成功;两节点容器和 16 张 GPU 已清理。
>
> **更新2026-07-30 23:38:42 CST**
>
> 为 DeepSeek-V4-Pro 双机 Pro6000D SGLang TP16 Phase 1 增加两个最小长 Decode 补充场景:`1K → 4K, C=16` 用于观察持续长输出、KV 增长与稳态 Decode`128K → 1K, C=1` 用于观察长上下文上的 Decode Attention。继续复用唯一 `run_quick_map.sh` 入口和 `CASE_IDS` 过滤,不新增启动脚本;场景验证单测由 9 点更新为 11 点Shell、3 个 Python 单测和两点 Dry-run 已通过。
>
> **更新2026-07-30 23:06:01 CST**
>
> 完成 DeepSeek-V4-Pro 双机 Pro6000D SGLang TP16 Phase 1 正式 quick-map。Head 与 Worker 均通过 `mlx5_0/mlx5_3` 双 Rail `NET/IB + GDRDMA` 门禁9 个固定点和 3 个混合 A/B 结果共 12/12 成功,总用时 28 分 36 秒。32K/128K 单请求 Prefill 输入吞吐为 2,652.76/2,710.16 token/s在 C=32 Decode 中注入一个 128K Prefill 后Output TPS 下降 24.08%TPOT P95 增加 66.55%。阶段 HTML 已重写为只保留成功结果,并补充正式汇总、运行清单和 Phase 2 三个诊断负载;两节点容器和 16 张 GPU 已清理。
>
> **更新2026-07-30 18:40:53 CST**
>
> 为 DeepSeek-V4-Pro 双机 TP16 quick-map 的唯一入口新增 `CASE_IDS` 场景过滤和未知 Case 预检,可在完整九点实验前先跑 1K/32K Prefill 与 C1/C32 Decode 四点 Sanity运行清单会记录实际过滤条件。同步精简阶段档案正文只保留最终成功 Run 与有效结论,历史失败压缩到末尾经验教训。
>
> **更新2026-07-30 17:54:30 CST**
>
> 为 DeepSeek-V4-Pro 双机 TP16 quick-map 加入 RDMA fail-closed 启动保护。唯一 Shell 入口现在只允许计算网 `eth0/eth3` 与其 RDMA HCA `mlx5_0/mlx5_3`,在两端预检并透传 `rdma_cm/uverbs0/uverbs3`,服务健康后必须从两端 NCCL INFO 日志证明 `NET/IB` 和两条 HCA 均已启用,否则 benchmark 不会开始。运行清单新增 RDMA 开关、强制校验和设备路径;语法、结果解析器单测、完整 dry-run 及非法网卡/HCA 负例均已通过,真机 NET/IB 验证与 Phase 1 重跑尚未执行。
>
> **更新2026-07-30 17:45:18 CST**
>
> 修正 DeepSeek-V4-Pro 双机 TP16 quick-map 的 NCCL Socket 网卡错误。控制组确认服务容器未暴露 `/dev/infiniband`NCCL 实际回退 `NET/Socket`;旧 quick-map 又误选低速非计算网,导致冷 1K/32K Prefill 比 `eth0` 计算网 Socket 控制组慢约 10.9 倍/13.25 倍。默认 `NCCL_SOCKET_IFNAME` 已改为 `eth0`;旧约 65 token/s 结果降级为事故证据Phase 2 暂停并等待修正后的 Phase 1。新增双机通信/NCCL 术语 HTML、网络审计报告并保留原 `/data/qqt/sskj` TP16 脚本不变。
>
> **更新2026-07-30 16:38:41 CST**
>
> 完成 DeepSeek-V4-Pro 双机 TP16 新旧脚本 TTFT 口径审计。确认旧产物受到 16 条 Warm-up、跨 Case 固定 Seed 递增长度、未清 Prefix Cache 及前一轮残留服务状态影响;同配置冷请求稳定复现约 16 秒/1K。新增 Phase 1 结果、脚本审计和 Phase 2 设计 HTML 档案,后续 Cold/Warm Prefix 指标分开报告。
>
> **更新2026-07-30 14:33:52 CST**
>
> 新增独立的 `dsv4pro_pro6000d_2node_sglang_tp16_quick_map` 快速性能地图与混合干扰 A/B。实验只保留一个 Shell 入口;旧 TP16 全量脚本保持不变。首轮真机验证已确认双机 TP16 服务可用,并据实测耗时将快速矩阵缩为一波请求,同时修正 Warm-up 污染 Prefix Cache 和混合负载注入时序。
>
> 历史更新见 `git log`。项目目的与工作流见下方。
> **项目目的**当新显卡GPU/NPU到货时用最短时间完成大模型在该平台上的推理性能评估与部署配置选型。
> 当前模型DeepSeek-V4-FlashFP8 / INT8后续接入 GLM5.2**完全复用**本项目的实验与报告流程。
> 新平台接入 SOP[`docs/NEW_PLATFORM_GUIDE.md`](docs/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`](docs/SLO_STANDARDS.md)
- 报告编写规范章节骨架分析口径发布流程以飞书 wiki显卡性能报告 / 性能报告编写指南README)」为准
- 多维表格每行 = 一个成功探测点config、Concurrency、Throughput、Input/Output TPSTTFT/TPOT/E2E P95SLO达标状态开发文档链接)。
## 目录结构
仓库的目录布局`scripts/common/` 组件职责结果命名规范与 `results.json` schema统一见 [`docs/EXPERIMENT_GUIDE.md`](docs/EXPERIMENT_GUIDE.md)单一权威来源 [`docs/BENCHMARK_WORKFLOW.md`](docs/BENCHMARK_WORKFLOW.md)
## 实验索引
### TP/DP matrix + 自适应并发(当前主流形态)
| 实验 | 说明 |
|---|---|
| `experiments/h20/dsv4_h20_vllm_tp_dp_matrix/` | H20 + vLLMTP2/DP4TP4/DP2TP8/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 |
| `experiments/pro6000/dsv4pro_pro6000d_2node_sglang_tp16_quick_map/` | 双机 RTX 6000D + DeepSeek-V4-ProSGLang TP16 快速性能地图与混合干扰 A/B |
| `experiments/pro6000/dsv4pro_pro6000d_2node_sglang_hardware_contention_attribution/` | 双机 RTX 6000D + DeepSeek-V4-ProSGLang TP16 硬件与资源竞争归因 |
TP/DP matrix 目录内`run_bench.sh` 跑固定并发矩阵`run_adaptive_concurrency.sh` C=1 指数倍增搜饱和点`run_adaptive_concurrency_add16.sh` C=16 线性 +16 步进 TTFT SLO 停止与回退当前主力用法 `experiments/ADAPTIVE_CONCURRENCY_USAGE.md`)。专项 quick-map 的入口以对应目录 README 为准
### 其他实验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 自适应并发搜索为例其他平台同理换目录即可
```bash
# 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`](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 口径报告流程多维表格结构不变
## 环境要求
- 公共bashPython 3`sglang.bench_serving` 压测客户端Docker venv绘图分析用 `envs/charts/`matplotlib)。
- 各平台的镜像 / venv / 模型路径见对应实验目录的 `config.env` `platforms/<chip>.env`**模型与数据集路径是机器相关的**换机器时按实际路径调整
- 环境搭建规范见 `envs/README.md` `envs/UV_ENV_SETUP.md`
## 注意事项
- 提交内容实验代码 + 最终产物results.json / report.md / adaptive jsonl summary日志raw_outputsgpu_logs 不入库`.gitignore` 已排除)。
- 仓库会clone到多台机器实验脚本内引用公共组件一律用 `${SCRIPT_DIR}/../../../scripts/common`TEMPLATE `../../`不要写绝对路径