vLLM-Omni上的MiniMaxH3:从系统级优化到基于FastVideoFastH3...

发布时间 2026-09-15 16 天前
来源 机器之心
字数 7,075 字
查看原文

补充自 2026年09月15日

AI智能总结

MiniMax H3 是一个可接受文本、图像、视频与音频输入并联合生成同步音视频的模型,文章指出其服务存在系统级时延瓶颈:单个请求需经过 Qwen3-VL 编码器、长序列音视频 DiT、视频与音频 VAE、跨设备/进程传输以及 H.264/AAC 封装。

MiniMax H3 的服务是一个系统级问题。一个请求要经过一个庞大的 Qwen3-VL 编码器、一个长序列的音视频 DiT(Diffusion Transformer,扩散变换器)、相互独立的视频与音频 VAE(Variational Autoencoder,变分自编码器)、设备与进程的边界,最后还要完成 H.264/AAC 的封装。只优化 DiT,其余环节的时延依然留在那里。

因此 vLLM-Omni 从完整的常驻流水线入手:注意力与通信、融合的 DiT 算子、并行 VAE 解码、紧凑的输出传输,以及并行的 MP4 构建。随后由 FastVideo 的 FastH3 处理剩下的主导项,把 49 次 DiT 前向替换为 4 次。

在实测的八卡 B300 配置上,FastH3 产出一个 10.125 秒的完整 MP4 用时 8.678 至 8.710 秒。本文中的「实时」指完整响应的就绪时间快于其播放时长,并不指流式交付或首帧时间。

1. 为什么 MiniMax H3 的服务是一个系统级问题

MiniMax H3 以文本、图像、视频和音频作为输入,联合生成视频与同步音频。它的各个组件在算力、显存和放置上的要求各不相同:

request -> encoder -> joint audio/video DiT -> video + audio VAEs -> GPU output preparation -> D2H/IPC -> H.264/AAC MP4

![图 1:文本走 H3/Qwen3-VL 编码器;视觉与音频条件还会分别经过各自的 VAE。条件潜变量与带噪的目标潜变量组成一条打包序列,进行联合的音视频去噪,之后再分别解码并构建 MP4。]

图 1:文本走 H3/Qwen3-VL 编码器;视觉与音频条件还会分别经过各自的 VAE。条件潜变量与带噪的目标潜变量组成一条打包序列,进行联合的音视频去噪,之后再分别解码并构建 MP4。

已发布的 checkpoint 覆盖三种服务任务:

任务 输入 典型用途
T2VA 文本 创意生成与合成媒体
FL2VA 文本加首帧/尾帧图像 受控转场与图像动画化
Ref2VA 混合的图像、视频与音频参考 一致性编辑与参考引导生成

DiT 主导了基础调度,但它并不是唯一的瓶颈。编码器的常驻会影响容量;去噪被缩短之后,VAE 解码就会显现出来;而原始帧仍然必须跨越进程边界并被封装成 MP4。这就是为什么这个故事要从系统级优化讲起。

2. 基准测试口径与证据边界

本文把两条证据线严格分开:

证据线 目的
基础 H3:Diffusers 与 vLLM-Omni 对照 在 50 点稠密 BF16 调度下衡量系统级的运行时优化
FastH3 时长扫描 在 4 次 DiT 前向下衡量绝对低时延与完整响应的实时表现

两条线各自都是有效且已冻结的实验,但它们并不共用同一个源码 SHA、prompt、seed 与产物。因此我们不推导从基础版到 FastH3 的加速比。本文只报告 FastH3 的绝对时延,直到有一组严格对齐的 A/B 实验为止。

2.1 冻结的控制变量

控制项 基础 H3 系统线 FastH3 线
硬件 8x NVIDIA B300 8x NVIDIA B300
任务 经 FL2VA partition 的 T2VA 仅 Dense/Data-Free T2VA
分辨率 / 帧率 1344x768 / 24 FPS 1344x768 / 24 FPS
源码 vLLM-Omni b81aeb7 vLLM-Omni 86b85c07
模型 MiniMax H3 42ed227e 同一基础模型加上固定版本的 FastH3 产物
Prompt / seed 官方 case-T2VA 扩展 prompt,SHA-256 98f36b...f06;seed 0 固定的 FastH3 prompt;seed 1101
调度 50 个 sigma 点 / 49 次 DiT 前向 5 个 sigma 点 / 4 次 DiT 前向
拓扑 编码器 TP8;DiT USP8、Ring1;VAE PP8 tile 单副本;编码器 TP8;DiT USP8、Ring1;VAE PP8 tile
注意力 稠密 BF16 TRTLLM_ATTN,Fast Ulysses 稠密 TRTLLM_ATTN,Fast Ulysses
重复次数 一次不计入的全形状预热,随后为计入的请求 每种形状一次不计入的可行性请求,随后每个时长两次交叉运行

