VDN-MiniMax-H3 开源:全新混合注意力加速视频生成,8步生成,近乎无损画质
OpenVDN 团队开源 VDN-Minimax-H3(VDN-H3),同时公开模型权重、训练代码与优化后的推理实现。该工作基于 MiniMax-H3,将局部 Softmax 注意力与按帧更新的线性注意力结合,再通过少步蒸馏降低视频生成开销。
在官方测试中,VDN-H3 使用 8 张 NVIDIA B200,以 8 步完成一段约 14.4 秒、768p 视频的去噪,耗时 11.23 秒。
官方同时展示了与原始 H3 的画质对照,下面依次为 Dense H3(50 NFE)、FastH3(4 NFE)和 VDN-H3(8 NFE),重点展现加速后的视觉细节与指令遵循表现。
Dense H3:

FastH3:

VDN-H3:

模型下载:
https://modelscope.cn/models/OpenVDN/vdn-minimax-h3
Github:
https://github.com/OpenVDN/vdn-minimax-h3
Project:
效果展示
多镜头旅行片段
官方提示词围绕同一位白发角色展开,串联城市街头、便利店、公园、列车与夜景等场景,并指定镜头切换、日语台词和环境声音。

幻想场景与角色互动
在丛林遗迹中,蓝发精灵与由水和光构成的狐狸互动。提示词同时描述人物动作、水流、发光粒子及镜头运动,展示复杂场景中的生成效果。

从手绘方案到立体村庄
镜头从纸上的水彩建筑规划图推进,建筑与树木逐步立体化,河流开始流动,画面转变为具有写实质感的村庄。
技术解读
局部精确计算,远程线性记忆
VDN 将视频 Token 之间的注意力计算分为两个互补分支:局部区域保留精确的 Softmax 注意力,远距离上下文交给双向线性注意力处理。局部分支沿用 H3 的分块方式,每 5 个连续潜变量帧组成一块,每块关注自身及前后相邻块。为了保留跨越较长时间的联系,首尾帧被设为边界锚点:所有帧都能读取首尾帧,首尾帧也能读取其他帧。线性分支则分别汇总局部窗口之前和之后的信息,并排除窗口内帧及边界帧,避免重复计算同一段视频上下文。
官方动画展示了一帧如何读取这些信息。以编号 7 的潜变量帧为例,Softmax 保留邻近的 6、7、8 帧,以及作为边界锚点的 0、14 帧;其余帧进入线性记忆:正向状态汇总 1—5 帧,反向状态汇总 9—13 帧。两侧状态与当前查询位置对齐后,模型读取远程记忆,并与局部分支共同形成混合注意力输出。
文本提示同时参与两个分支。在 Softmax 分支中,每一帧都能关注文本 Token;在线性分支中,文本先写入正向和反向记忆状态,各按一半的比例初始化,合并两侧读取结果时只计算一次文本贡献。


上图是官方为便于阅读绘制的简化示意:包含 1 个文本 Token、16 个视频帧和 1 个音频 Token,每 2 帧组成一块,而实际模型每块为 5 个潜变量帧。
独立门控,融合两条注意力分支
局部 Softmax 与线性注意力的输出尺度不同,不能直接相加。VDN 为两条分支分别设置随输入内容变化的 Sigmoid 门控,并使用独立的输出投影,再将结果合并到残差流中。
其中,Softmax 门控用于校准局部信息的权重,避免只在窗口内归一化后过度强调邻近帧。线性分支则先通过 RMSNorm 归一化,再使用逐元素门控调节输出,使远程记忆能够与局部信息共同参与生成。

分阶段适配预训练 H3
新增的线性分支从随机参数开始直接进行端到端训练,可能扰动预训练模型已有的生成能力。VDN 因此采用 A1、A2、B 三阶段适配。
- A1:逐层对齐。 分别校准每一层新增的线性分支,为后续训练提供初始化。
- A2:端到端分支适配。 将各层混合模块接入完整去噪网络,联合优化新增分支。A1、A2 均冻结原有 Softmax 分支、QKVO 投影和前馈网络。
- B:LoRA 联合适配。 在 QKV 和输出投影中加入 LoRA,与线性分支共同训练,其余预训练参数保持冻结。
Softmax 门控在 A1、A2 中保持冻结,直到 B 阶段才参与训练。避免优化器通过过度压低原有 Softmax 分支来降低损失。

性能表现
官方在 H200 和 B200 上测试了 768p、约 14.4 秒视频的稳态去噪耗时。

在单卡 B200、50 步的对比中,模型卡报告 Dense MiniMax-H3(cuDNN)耗时 13.95 分钟,VDN-H3 FP8 为 5.3 分钟。多卡配置进一步结合序列并行;项目还将 Softmax 与 VDA 分支分配到不同 GPU,以减少单步延迟。
模型下载与推理
VDN-H3 已提供单 GPU 和多 GPU 推理脚本.
环境准备
获取代码并创建 Python 3.12 环境:
git clone https://github.com/OpenVDN/vdn-minimax-h3.git
cd vdn-minimax-h3
git checkout b8cb28fbfca0266d1c7742a9f25ab8b58191de97
conda create -n vdn python=3.12 -y
conda activate vdn
pip install uv
uv pip install torch==2.13.0 --index-url https://download.pytorch.org/whl/cu129
uv pip install --prerelease=allow -e .
bash scripts/setup_diffusers.sh
模型下载
模型地址:https://modelscope.cn/models/OpenVDN/vdn-minimax-h3
pip install modelscope
modelscope download \
--model OpenVDN/vdn-minimax-h3 \
--local_dir ./ckpts
运行官方示例
单 GPU 运行八步 FP8 示例:
bash scripts/inference/8nfe_tuned_fp8.sh
该脚本使用仓库附带的编码后提示词 prompts/example_2.pt,输出到 results/8nfe_tuned_fp8.mp4。如使用单机八卡,可按硬件选择:
# 8 张 H200
bash scripts/inference/8nfe_tuned_fp8_ulysses_h200.sh
# 8 张 B200
bash scripts/inference/8nfe_tuned_fp8_ulysses_b200.sh
使用自己的提示词
自定义文本需要先通过 H3 使用的 Qwen3-VL-32B 文本编码器转成特征,再进入生成模型。将下面的 ... 替换为提示词:
python src/inference/encode_prompt.py \
--prompt "..." \
--out prompts/mine.pt
python src/inference/infer.py \
--config configs/inference/8nfe_tuned_fp8.yaml \
checkpoint=ckpts/stage-dmd-step-250 \
render.prompt_file=prompts/mine.pt \
render.out=results/mine.mp4
#文本编码器不包含在上述 VDN-H3 权重包中,支持通过 --model_root 指定本地目录。
更多推荐




所有评论(0)