跳转至

MiniMax H3:H20 音视频生成部署、测试与压测计划

本文保留原始测试方案;已完成结果、配置调整与适用边界见实测文档。MiniMax H3 需要联合执行条件编码、音视频扩散与 音视频解码;本文以 SGLang Diffusion 和 vLLM-Omni 为两套候选运行时。

1. 固定测试范围

首轮使用 MiniMaxAI/MiniMax-H3 官方完整权重,保留其原始 BF16/FP32 混合精度; 先测 FL2VA 分区的文本生成及首尾帧控制,再切换 Ref2VA 分区测试参考图片、视频和音频。 两引擎按相同顺序复用同一节点,避免并行争抢资源。

已有 ComfyUI 部署记录 只完成页面和模型发现,不作为 H3 视频生成通过的证据。其 pruned INT4/INT8 权重不进入完整官方模型性能表。

MiniMax 官方模型卡提供完整组件、参考请求和输出。下载应包含两个 DiT 分区、共享编码器、 Tokenizer/Processor、视频及音频 VAE、配置和所需自定义代码。先核对实际仓库 Revision 及目录格式,再配置本地路径;不同导出布局不能仅靠软链接假装兼容。 来源:官方模型卡

2. 硬件与加载

资源 首轮候选 验证边界
H20 141GB 单节点 4 卡,单 DiT,Ulysses4 参照 Hopper 方案;H20 仍须完整生成确认
H20 96GB 单节点 4 卡,优先 TP2 × Ulysses2 容量候选;不能只把四卡显存相加判断能否加载
RTX PRO 5000 先确认具体显存,再考虑 4 卡 TP2 × Ulysses2 官方 72GiB 配方不能直接套给其他显存版本
CPU/内存 首轮请求 32 CPU、192GiB,内存 limit 384GiB 加载峰值和 Offload 另计,按节点余量调整
本地 NVMe 以文件清单总字节数加余量为准;核对的源目录约 498.6GB,至少预留 550GB 模型与输出分目录;共享存储只读

SGLang 的 H200 Ulysses4 和 H100 TP2×Ulysses2 是已公开的起点;本实验沿用拓扑思路, 不移植其性能数字。vLLM 的 Blackwell 专用 attention 优化不直接用于 H20。 来源:SGLang H3 CookbookvLLM H3 Recipe

路径约定:共享源由运维填写;宿主机示例 /srv/models/MiniMax-H3/v1(须替换为实际 NVMe 挂载路径),容器 /models-nvme/MiniMaxAI/MiniMax-H3。宿主机必须用 findmnt -Tlsblk 确认底层 NVMe。 复制完成时比较源/目标逐文件名称与大小、分片索引引用,并记录 REVISION;不全量读权重 计算哈希。全部检查通过再写 .aik8s-complete。启动脚本拒绝缺少标记或 Revision 的目录。

只为选中的 GPU 节点预热。模型还未完整下载时不启动正式 GPU 服务。共享存储此前有 ENOSPC 现象,下载完成状态必须以文件完整性核对为准,不能只看 df 的汇总剩余容量。

3. 镜像与 Kubernetes 准备

固定基础镜像 Digest、框架源码 Commit、Python/PyTorch/CUDA/FFmpeg 版本,依赖在 构建期安装。源码覆盖方式必须运行 import、CLI、H3 模块和依赖一致性检查,不能以 Docker build 成功替代运行时验收。镜像交付分为:上游解析、构建、离线 CPU 探针、staging、生产、 目标 Registry、GPU 完整生成,各阶段单独记录。

SGLang 使用 sglang[diffusion],vLLM 使用 vllm-omni 与其兼容的核心 vLLM。 vLLM 官方 Recipe 指出 H3 专用基础镜像落后于模块化服务源码,因此准备固定源码的派生镜像。 准确状态见仓库 examples/minimax-h3-h20/images/README.md

部署要求:每个引擎一个 Recreate Deployment,初始 replicas=0;四卡 requests=limits; 共享模型挂载只读,独立输出目录,/dev/shm 使用有上限的内存卷;Service 指向 API 端口。 创建前固定节点、NVMe 路径、镜像 Digest 与命名空间。Ingress 允许适量媒体上传并配置 长请求超时,URL 参考媒体只能指向预设的测试素材服务。无需为了单节点实验开放跨节点 RDMA。

启动探针预留 60 分钟,启动期间不使用短 liveness 强制重启。Ready 后必须生成并解码 一个 50 步短视频;仅 /health 为 200 不算业务验收。

4. 功能与样本清单

