MiniMax H3 视频 VAE 优化上线 ComfyUI 0.36.0
ComfyUI 0.36.0 借助 comfy-kitchen 内核加速 MiniMax H3 视频 VAE,官方 Comfy-Org 仓库现已托管紧凑的 int8 convrot VAE。
VAE 路径有哪些变化
所有改动都位于 comfy/ldm/minimax/vae.py 和 comfy/ops.py。相关内核来自 comfy-kitchen #167,9 月 13 日合并。
- 融合的编码器流程。
group_norm_silu_pad3d在单次流程中完成逐帧 GroupNorm、SiLU 以及反射/因果填充,并直接输出 NDHWC,让 cuDNN 无需布局转换即可运行。该 PR 称此步骤是无损的,并且始终启用。 - fp16 累加。
ck.fp16_conv3d和ck.fp16_linear使用 CUTLASS fp16 累加内核,并将偏置与残差折叠进 epilogue。它们在--fast下启用 fp16 累加,而规模太小、无法填满 GPU 的启动任务会交回 cuBLAS。 - Int8 解码器。 Int8 量化的解码器通过
ck.int8_attention和一个 int8 GEMM 执行,其 epilogue 携带残差,rms_norm/swiglu则折叠进激活量化器,并在 128x256 与 128x128 分块之间加入了波形量化保护。 - 批处理分块解码。
tiled_decode现在一次最多解码四个分块,上限由空闲内存决定,因此分块运行不再逐帧串行。 - 兼容动态 VRAM。 权重与归一化参数通过
cast_bias_weight传入,因此上述所有内容在 ComfyUI 的动态 VRAM 加载下仍可正常工作。
如果缺少 comfy-kitchen 或某个特定内核,代码会回退到之前的 eager 序列,因此更早的安装不受影响。
实测效果
该内核 PR 报告了在 5090 上测得的 1344x768、362 帧端到端 comfy.sd.VAE 调用耗时:
| 路径 | 之前 | 之后 |
|---|---|---|
| 编码(fp16) | 46.6 s | 32.0 s |
编码(--fast,fp16 累加) | 47.2 s | 21.2 s |
| 解码(fp16) | 34.6 s | 31.1 s |
解码(--fast) | 27.7 s | 23.2 s |
| 解码(int8) | 18.7 s | 12.9 s |
质量是相对精确路径测得的:fp16 累加编码为 68 dB,int8 解码为 67.7 dB,而 VAE 自身的重建下限约为 38 dB。后续的核心提交(PR #16332)进一步小幅降低了 MiniMax VAE 的内存占用。
int8 convrot VAE 迁至官方仓库
要使用的文件是 Comfy-Org/MiniMax-H3 中的 vae/minimax_h3_video_vae_int8_convrot.safetensors,于 9 月 15 日上传,大小 2.81 GB。在 Reddit 帖子中被问及它与早前为 H3 流传的实验性 int8 VAE(3.17 GB)有何不同时,Kijai 回答说编码器现在以 fp16 而非 fp32 存储:它本来默认就以 fp16 运行,因此两者的解码结果完全一致,更小的那个文件才是应当保留的版本。
一次 MiniMax H3 参考生视频运行,使用三张参考图像,分辨率达到作者显卡允许的最大值,与关于更新后 VAE 的 Reddit 反馈一同发布(u/Chiduck99)。
小显存显卡用户的实测反馈
这一变化源自一位 RTX 3060 12 GB 用户的 Reddit 反馈:此前他们使用 H3 的上限是 10 秒 0.8 MP。在同一张显卡上换用更新后的 VAE,他们反馈 10 秒可达 1 MP,15 秒可达 0.7 MP,且看不到明显的画质损失。Kijai 在该帖中的回复把这次上传与内核工作联系起来:comfy-kitchen 中经过优化的自定义内核既能加速 int8 VAE,也能加速原始 fp16 VAE,只要 ComfyUI 和 comfy-kitchen 保持最新,它们就会始终启用。
可用性
两部分都属于 ComfyUI 0.36.0(9 月 15 日)。VAE 路径来自 PR #16187,而该标签的 requirements.txt 中锁定了 comfy-kitchen 0.2.34(当前 master 上为 0.2.35),因此更新后的安装无需额外操作。视频 VAE、音频 VAE 和解码器都会被现有的 MiniMax H3 工作流自动使用。
评论
使用 GitHub 登录后即可参与讨论。