两条线都从同步提交请求开始计时,到收到完整 MP4 为止。下载、启动、编译以及被排除的预热都在这段区间之外。每一个被接受的输出都必须能解码为 H.264 视频加 32 kHz 立体声 AAC,包含预期的帧数与帧率,视频方差与音频 RMS 非零,并通过 prompt 一致性的人工检查。

对 FastH3,我们保留已验证的视频与音频流时长,并定义 T_media = max(T_video, T_audio),即完整 MP4 的有效播放时长:

RTF_client = T_client / T_media

RTF_client <= 1.0 即完整响应的实时判据。一旦出现媒体检查失败、音频缺失、OOM、加速器错误或意料之外的回退,该配置就在重复测量之前终止。

对于其他硬件,我们有意把重点放在具体怎么做,而不是再堆一张测试结果对比表:H200 与数据中心 CUDA、RTX PRO 5000、RTX 4090、RTX 5090、GB10 以及 ROCm。

3. vLLM-Omni 的系统级优化

基础 H3 这条线保留了已发布的 BF16 权重、50 个 sigma 点与稠密注意力覆盖。优化沿着执行路径展开,而不是按功能清单罗列。

3.1 长序列注意力与通信

H3 把文本、音频与视频 token 作为一条打包的长序列去噪。在这个典型负载下,58,758 个有效 token 占据一个 58,816 token 的对齐缓冲区。vLLM-Omni 在三个边界上降低开销:

  • TRTLLM_ATTN 接收有效序列长度,打包序列的进一步处理去掉了结构性的尾部 padding。
  • rank 本地边界只构建本地的 embedding/RoPE 行,并 gather 紧凑的 128 通道投影,而不是 5,376 通道的隐藏状态。
  • Fast Ulysses 使用 NCCL SymmetricMemory,直接以注意力所需的布局交换分片,省掉了 all-to-all 前后的一次单独重排。

3.2 融合的 DiT 算子

