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

10 KiB
Raw Blame History

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

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、分配连续 GPUGPU_MODE=partitionshare2x8GPU_MODE=share 独立端口,等待 /health 后启动同数量 clientFL2VA 完成后释放服务再切 Ref2VA。 不可行组合(如 BF16 单卡双实例)在 SKIP_ON_FAIL=1 下记录后跳过。核心服务启动参数u8x1 示例):

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.logcuda_visible_devices.txtoutputs/
  • 完整脚本:/data/wxy/sskj-h3/throughput/sglang-base-b300/scripts/run_sglang_h3_b300_matrix.sh.../minimax_h3_b300_bench.py