【视频生成】2、VDN-MiniMax-H3

文章目录

    • [0. 论文一句话总结](#0. 论文一句话总结)
    • [1. 论文要解决的原始痛点(Introduction 章节)](#1. 论文要解决的原始痛点(Introduction 章节))
    • [2. 核心架构:混合注意力分工(第 2 章)](#2. 核心架构:混合注意力分工(第 2 章))
      • [2.1 滑动窗口 Softmax(本地精细分支)](#2.1 滑动窗口 Softmax(本地精细分支))
      • [2.3 两路输出怎么融合(公式 1c、1d,不用记符号)](#2.3 两路输出怎么融合(公式 1c、1d,不用记符号))
    • [3. VDA(Video Delta Attention):论文最核心的数学创新(第 3 章)](#3. VDA(Video Delta Attention):论文最核心的数学创新(第 3 章))
      • [3.1 先讲传统 token 级 Delta 规则(公式 2,你看不懂的根源)](#3.1 先讲传统 token 级 Delta 规则(公式 2,你看不懂的根源))
      • [3.2 直接"批量并行"抄到视频上会出问题(公式 3a~3c)](#3.2 直接"批量并行"抄到视频上会出问题(公式 3a~3c))
      • [3.3 VDA 的做法:一帧联合求解出一个新状态(公式 4、5)](#3.3 VDA 的做法:一帧联合求解出一个新状态(公式 4、5))
      • [3.4 稳定性结论(第 3.3 节,工程意义大于理论)](#3.4 稳定性结论(第 3.3 节,工程意义大于理论))
    • [4. 端到端训练流水线(第 4 章,对应你之前问的"训练了什么")](#4. 端到端训练流水线(第 4 章,对应你之前问的"训练了什么"))
      • [4.1 三阶段架构适配:主干全程冻结](#4.1 三阶段架构适配:主干全程冻结)
      • [4.2 八步蒸馏(第 4.2 节)](#4.2 八步蒸馏(第 4.2 节))
      • [训练数据集细节(第 6.1 节,论文公开的数字)](#训练数据集细节(第 6.1 节,论文公开的数字))
    • [5. 推理侧提速做了哪些工程优化](#5. 推理侧提速做了哪些工程优化)
    • [6. 实验结果:14.5 倍加速是怎么拆出来的](#6. 实验结果:14.5 倍加速是怎么拆出来的)

0. 论文一句话总结

在完全冻结原版 H3 33B 主干 的前提下,论文把 H3 中最耗算力的全局 Softmax 注意力替换为"局部精细 Softmax + 远距离帧压缩为线性记忆"的混合结构;随后分三阶段训练少量适配器与原模型对齐,再做 50 步→8 步蒸馏;配合 SGLang 算子优化,在 8×B200 上把 14.3 秒 768p 视频的 DiT 去噪耗时压到 6.70 秒 ,相对原版 50 步稠密 H3 实现整体 14.5 倍加速,画质基本无损。

1. 论文要解决的原始痛点(Introduction 章节)

论文对 H3 的实际运行做了性能剖析,发现 Softmax 注意力占去噪总运行时间的 85% 以上 。原因在于普通 Softmax 需要让每一个视频 token 与序列中所有其他 token 两两计算相似度 ,帧数越多,计算量便随序列长度呈平方级增长 ,长视频因此难以运行。

工业界在大语言模型中已用线性注意力 / 循环记忆将复杂度降到线性,但直接迁移到视频模型会损失画质。论文指出三个"水土不服"之处(这是理解全文的关键):

# 不匹配点 大白话解释
1 固定大小记忆容量有限 Softmax 能记住越来越多的历史帧;线性记忆矩阵大小固定,要靠它保住人物身份、场景布局、长相、长程动作,不能丢关键全局信息
2 语言模型是逐 token 到来,视频是一整帧所有空间 patch 同时出现 直接照搬语言模型"一个 patch 更新一次记忆",等于给画面强行排一个从左到右的顺序,不自然;同帧多个 patch 同时写记忆还会互相干扰
3 给已经训好的 Softmax 模型随机插一条线性支路,会打乱原来的残差流数值分布 新分支还没学会,旧能力先被破坏,必须设计渐进适配的训练流程,不能硬插进去一起训

2. 核心架构:混合注意力分工(第 2 章)

2.1 滑动窗口 Softmax(本地精细分支)

  • 近处几帧之间的关系决定了纹理、人脸、手部、物体边缘与短时间动作 ,这些必须做精确的两两匹配,因此这部分保留原版 Softmax,不做改动。

  • 窗口跟随 H3 的 VAE 分块:H3 VAE 将每 5 个连续 latent 帧划为一个 chunk,每个 chunk 只与自身及前后相邻 chunk 做 Softmax,形成约 15 帧的双向窗口,从而避免切断 tokenizer 的自然时间单元。

  • 首尾帧锚点(Boundary Anchors):每个视频帧都能直接注意到第一帧和最后一帧,首尾帧也能注意到整个序列。这只增加了两行两列的稠密连接,成本很低,却对人物身份稳定和首尾帧约束(FL2VA)至关重要;消融实验表明,去掉锚点后 VQA A 下降 0.75、VQA T 下降 1.35。### 2.2 双向线性注意力(远距离分支)

  • 窗口之外的所有远帧,交给线性记忆处理。分前向扫描 (总结当前窗口之前的帧)和反向扫描(总结窗口之后的帧),两段区域不重叠,读取结果直接相加,不会重复计算某一帧。

  • 文本条件先被汇总成一个初始记忆 S_T,前向、反向各放一半,两路相加正好等于完整文本条件;这样线性分支也能感知 prompt,而文本本身在 Softmax 分支里依然是直接可见的。

  • 边界锚点不放进线性记忆,因为它已经走 Softmax 直接访问了。

2.3 两路输出怎么融合(公式 1c、1d,不用记符号)

  1. Softmax 分支:保留 H3 原生 QK 归一化和 RoPE;因为窗口变小、概率集中在更少 key 上,加一个内容相关 sigmoid 门做缩放校准。
  2. 线性分支:先做可分离短卷积(5×5 空间 + 5 拍时间)→ SiLU → Q/K 做 L2 归一化;读取结果先 RMSNorm ,再过自己的 sigmoid 门;内部还有独立的衰减门 α(留多少旧记忆)和写入门 β(新信息覆盖多少)。
  3. 两路各自拥有独立输出投影,把自己的结果投影到残差流的不同方向,最后相加;原来的 FFN 子层完全保留不动。

为什么要各自独立投影?两个分支输出数值尺度、擅长的信息方向不一样,共用一个投影会互相打架;独立投影让两路各司其职。


3. VDA(Video Delta Attention):论文最核心的数学创新(第 3 章)

3.1 先讲传统 token 级 Delta 规则(公式 2,你看不懂的根源)

这是从 Gated DeltaNet / Kimi Delta Attention 继承来的记忆更新规则,分两步:

  1. 衰减 :旧记忆先乘 α(衰减系数),α 在 0~1 之间,决定保留多少历史;
  2. 擦写修正 :新 token 进来,先看旧记忆根据 key 预测出的值和真实 value 的误差 (v - S·k),再用写入门 β 把这个误差修正写回记忆矩阵。

这套规则是为自回归语言模型设计的:每一步只来一个 token,顺序更新非常自然。

3.2 直接"批量并行"抄到视频上会出问题(公式 3a~3c)

视频一帧里有 U 个空间 patch(H3 是 48×84 latent patch)。最直接的改法:用同一个衰减后的旧记忆 S̄,把这一帧所有 patch 的修正一次性累加 写进新记忆。

问题在于:每个 patch 的残差都是基于同一个旧状态算的,彼此之间互不通气。当同一帧里几个 patch 的 key 方向相近(比如都属于人脸区域),它们的修正可能互相强化、也可能互相冲突,写进记忆的结果是打架的,没有联合求解。

3.3 VDA 的做法:一帧联合求解出一个新状态(公式 4、5)

论文把一帧内所有 patch 看成一个联合拟合目标 :新记忆 S_t 一方面要离衰减后的旧记忆不要太远(保留历史),另一方面要同时拟合这一帧里所有 key-value 配对关系。

对这个优化目标求导,得到闭式解:

S t ( I + A t ) = S ˉ t + B t , S t = ( S ˉ t + B t ) ( I + A t ) − 1 S_t(I+A_t) = \bar{S}_t + B_t,\quad S_t = (\bar{S}_t+B_t)(I+A_t)^{-1} St(I+At)=Sˉt+Bt,St=(Sˉt+Bt)(I+At)−1

大白话:

  • A_t:这一帧所有 key 之间的相关矩阵;
  • B_t:这一帧 value 到 key 的写入矩阵;
  • 那个 (I+A_t)^{-1} 就是联合解的关键:把同帧 patch 之间 key 重叠、互相冲突的问题在这一步内部消化掉,每个 patch 的残差都基于共同更新后的状态来评估,而不是各自为政。
  • 求逆只在很小的 key 通道空间 d_k × d_k 上做,成本可控。

3.4 稳定性结论(第 3.3 节,工程意义大于理论)

论文证明:在特征和门固定、0≤α≤1、β≥0 的条件下,这个状态转移矩阵谱范数 ≤ 1,也就是旧记忆传过来的信息不会被这一帧更新放大 ,训练和推理数值稳定。所以不需要像 SANA-WM 那样额外加 1/√U 帧尺寸缩放因子;帧数变多也不会出现数值爆炸。


4. 端到端训练流水线(第 4 章,对应你之前问的"训练了什么")

4.1 三阶段架构适配:主干全程冻结

阶段 步数 训什么 冻结什么 目的
A1 逐层对齐 200 每个线性分支单独对齐冻结教师的激活输出;Softmax 门初始固定在 0.99;逐层梯度裁剪 0.1 H3 主干权重、Softmax 分支 先让新支路在局部学会模仿教师,避免一开始深网络同时改导致信号传不下去
A2 端到端对齐 500 两路组装到一起端到端训练;全局梯度裁剪 1.0 预训练主干权重、Softmax 门 修正单看某层发现不了的层间组合误差
Stage B LoRA 共适配 2000 Q/K/V/输出投影加 LoRA,和线性支路、Softmax 门联合训练 主干原始权重(只动 LoRA) 让混合层和新支路深度协同适配

消融(表 4)显示:A1 单靠 200 步就完成了主要的参数移动(写入门投影变化 35.6%),后面 A2、Stage B 都是逐步细化,变化越来越小,印证这个渐进方案是合理的。

4.2 八步蒸馏(第 4.2 节)

  • 架构适配完成后,先得到一个 50 步 VDN-H3;
  • 用 DMD2 目标(去掉 GAN 项) ,以这个 50 步 VDN-H3 作为教师,蒸馏出 8 步学生;学生初始化复用社区 MiniMax-H3-Turbo-LoRA,这样能把"架构改造"和"步数压缩"两个变量分开;
  • 生成器、real-score、fake-score 共用一套 FSDP 主干、走各自适配器;每更新 1 次生成器更新 3 次 fake-score;最终发布 checkpoint 训了 250 个生成器步。

训练数据集细节(第 6.1 节,论文公开的数字)

  • 10,015 个视频片段,分辨率 1344×768,每段 345 帧、24fps(14.375 秒);
  • 提前把视频 latent (24,102,48,84)、立体声音频 latent (2,32,575)、Qwen3-VL 文本 embedding (L,5120) 全部缓存好,训练循环里不再跑 VAE 和文本编码器;
  • 评测固定 103 个第三方 prompt,所有模型同一分辨率、同一时长渲染,保证可比。

5. 推理侧提速做了哪些工程优化

光改算法不够,速度还要靠算子和并行:

  1. 四个融合 Triton 内核 :把 VDA 的预处理、帧统计、边界收集、后处理分别融合成 VDA-Prep / VDA-Stats / VDA-Gather / VDA-Epilogue,减少 Kernel 启动和显存读写。
  2. Chunk 级扫描 :注意力只在 VAE chunk 边界读记忆,所以把每个 chunk 的转移矩阵合并成 S_out = S_in·M_chunk + J_chunk,只扫描更短的 chunk 序列,扫描深度和启动开销大约降低一个 chunk 尺寸。
  3. 小矩阵求逆 :(I+A_t)^{-1} 不用 Cholesky 多内核流程,改成一个 CUDA kernel 在寄存器内做分块 Gauss-Jordan 消元;求逆和循环状态保持 FP32。
  4. SGLang 服务栈:窗口 Softmax 按可见 key 模式打包,直接用 FlashAttention varlen API,不用全局 mask;VDA 按注意力头切分,和窗口 Softmax 走旁路并行;宽 QKV、输出、FFN GEMM 用 MXFP8 加速,循环状态和小矩阵求逆保留 FP32;AdaLN 调制参数在 block 循环前提前算好,不在每层重复投影。
  5. Ulysses 序列并行:多头注意力切分到 8 张卡上跑。

6. 实验结果:14.5 倍加速是怎么拆出来的

以单卡 B200、14.3s 768p 为基准,加速是三层叠加的结果:

阶段 GPU 数 去噪步数 端到端耗时 相对上一层增益
原版 Dense H3 1 50 799.6 s 基准
只换 VDN 混合注意力 1 50 307.9 s 骨干本身 2.6× 提速(H200 上 3.2×)
再做 8 步蒸馏 1 8 49.3 s 步数从 50→8
8 卡分布式推理 8 8 6.70 s 分片并行;H200 上最终 12.5 s
  • 架构改造(注意力替换)单独贡献约 2.6~3.2 倍;
  • 50→8 步蒸馏是最大的轮数压缩;
  • 多卡并行是最后的服务层加速;
  • 视频越长,VDN 优势越大:latent 帧从 42 涨到 102,Softmax 注意力占比从 42.1% 降到 20.0%,骨干提速从 1.8× 涨到 3.2×(H200)。

质量结论

  • 50 步对比:VDN 和稠密 H3 几乎持平,Q-Align 仅差 0.08、世界连贯性差 0.03、首尾帧 PSNR 差 0.02dB;和同等延迟的 Radial 稀疏注意力比,7 项共享指标中 6 项更好。
  • 8 步对比:VDN-H3 在 7 项共享指标上全部超过 FastH3 v2,VQA T 高 10.78、DOVER++ 高 2.67;单 B200 速度比 FastH3 v2 快 1.2×。
  • 消融:去掉首尾帧锚点、去掉线性分支都会显著掉分,证明两个设计都不可省。

相关推荐
沐禾安信3 小时前
MOV转MP4怎么转换?苹果视频打不开这样解决
音视频·格式转换·mov转mp4
小豆庄3 小时前
视频隐私脱敏怎么处理:识别追踪与本地方案的选型思路
密码学·音视频·视频
七牛云行业应用3 小时前
爆火OpenFilm 0.2.6:开源 AI 视频 Agent 的安装、编辑与渲染流程(2026 年 10 月 )
人工智能·开源·音视频
码匠许师傅4 小时前
【C++三方组件】FFmpeg:音视频处理的瑞士军刀
c++·ffmpeg·音视频
voipmaker14 小时前
GB28181 对接踩坑实录:注册不上、目录不全、流卡顿,一次说清(附 2022 版变更清单)
物联网·音视频·实时音视频·信息与通信·iot·gb28181·国标gb28181
2601_9583529016 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
2601_9654488716 小时前
AI视频制作:做系列历史人物视频音色不搭,AI 音色克隆的方法实测
人工智能·音视频
码上观世界16 小时前
多余的一声「嗯」:Fun-CosyVoice3 zero_shot 开头伪影排查实录
音视频