那个 49 次前向的循环会围绕矩阵乘法反复施加一些小算子。vLLM-Omni 把 Q/K RMSNorm 与 RoPE 融合(#5990),合并 FP32 的调制、归一化与残差计算(#6281、#6878),并用融合的 SwiGLU 取代分开的 SiLU 与乘法两次 launch(#6283)。

3.3 并行且融合的 VAE 解码

去噪之后,H3 分别解码视频与音频。VAE patch 并行把 tile 化的视频解码器分布到八张 GPU 上。精确的 VAE 算子路径加速了解码块的物化、融合的 Q/K 归一化与 RoPE、融合的 SwiGLU,以及带缩放的残差更新,并为不受支持的布局保留 eager 回退。

3.4 GPU 输出准备、传输与 MP4

在数百帧离开 GPU 之前,一个请求还不算完成。优化后的路径让每一次转换都只做一遍:

  1. GPU 输出准备把解码得到的 FP32 BCTHW 帧转换为连续的 uint8 BTHWC,在传输前把视频负载减少 75%。
  2. 由 pinned D2H 与 worker 到 engine 的 IPC 传输这份紧凑负载。
  3. 直接的 planar 编码、常驻的并行转换器,以及对传输后 strided RGB 平面的支持,让 H.264 直接取用数据,无需再构建一份完整的交错 RGB 缓冲区。
FP32 BCTHW -> uint8 BTHWC -> pinned D2H/IPC -> planar frames -> H.264/AAC MP4

3.5 基础 H3 的实测结果

两个运行时都使用八张 B300、相同的 prompt 与 seed、50 个 sigma 点,以及相同的完整 MP4 边界。Diffusers 使用复制权重加原生上下文并行;vLLM-Omni 使用编码器 TP8、带 Fast Ulysses 的 DiT USP8/Ring1、VAE PP8 tile 解码,以及 TRTLLM_ATTN。

运行时 模型执行(s) Prompt(s) DiT 合计 / 每次前向(s) 视频 / 音频 VAE(s) MP4(s)
Diffusers - - - - -
vLLM-Omni 54.246 0.057 51.800 / 1.057 0.952 / 0.055 1.528

MiniMax-H3 model-card 样例 / vLLM-Omni 基线

借助无损优化,vLLM-Omni 把完整响应的时延相对 Diffusers 降低了 30.8%,相当于 1.445 倍的加速。这里的无损指加速不依赖量化、稀疏注意力、缓存复用或减少去噪步数。它并不意味着输出逐位一致:不同的 kernel 实现与浮点归约顺序仍可能扰动扩散轨迹。

这些改进压掉的是去噪周边的开销。FastH3 处理的是剩下的主导项,把去噪循环本身从 49 次前向降到 4 次。

4. 扩展通用的 H3 服务架构

通用 H3 这条线包含两类不同的生产控制手段。DLO 与编码器分离改变的是容量与放置;可选的量化权重与近似注意力则是用数值保真度换显存或时延。这些路径解释的是如何装得下、如何扩展、如何加速更广义的架构。它们没有参与第 6 节 FastH3 数字的产生。

4.1 分布式逐层卸载

DLO(Distributed Layerwise Offload,分布式逐层卸载)在 HBM(High Bandwidth Memory,高带宽显存)中保留一个有界的 DiT 层窗口,其余部分从主机内存流式取用。AllGather 模式从主机侧分片集体重建活跃层;rank 本地模式则流式取用各 rank 常规 loader 产生的张量。选哪一种取决于互连、主机带宽、内存、常驻层数与请求并发度。

![图 2:DLO 在当前层计算的同时准备下一层。机制与部署权衡见 DLO 专文。]

图 2:DLO 在当前层计算的同时准备下一层。机制与部署权衡见 DLO 专文。

8× B300 BF16 DLO 帕累托前沿

在官方 BF16 MiniMax-H3 FL2VA checkpoint 上(5.175 秒、1344×768、SP8/Ulysses8/Ring1/DP1/TP1、AllGather、CUDNN 注意力),第一个请求因懒加载的 CUDA/cuDNN/JIT 工作被排除,其余两个请求取平均。生成的视频与音频具有预期的输出形状。

![图 3:时延与显存的帕累托前沿。r 为常驻 DiT block 数。实心点为非受支配的测量值,空心点为被支配的测量值。在 r = 35 时,DLO 以 5.1% 的时延代价把上报的 HBM 降低 37.5%;r = 0 是显存最小的端点。]

图 3:时延与显存的帕累托前沿。r 为常驻 DiT block 数。实心点为非受支配的测量值,空心点为被支配的测量值。在 r = 35 时,DLO 以 5.1% 的时延代价把上报的 HBM 降低 37.5%;r = 0 是显存最小的端点。

4.2 编码器分离

H3 在 BF16 下需要常驻约 51.5 GB 的 Qwen3-VL 编码器权重。编码器分离路径把这个一次性的编码器移入一个独立的 vLLM 阶段,它拥有自己的放置、张量并行、副本、队列、kernel 与 prefix cache。编排器把它输出的第 50 层隐藏状态与 token 角色标签,与原始媒体一起交给 DiT/VAE 阶段。

![图 4:编码器容量与扩散容量可以独立扩展。已合并的单机 recipe 通过编排器返回条件信息,并让扩散阶段保持内联;它不配置 OmniConnector。SHM/RDMA 仍是 RFC #5707 中未来的跨节点选项。]

图 4:编码器容量与扩散容量可以独立扩展。已合并的单机 recipe 通过编排器返回条件信息,并让扩散阶段保持内联;它不配置 OmniConnector。SHM/RDMA 仍是 RFC #5707 中未来的跨节点选项。

4.3 可选的量化与注意力加速

第 3 节刻意使用稠密 BF16 注意力与已发布 checkpoint 的精度。通用的 H3 部署可以另外选择以下路径,但每一条都是一种独立的质量与性能画像,而不是无损的运行时收益。

权重与激活量化

  • 在线 FP8。已合并的全局 FP8 路径从 BF16 checkpoint 出发,在加载时量化符合条件的 DiT 与 Qwen3-VL 文本解码器 linear 层。Embedding、归一化、RoPE、视觉塔、两个 VAE 以及对精度敏感的投影层都保持其声明的精度。
  • SVDQuant NVFP4 W4A4。已合并的离线 loader 把 NVFP4 W4A4 的基础 GEMM 与一个 BF16 低秩修正结合起来。当前证据确立的是 checkpoint 与正确性的兼容性;原生的融合残差 GEMM 性能路径仍属未来工作。

![图 5:在线 FP8 在加载时创建 FP8 权重与缩放因子,随后在线量化符合条件的激活。离线 SVDQuant 把 NVFP4 W4A4 的基础分支与一个 BF16 低秩修正结合起来。来源:vLLM-Omni #5910 与 #6162,以及 cookbook 中的在线 FP8 与 SVDQuant 两篇解读。]

图 5:在线 FP8 在加载时创建 FP8 权重与缩放因子,随后在线量化符合条件的激活。离线 SVDQuant 把 NVFP4 W4A4 的基础分支与一个 BF16 低秩修正结合起来。来源:vLLM-Omni #5910 与 #6162,以及 cookbook 中的在线 FP8 与 SVDQuant 两篇解读。

一个量化画像必须报告峰值 HBM、启动期主机内存、checkpoint 存储、时延,以及同 seed 下的视频与音频质量。容量上的收益并不自动等于时延上的收益,loader 的正确性也不构成融合 kernel 有收益的证据。

B300 上的在线 FP8:容量与时延

下面这组稠密、全常驻的结果把在线 FP8 与已发布的 BF16 checkpoint 隔离开来比较。两行都使用 8 张 B300、带 Fast Ulysses 的 Ulysses8/Ring1、编码器 TP8、VAE PP8 tile 解码、CUDNN 注意力,以及 10 秒 1344×768 / 24 FPS、请求 50 个 sigma 点(49 次 DiT 前向)的负载。一次预热被排除,每个数值取三次计入请求的均值。「Stage generation」是原生的扩散阶段计时器;E2E 是离线客户端从提交到拿回视频与音频张量的墙钟时间,不含 MP4 封装。

权重 Stage generation(均值,n=3) E2E(均值,n=3) 每 rank 峰值 HBM 结果
BF16 52.572 s 53.118 s 87.16 GiB 无损基线
在线 FP8 49.769 s 50.331 s 53.27 GiB stage 时间低 5.3%;峰值 HBM 低 38.9%

每一次计入的请求都返回了 243 帧 1344×768 的 RGB 图像与 32 kHz 立体声音频。三次重复使用了不同的 seed,因此它们确立的是输出形状与生成成功,而不是与 BF16 的逐像素等价。

TRTLLM_ATTN 中的量化与稀疏注意力

TRTLLM_ATTN 提供两种可选的有损加速模式:

  • SAGE 量化把 QK 与 PV 两条路径都量化到 FP8。
  • Skip-Softmax 利用 QK 的结果,动态跳过不重要的 Softmax 与 P×V 计算。

![图 6:SAGE 把 Q、K、P、V 量化到 FP8 用于 Q×K 与 P×V,而 Skip-Softmax 依据 BLASST 的 tile 级判定,绕过选中的 Softmax 与 P×V tile。]

图 6:SAGE 把 Q、K、P、V 量化到 FP8 用于 Q×K 与 P×V,而 Skip-Softmax 依据 BLASST 的 tile 级判定,绕过选中的 Softmax 与 P×V tile。

下表以稠密、未量化的注意力为基线,对比视频质量与加速比:

注意力策略 SAGE 配置 Skip-Softmax 配置 模型执行 加速比 相对稠密的 LPIPS 样例
TRTLLM 基线 关 关 54.246 s 1.000x 视频
SAGE FP8 dtype_qk=fp8_e4m3, q_block_size=1, k_block_size=16 关 44.787 s 1.211x 0.3697 视频
Skip-Softmax 关 阈值 0.05;至 0.97 前禁用 50.029 s 1.084x 0.0917 视频
SAGE + Skip-Softmax dtype_qk=fp8_e4m3, q_block_size=1, k_block_size=16 阈值 0.05;至 0.97 前禁用 43.867 s 1.237x 0.3750 视频

TRTLLM Baseline / SAGE / Skip-Softmax / SAGE+Skip-Softmax

上面测量所用的 Skip-Softmax 配置在保持视频质量方面是保守的。使用者可以选择更高的阈值,或在更多去噪步上启用 Skip-Softmax,以质量换取更多速度。TRTLLM 注意力指南记录了这些控制项。

Cache-DiT

Cache-DiT 是一种请求级的缓存策略,而不是一个注意力后端。对 H3 而言,quality=high 会启用按步的动态复用,quality=lossless 则恢复参考路径。它的命中与未命中行为取决于具体部署,因此需要独立的时延与质量认证,未被纳入上面的注意力 A/B。

4.4 兼容性边界

组合 本文中的状态
基础 H3 + DLO 通过已维护的 H3 recipe 支持;所选拓扑需在本地认证
基础 H3 + DLO + 在线 FP8 支持,包括经 #6279 的 AllGather 路径;性能与质量仍需本地认证
基础 H3 + 编码器分离 已合并的单机路径
FastH3 + DLO 不支持:FastH3 的融合发生在 load_weights() 中,而 offload 会安装另一条主机侧权重路径
FastH3 + VSA 在 CUDA 上支持,需匹配的 VSA 产物、fastvideo-kernel、FASTVIDEO_VSA,以及本地或纯 Ulysses 注意力;Ring 与 AllGather SP 会被拒绝
FastH3 + 编码器分离 尚未认证;本文报告的 FastH3 结果没有使用它

按步执行补充说明。H3 可以在去噪步之间接纳与中止请求(#5810),但现有的共批测试并没有改善时延。在 issue #5700 中研究取消与回收机制以及小规模低利用率负载期间,请求模式仍是推荐做法。