sskj-h3/throughput/sglang-base-b300/REPORT_TEMPLATE.md
2026-08-31 15:57:13 +08:00

192 lines
10 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.

# MiniMax-H3 在 NVIDIA B300 上的 SGLang 部署测试报告(方案一:原生拓扑矩阵)
> 模板说明结构完全对齐《MiniMax-H3 在 RTX 6000D 上的 SGLang 多实例部署测试报告》(飞书 wiki ZPtMwtunEiOb39kfV6ocGhp3nLf
> 所有【待填】处由实验结果填入;数据来源:`/data/wxy/results/minimax_h3_b300_matrix/<run_id>/summary.tsv`(每 phase 一行)与各 `summary.json`。
> 6000D 对照基线(同口径 20 步/5s/16:9/480-1080×8/seed=1101+prompt_index已在各节标注。
## 1. 结论摘要
本轮在单台 8×NVIDIA B300 SXM6 服务器上,对 MiniMax-H3 的原生 SGLang 部署进行了等总量、等任务、等分辨率的 serving 测试,覆盖拓扑 × 批并发 × 精度三个轴:
- 拓扑Ulysses-8×1、Ulysses-4×2、tp1×8、单卡双实例×816 实例);
- 实例内批并发:`--batching-max-size` = 1 / 2 / 4
- 精度BF16 / FP8。
每种部署均执行 64 条正式请求FL2VA 与 Ref2VA 各 32 条480P/720P/768P/1080P 各 8 条20 steps、5 秒、16:9
【待填】结论要点:
- 吞吐优先的最优拓扑______预期候选u8x1_b2/b4 或 tp1x8_b2判定依据machine_qps 与打包率)
- 单请求时延最优______预期u8x1 batch1
- FP8 相对 BF16 的吞吐/显存收益______
- 相对 6000D 基线TP2×4FL2VA 0.010769 QPS / Ref2VA 0.006234 QPS的整机提升______
## 2. 实验环境与设计
| 项目 | 固定配置 |
|---|---|
| 服务器 | Host B3008×NVIDIA B300 SXM6单卡 288 GB HBM3e |
| 模型 | /data/hf_models/MiniMax-H3 |
| 框架与环境 | SGLang【待填】环境路径6000D 对照为 /root/.miniconda3/envs/sglangsglang 0.5.17 |
| 任务 | FL2VA、Ref2VA两个 variant 分阶段启动并顺序测试 |
| Prompt | /root/.cache/sglang/vbench_subject_consistency.txt取 8 条 VBench subject-consistency prompt |
| 参考图 | /data/wxy/sskj-MiniMax-H3/assets/reference_images/landscape_mountain_lake.jpg |
| 正式生成参数 | 20 inference steps5 秒16:9flow_shift=12.0audio_flow_shift=3.0seed=1101+prompt_index |
| 分辨率 | short edge 480、720、768、1080每个任务每档 8 条 |
| 预热 | 每实例 1 条、5 steps预热不计入正式结果 |
| 服务并发 | `--batching-max-size` 1/2/4客户端 in-flight 与服务端同值);不同实例并行 |
### 2.1 部署方案矩阵(与 6000D 报告的对应关系)
6000D 报告以"每实例 GPU 数"定义方案TP8×1 / TP4×2 / TP2×4B300 单卡 288GB 可整模型驻留,
以**同语义的并行档位**对应8 卡并 = Ulysses-84 卡并 = Ulysses-4单卡 = tp1Ulysses-1
| 方案 | 实例数 | 每实例 GPU | 并行形态 | 批并发 | 服务端口 |
|---|---|---|---|---|---|
| u8x1 | 1 | 8 | Ulysses-8对应 6000D TP8×1 | 1 | 30010 |
| u8x1_b2 / u8x1_b4 | 1 | 8 | Ulysses-8 + `--encoder-parallel dp` | 2 / 4 | 30010 |
| u4x2 / u4x2_b2 | 2 | 4 | Ulysses-4对应 6000D TP4×2 | 1 / 2 | 30010、30020 |
| tp1x8 / tp1x8_b2 | 8 | 1 | tp1对应 6000D TP2×4 的"多实例"结构) | 1 / 2 | 3001030080 |
| share2x8 | 16 | 1单卡双实例 | tp1 × 共享卡(实验项) | 1 | 3001030160 |
每方案 × BF16 / FP8 两档FP8 档追加 `--quantization fp8`
### 2.2 样本总量与均衡分配
同 6000D 口径:每种部署正式总量恒定为 64 条,每任务 32 条4 分辨率 × 8 prompt分片按 `prompt_index % num_replicas`
保证每个实例拿到相同数量的 480/720/768/1080 样本。
### 2.3 指标口径
- `machine_wall_s`:同任务最早正式请求开始到最晚正式请求结束的整机墙钟时间;
- `machine_qps`:成功请求数 ÷ machine_wall_s
- `latency_mean_s / latency_p95_s`:单请求端到端时延(提交→服务端生成→轮询完成),不含 server 启动与预热;
- 分辨率级 QPS对照 4.3/4.4 口径):并发副本数 ÷ 该分辨率平均时延;
- 综合 QPSFL2VA/Ref2VA 各半):`2 × 并发副本数 / (FL2VA 平均延迟 + Ref2VA 平均延迟)`
## 3. 启动与测试脚本
编排脚本:`/data/wxy/sskj-h3/throughput/sglang-base-b300/scripts/run_sglang_h3_b300_matrix.sh`
客户端与汇总:`/data/wxy/sskj-h3/throughput/sglang-base-b300/scripts/minimax_h3_b300_bench.py`
```bash
ssh B300
cd /data/wxy/sskj-h3/throughput/sglang-base-b300
DRY_RUN=1 bash scripts/run_sglang_h3_b300_matrix.sh # 打印 32 phase 计划
RUN_ID="b300-20steps-5s-$(date +%Y%m%d-%H%M%S)" \
setsid bash scripts/run_sglang_h3_b300_matrix.sh \
>/data/wxy/sglang_b300_matrix.log 2>&1 &
tail -f /data/wxy/sglang_b300_matrix.log
```
编排脚本对每个 topo 自动计算 replicas、分配连续 GPU`GPU_MODE=partition``share2x8``GPU_MODE=share`
独立端口,等待 `/health` 后启动同数量 clientFL2VA 完成后释放服务再切 Ref2VA。
不可行组合(如 BF16 单卡双实例)在 `SKIP_ON_FAIL=1` 下记录后跳过。核心服务启动参数u8x1 示例):
```bash
CUDA_VISIBLE_DEVICES="0,1,2,3,4,5,6,7" \
sglang serve \
--model-path /data/hf_models/MiniMax-H3 \
--model-variant "$variant" \
--backend sglang \
--performance-mode speed \
--num-gpus 8 --tp-size 1 --ulysses-degree 8 \
--use-fsdp-inference false \
--enable-torch-compile false \
--batching-max-size 1 --batching-delay-ms 0 \
--warmup-resolutions 1344x768 \
--host 0.0.0.0 --port "$port"
```
客户端通过 SGLang 异步 `POST /v1/videos` 提交、`GET /v1/videos/{id}` 轮询;每条请求写入 JSONL
阶段结束后聚合为 summary.json 与 summary.tsvtopo prec replicas tp ulysses batching inflight task expected recorded completed failed machine_qps latency_mean_s latency_p95_s machine_wall_s
## 4. 测试结果
### 4.1 整机吞吐与端到端时延(对照 6000D 报告 4.1
| 方案 | 任务 | 成功/总数 | machine QPS | 平均时延(s) | P95(s) | 墙钟(s) |
|---|---|---|---|---|---|---|
| u8x1 BF16 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| u8x1 BF16 | Ref2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| u8x1_b2 BF16 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| u8x1_b4 FP8 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| u4x2 BF16 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| tp1x8 BF16 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| tp1x8_b2 FP8 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| share2x8 FP8 | FL2VA | 【待填】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| ...(其余 phase 同构) | | | | | | |
6000D 对照同口径TP8×1 FL2VA 0.007646130.79s/ Ref2VA 0.004580TP4×2 0.009723TP2×4 0.010769 / 0.006234。
### 4.2 分辨率平均时延
| 任务 | 方案 | 480 | 720 | 768 | 1080 |
|---|---|---|---|---|---|
| FL2VA | u8x1 BF16 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| FL2VA | u8x1_b4 FP8 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| FL2VA | tp1x8 BF16 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
| FL2VA | ... | | | | |
| Ref2VA | ... | | | | |
(数据取 summary.json 的 `by_short_edge.latency_mean_s`。)
### 4.3 / 4.4 分辨率整机 QPSFL2VA / Ref2VA
| SGLang 配置 | 480p | 720p | 768p | 1080p |
|---|---|---|---|---|
| 【方案】 | 【待填】 | 【待填】 | 【待填】 | 【待填】 |
### 4.5 FL2VA 和 Ref2VA 各占 50% 时的综合 QPS
公式同 6000D 报告2 × 并发副本数 / 时延和)。表:【待填】。
预期观察点1080 档是否再次成为长尾主因、批并发batching>1是否改变 1080 的相对惩罚。
## 5. 拓扑比较与建议(分析框架,结论待测)
| 维度 | 6000D 结论TP8/TP4/TP2 序列) | B300 预期/待测 |
|---|---|---|
| 吞吐最优 | TP2×4多实例 | 【待测】候选 u8x1_b2/b4、tp1x8_b2 |
| 时延最优 | TP8×1 | 【待测】候选 u8x1 batch1 |
| FP8 | 未测 | 【待测】显存 -38% → 批容量翻倍 |
| 1080p 惩罚 | 拆分越细惩罚越明显 | 【待测】批并发是否能摊薄 |
建议框架(沿用 6000D 报告):
- 若以"每台机器每天完成条数"为核心 → 选吞吐最优档;若兼顾等待时间 → 折中档u4x2 或 u8x1_b2
- 1080 与低分辨率拆池,避免 head-of-line blocking
- 按真实流量比例做并发队列测试后再定最终档位。
## 6. 与 6000D / vLLM-Omni 的同口径对照
### 6.1 与 6000DRTX 6000D 8 卡)横向对照
同任务/prompt/分辨率/steps/时长/种子、按整机口径:
| 部署 | 任务 | 6000D QPS | B300 QPS | B300 相对 |
|---|---|---|---|---|
| 8×1 卡实例6000D TP8×1 ↔ B300 u8x1 | FL2VA | 0.007646 | 【待填】 | |
| 8×1 卡实例 | Ref2VA | 0.004580 | 【待填】 | |
| 4×2 卡实例TP4×2 ↔ u4x2 | FL2VA | 0.009723 | 【待填】 | |
| 2×1 卡实例 ×4TP2×4 ↔ tp1x8 | FL2VA | 0.010769 | 【待填】 | |
### 6.2 与 vLLM-Omni 对照
【待填】B300 上 vLLM-Omni 同口径结果6000D 上 vLLM-Omni 内部为 DiT TP2×USP4/2/1多数格子快于 SGLang +25.68%/+47.59%/+24.91%/+22.09%)。
注意两套 API/编码链路不同SGLang 异步 job 轮询 vs vLLM-Omni 同步 MP4仅用于整机容量判断视频质量需另行盲评/VBench。
## 7. 优化策略对齐(方案二占位)
6000D 报告 Cache-DiT 对照(同请求同 seedTP2×4 上叠加):
- 配置RDT=0.1 / MC=4 / Fn=2 / Bn=0 / W=2 / SCM=dynamic + h3_cache_patch
- 效果:整机 QPS +95.3%FL2VA/ +121.1%Ref2VA相对 TP8×1 基线达 2.75× / 3.01×各分辨率一致受益1.97×2.39×1080p 无长尾恶化。
B300 待跑:在 B300 最优拓扑上叠加同类 Cache-DiT / Turbo LoRA / SubBlock 等优化,对齐 6000D 表格结构出"表格 1~6"。
(优化策略参考与最终档位待定,本报告先以原生拓扑矩阵收口。)
## 8. 结果与审计文件
- 本轮结果根目录:`/data/wxy/results/minimax_h3_b300_matrix/<run_id>/`
- 汇总文件:各 run 根目录 `summary.tsv`;每个 phase 目录 `summary.json`;每个 client 目录逐请求 `results.jsonl` 与日志;每个 server 目录 `server.log``cuda_visible_devices.txt``outputs/`
- 完整脚本:`/data/wxy/sskj-h3/throughput/sglang-base-b300/scripts/run_sglang_h3_b300_matrix.sh``.../minimax_h3_b300_bench.py`