跳转至

06 · 架构对照与自测

把概念变成能画出来、算出来、在源码里找到的知识。

1. 三种基础架构,先记住这张表

比较维度 HunyuanVideo 初版 13B T2V Wan 2.1 T2V MiniMax-H3 Base
本章比较的生成目标 视频 视频 视频 + 立体声音频
主要条件编码 MLLM 序列 + CLIP pooled 向量 umT5-XXL 文本序列 H3-Encoder(Qwen3-VL-32B),参考视觉/音频另有 VAE
文本进入主干的方式 joint attention cross-attention packed 多模态 self-attention
主干组织 20 双流 + 40 单流 视频 self-attention → 文本 cross-attention → FFN 50 层单流,共享 attention/FFN,模态专属 AdaLN
视频 VAE stride \((t,h,w)\) \((4,8,8)\) \((4,8,8)\) \((4,16,16)\)
视频 latent channels 16 16 24
视频 patch \((t,h,w)\) \((1,2,2)\) \((1,2,2)\) \((1,2,2)\)
视频 token 有效空间步幅 16 16 32
本文的速度预测依据 论文 Flow Matching 目标 论文 Flow Matching 目标 公开推理代码 RF velocity 路径;完整 loss 未确认

表的依据分别是 HunyuanVideo §4、Wan §4与 H3 官方发布配置 / SGLang scheduler。只比较列出的主模型,不对整个家族的全部音频、I2V 或后续产品下结论。HunyuanVideo 与 Wan 的技术报告也讨论了其他音频相关扩展,那与此处选定的基础 T2V 主干不是同一比较对象。

一句话复述可以是:HunyuanVideo 分阶段融合图文,Wan 2.1 让视频主序列读取外部文本,H3 则将音视频与条件组织成共享主干里的多模态序列。 这描述信息流,不是画质排名。

2. Wan 2.2 要单独分成两行

模型 专家结构 视频 VAE stride 要记住的变化
Wan 2.2 T2V-A14B / I2V-A14B 高/低噪声两个专家,按时刻切换 \((4,8,8)\) 总参数约 27B,每步激活约 14B
Wan 2.2 TI2V-5B dense 单模型 \((4,16,16)\) 更高压缩;统一文本/图像条件生成

依据:Wan 2.2 官方说明、T2V-A14B 配置、TI2V-5B 配置。同一个家族的新版本里,也可能同时存在不同主干和 VAE 组合。

3. 从四个层次定位一个术语

层次 回答的问题 术语
表示 视频/音频用什么数值空间表示? VAE、latent、压缩、patchify
网络 一次预测怎样处理这些数? Transformer、DiT、attention、FFN、AdaLN
生成过程 学什么目标、怎样生成样本? Diffusion、Flow Matching、噪声预测、速度预测、ODE
执行 如何把计算跑得快、放得下? FlashAttention、并行、量化、offload、cache

这是一种用于阅读论文的分类方法。例如“用了 FlashAttention,所以不是 diffusion”把执行层与生成过程混到了一起;“用了 VAE,所以不是 Transformer”则把表示层与网络层混到了一起。概念依据:LDM、DiT、FlashAttention

4. 术语速查

术语 简明含义 常见误解
latent 编码器学习出的数值表示 等同于低分辨率 RGB
token 网络序列中的一个位置及其向量 必须是离散单词
patchify 把网格划成块并映射成向量序列 等同于 VAE 压缩
timestep 在本系列多数生成公式中指噪声时刻 等同于视频第几帧
self-attention 同一序列产生 Q/K/V 只能看同一帧
cross-attention query 从外部条件读取 K/V 条件一定也被更新
joint attention 多模态组成同一 attention 序列 参数必须全部共享
AdaLN 条件生成归一化后的调制参数 每种实现都一样
CFG 混合有/无条件预测以增强引导 数值越大一定越好
causal 当前计算不读取指定意义下的未来 整个系统一定逐帧生成
MoE 按规则选择专家参与计算 一定是每个 token 的 FFN top-k 路由
KV cache 复用 attention 的 key/value 表示 固定输入的深层 K/V 总是固定

定义和适用边界见基础 01、基础 02、基础 03、H3 的 mask 讨论。

5. 五个能暴露理解漏洞的问题

A · 同一个网络执行 50 层、采样 30 步,一共只经过 50 个 block 吗?

不是。若每步一次完整 forward,主序列会执行 \(50\times30=1500\) 次 block 计算。常规双路 CFG 会增加预测分支成本;若用 distilled guidance 或其他优化,调用数又不同。先统计采样循环,再统计一次 forward 内的层数。

B · 17 帧、544×960 的视频,Hunyuan 初版有多少视觉 tokens?

VAE 时间长度是 \(1+(17-1)/4=5\),空间为 \(68\times120\),patch 后为 \(34\times60\),最终 \(N_v=5\times34\times60=10200\)。同样对齐的有效网格若用空间 stride 32,则 \(N_v=5\times17\times30=2550\)。后者是网格计算,不自动保证某个 H3 请求接受该输出尺寸;更不包含其音频、文本和参考 tokens。

C · Hunyuan 双流阶段,图像 query 看得见文本 key 吗?

看得见。各自投影后将 Q/K/V 拼接做 joint attention。两种模态的参数分开,并不代表连接被隔离。要看具体 attention 输入与 mask,不能只看框图上分成两列。

D · Wan 的文本很短,为什么模型还是很吃算力?

因为视频 self-attention 仍有 \(N_v^2\) 的连接量。文本 cross-attention 的 \(N_vN_t\) 较小,但没有替代视频内部的长序列计算。还要考虑 FFN、线性投影、层数与采样步数。

E · H3 的参考图像不变,可以照搬语言模型 KV cache 吗?

不能直接照搬。固定的是外层输入 latent;在联合 attention 内,参考 token 的深层表示可以依赖不断变化的生成目标。必须证明某个被缓存张量对当前变化无依赖,或接受近似复用并衡量质量损失。输入编码缓存、AdaLN 预计算、深层 attention KV 缓存是三种不同问题。

答案由上述模型的结构和形状推导得到,未进行模型生成实验。性能或质量判断需要实际测量。

6. 一段最小采样伪代码

# 教学伪代码:s=0 为噪声,s=1 为数据;省略 CFG、归一化与多模态细节。
condition = text_encoder(prompt)
z = gaussian_noise(latent_shape)
for s_now, s_next in schedule:
    velocity = dit(z, noise_time=s_now, condition=condition)
    z = z + (s_next - s_now) * velocity
video = vae_decoder(z)

请先在代码中标出四种角色:文本编码器、生成状态、速度预测网络、数值积分;最后单独找到 decoder。再去读真实 pipeline 时,不会被大量调度、并行与 dtype 转换掩盖主线。这里是基础 Flow Matching 的示意代码,不能直接代替任一模型的可运行 pipeline。Flow Matching

7. 建议怎样完成第一轮学习

  1. 先读 DDPM 的概率图和两段算法,能解释训练与采样为何不同。
  2. 读 Transformer 的 Q/K/V 图,再读 DiT Figure 3,标出时间条件进入的位置。
  3. 手算一次 VAE → patch → token 的形状,不带计算器先完成 17 帧的例子。
  4. 并排看 HunyuanVideo Figure 8 与 Wan Figure 10,用颜色标出视频 Q 与文本 K/V。
  5. 最后读 H3 官方图,为每个框标记“编码”“条件”“生成目标”“主干”或“解码”。

完成后再读已有源码推导和自回归视频扩散推理效率。不必第一遍就把训练集构建、分布式系统与全部论文附录一起学完。