# MiniMax-H3 在 NVIDIA B300 上的 SGLang 部署测试报告(方案一:原生拓扑矩阵) > 模板说明:结构完全对齐《MiniMax-H3 在 RTX 6000D 上的 SGLang 多实例部署测试报告》(飞书 wiki ZPtMwtunEiOb39kfV6ocGhp3nLf)。 > 所有【待填】处由实验结果填入;数据来源:`/data/wxy/results/minimax_h3_b300_matrix//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、单卡双实例×8(16 实例); - 实例内批并发:`--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×4:FL2VA 0.010769 QPS / Ref2VA 0.006234 QPS)的整机提升:______ ## 2. 实验环境与设计 | 项目 | 固定配置 | |---|---| | 服务器 | Host B300,8×NVIDIA B300 SXM6,单卡 288 GB HBM3e | | 模型 | /data/hf_models/MiniMax-H3 | | 框架与环境 | SGLang;【待填】环境路径(6000D 对照为 /root/.miniconda3/envs/sglang,sglang 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 steps;5 秒;16:9;flow_shift=12.0;audio_flow_shift=3.0;seed=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×4);B300 单卡 288GB 可整模型驻留, 以**同语义的并行档位**对应:8 卡并 = Ulysses-8,4 卡并 = Ulysses-4,单卡 = tp1(Ulysses-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 | 30010–30080 | | share2x8 | 16 | 1(单卡双实例) | tp1 × 共享卡(实验项) | 1 | 30010–30160 | 每方案 × 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 口径):并发副本数 ÷ 该分辨率平均时延; - 综合 QPS(FL2VA/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` 后启动同数量 client;FL2VA 完成后释放服务再切 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.tsv(列:topo 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.007646(130.79s)/ Ref2VA 0.004580;TP4×2 0.009723;TP2×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 分辨率整机 QPS(FL2VA / 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 与 6000D(RTX 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 卡实例 ×4(TP2×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 对照(同请求同 seed,TP2×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 根目录 `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`