Gate 输入/动作 验收
T2VA 中英文固定 Prompt,运动、物体、环境声、镜头约束 有效视频和音轨,场景与声音符合指令
FL2VA 首帧、尾帧、首尾两帧各一个用例 对应端点与参考一致、过渡连贯
Ref2VA 图片、视频、图片+音频、混合引用 主体/风格/声音参考有效,不要求逐像素保持源视频
API 排队、轮询、失败状态、非法素材、超限参数 正常终态、明确错误,失败后下一个请求可恢复
媒体 MP4 实际解码,检测视频流/音轨/时长/帧率 默认目标 24fps、AAC 双声道 32kHz,无损坏/NaN 产物
UI 输入、排队、视频播放、声音和下载 Light 模式截图,记录请求 ID 与输出文件

准备自有或可公开使用的素材:2 张同一物体首尾帧、3 张不同主体参考图、2 个 5 秒参考视频 (有声/无声)、1 个 5 秒 WAV。素材先做格式、时长、尺寸检查,以清单保存来源与文件摘要。 无需先下载大型评测数据集;机器评分后续若需要 VBench/CLIP/ASR,另建依赖和权重清单, 只在内网运行。素材、请求和输出不得包含内部账号或生产信息。

OpenWebUI 接入先检查是否支持本部署的 Video API。如果不能原生提交/播放,使用独立浅色 视频测试页面保留完整证据;不得把文本模型连接成功写成音视频 UI 已通过。

5. 公平性能矩阵

同一节点、GPU 拓扑、模型 Revision、分区、原始精度、Prompt、素材、种子、目标尺寸、 输出时长和采样步数。首轮 50 步,video flow shift=12、audio flow shift=3;CFG-distilled 模型不增加第二个 CFG 分支。完整权重、Turbo、FastH3、量化、缓存优化分别建表。

阶段 请求 并发 正式样本
基础 T2VA 768p,5 秒,50 步 1 3 次
时长 T2VA 768p,10/15 秒 1 各 3 次
排队 T2VA 768p,5 秒 2,稳定后 4 每组至少 3×并发
条件生成 FL2VA、Ref2VA,768p,5 秒 1 每种素材组合 3 次
容量探索 2 卡/4 卡、TP/Ulysses、Offload 1 独立实验,不混入同配置主表

每种分辨率/时长先预热一次,并另存冷启动结果。先串行对齐输出尺寸、实际帧数和采样 NFE; 客户端请求中的 seconds 并不保证两框架帧数公式完全相同,差异必须在主对比前解决。

共同指标:客户端端到端秒数、服务端编码/DiT/VAE/封装耗时、排队时间、成功率、峰值 GPU 显存、功耗、视频/小时、生成视频秒数/墙钟秒数。RTF 定义为 E2E/实际视频秒数,越低越好。 客户端 E2E 包括输出下载,不包含本地 ffmpeg 解码校验;轮询开销、网络路径和同步/异步 API 差异要单独记录。仅 3 个样本报告原值、中位数和范围,不用它宣称可靠 P99。

压测客户端不使用 vllm bench serve 的随机文本 Token 模式。两边使用同一驱动程序的 协议适配器;上传/下载、超时、排队、预热和成功标准一致。质量判断包括主体一致性、运动 连续性、音画同步、首尾帧保持和 Prompt 遵循;同一个 seed 不意味着两框架输出逐像素相同。

6. 停止、耗时与交付

先用第一个 50 步样本测实际耗时,再估剩余时间:服务初始化 + 各 Case 预热 + 排队批次 × 实测单批耗时 + 素材校验/截图。H20 首轮可预留每引擎半天资源窗口,但在首样本完成前 不给固定完成时刻。失败、超时、OOM、音轨缺失、输出不可解码时停止扩大并发并保存证据。

测试与压测资源统一部署在 aik8s-ms。输出使用独立持久化 hostPath,生成的音视频不删除; 每批复制回本地,核对文件大小及 SHA-256,保留失败或不符合媒体约定的产物以便排查。

每个引擎完成后导出参数、版本、请求 JSON、媒体信息、日志、监控、原始 MP4 和截图,再 缩容到 0,确认 GPU 释放后切换下一个引擎。完整 2K 商用 API 工作流另设实验,不把调用 外部 H3-Context-IR/Regenerate 服务的效果归为纯本地部署结果。

交付顺序:镜像 CPU 验证 → 双 Registry 同步 → 模型/NVMe 预检 → 单节点完整生成 → 功能与质量 → 固定性能矩阵 → UI 证据 → 缩容 → 去标识化公开实测文档。