对应 Maps to:CMU 10-423 / 10-623 / 10-723 Generative AI(Aran Nayebi、Matt Gormley),Lecture 25 · Wed 15-Apr · Generative Models for Videos(slides:lecture25-video)。 阅读材料:Çiçek et al. (2016), 3D U-Net;Arnab et al. (2021), ViViT;Ho et al. (2022), Video Diffusion Models;Blattmann et al. (2023), Align your Latents(Video LDM);Peebles & Xie (2023), DiT;OpenAI (2024), Video generation models as world simulators(Sora);Open-Sora 团队 (2025), Open-Sora 2.0;Chen et al. (2024), Panda-70M;Liu et al. (2024), World Model on Million-Length Video and Language with RingAttention(Large World Model);Rivard et al. (2025), NeuralOS。 依据说明:本讲按原课第 25 讲公开的 slides 展开:视频扩散模型(视频数据集、3D U-Net、ViViT 与分解的时空注意力、Video Diffusion Model 的联合训练与条件采样、Video LDM、DiT、Sora、Open-Sora 的成本与评估);视频与视觉语言模型(Large World Model);智能体式的视频生成与理解(Neural OS、Neural Computers)。所有实验是本讲义自己设计的,不代表课堂上讲了什么。为了在 CPU 上几分钟内训练,扩散实验用的是”一维视频”(§3.1 解释为什么)。 配套代码 Code:
code/lecture25/(3 个脚本 + 1 个模块;02 第一次运行约 2.5 分钟,其余几秒到半分钟) 预计阅读时间:1.5 小时(含运行代码)
0. 本讲导航 · How to read this lecture
0.1 学习目标 Learning goals
学完这一讲,你应该能够:
- 算出一段视频有多少个 token,解释为什么视频模型要压缩到潜空间、并把注意力分解成空间和时间两部分。
- 写出 ViViT 的两种 reshape,说明分解注意力为什么是”带掩码的完整注意力”。
- 解释视频扩散模型怎样在图像模型的基础上加时间层、怎样和图像联合训练;说明”没有时间层”的模型会生成什么。
- 说明条件生成(视频预测、插帧)的替换法为什么不连贯,以及重建引导怎样修正它。
- 描述 Video LDM、Sora、Open-Sora 的思路和代价;说出视频生成的评估方式。
- 说明 Large World Model 和 Neural OS 怎样把视频模型变成”理解”和”交互”的工具。
0.2 先修与本讲范围 Prerequisites & scope
| 默认你已经会 Assumed | 本讲只给直觉,不展开 Previewed only |
|---|---|
| 第 5 讲:ViT;第 7、8 讲:DDPM、DDIM、无分类器引导 | 视频自编码器的结构细节 |
| 第 12、14 讲:潜空间扩散、DiT | 视频超分辨率、插帧模型的级联细节 |
| 第 19 讲:长上下文、RingAttention | Sora 的未公开细节 |
0.3 本讲地图 Map
§1 视频数据:数据集与"用模型写字幕"
§2 视频的 token:3D U-Net、ViViT、分解的时空注意力 ← 代码 01
§3 视频扩散模型:时间层、联合训练、条件采样 ← 代码 02、03
§4 扩大规模:Video LDM、DiT、Sora、Open-Sora
§5 视频与 VLM:Large World Model
§6 智能体式的视频:Neural OS、Neural Computers
§7–11 小结、误区、练习、延伸阅读、下一讲
1. 视频数据 · Datasets for video models
slides 展示了一张视频-文字数据集的对比表:从 2016 年 MSR-VTT 的 1 万段人工标注的视频,到 WebVid-10M(2021,1070 万段,用网页上的替代文字当描述)、HD-VILA-100M(2022,1 亿段,用语音识别的文字),再到 Panda-70M(2024,7000 多万段 720p 视频)。
最大的那些数据集,字幕是模型生成的。 Panda-70M 用多个”跨模态教师模型”给每段视频写候选字幕,再用一个检索模型挑出最贴切的那一条。slides 的提醒是:字幕的质量和风格会因为用了哪个模型而差别很大——数据集里的”文字”在多大程度上反映视频内容,本身就是一个变量。(第 13 讲的 CLIP 数据、第 22 讲的偏见,都和这个问题有关。)
2. 视频的 token · How many tokens is a video?(代码 01)
2.1 3D U-Net 与 ViViT
3D U-Net(Çiçek et al., 2016)原本是为三维医学图像(例如高分辨率的三维组织扫描)做分割设计的:它和普通的 U-Net 几乎一样,只是把二维卷积(高、宽、通道)换成三维卷积(高、宽、深度、通道)。把”深度”换成”时间”,就能处理视频。
视频 ViT(ViViT,Arnab et al., 2021) 把一串帧切成小块当 token。普通的图像 ViT 只在一帧之内做注意力(每帧独立);ViViT 有两种注意力交替进行(slides 写出了 reshape):
空间注意力:b t h w c → (b t) (h w) c → 多头注意力 → b t h w c 同一帧内的 token 互相看
时间注意力:b t h w c → (b h w) t c → 多头注意力 → b t h w c 同一位置的 token 跨帧互相看
2.2 分解注意力 = 带掩码的完整注意力
01 第 2 部分按 slides 的 reshape 写了分解注意力,又写了”对全部 t·n 个 token 做完整注意力、再用掩码挡掉不在同一帧(或不在同一位置)的 token 对”,两者相差 6.7e-16——分解注意力不是近似,而是完整注意力的一个特例。交替叠几层以后,信息照样能从任何一帧的任何位置传到任何地方:先在帧内传到正确的位置,再沿时间传到正确的帧。代价是一层之内,一个 token 不能直接看”另一帧的另一个位置”(例如运动物体下一帧所在的位置),要靠两层接力。
2.3 为什么必须分解、必须压缩
完整注意力的代价随总 token 数的平方增长;分解以后是 ,省下约 倍(01 第 3 部分,d = 1024 时每层注意力分数的计算量):
| 视频 | 总 token | 完整三维注意力 | 空间 + 时间 | 省了多少 |
|---|---|---|---|---|
| 16 帧、潜空间 32 × 32、2 × 2 小块 | 4,096 | 6.9e10 | 4.6e9 | 15× |
| 2 秒 × 24 帧/秒、潜空间 64 × 64、2 × 2 | 49,152 | 9.9e12 | 2.2e11 | 46× |
| 10 秒 × 24 帧/秒、时间压缩 4 倍、潜空间 90 × 160、2 × 2 | 216,000 | 1.9e14 | 3.2e12 | 59× |
一段几秒钟的高清视频就有几十万个 token。所以视频模型几乎都要两步:先用自编码器把视频压缩到潜空间(空间和时间都压缩,§4.1),再把注意力分解成空间和时间两部分(或者像 Sora 那样,在压缩后的”时空小块”上用扩散 Transformer——它的技术报告没有公开注意力是否分解)。
3. 视频扩散模型 · Video Diffusion Models(代码 02、03)
3.1 架构:图像模型 + 时间层
slides:Video Diffusion Model(Ho et al., 2022)= 3D U-Net + 时空注意力;时间轴上用相对位置编码。具体地,每一层先做逐帧的空间卷积和空间注意力(这部分和图像扩散模型一样),再加一层时间注意力。
一个小实验。 为了在 CPU 上几分钟内训练出来,02 把视频压成了一维:每一帧只有一行 16 个像素,里面有一段长 2–4 的”物体”,每帧左移或右移一格,碰到边缘反弹。16 帧叠起来正好是一张 16 × 16 的时空图——纵轴是时间、横轴是空间;匀速运动是一条斜线,反弹是一个折角。(我们先试过真正的二维小视频:在 16 × 16 和 8 × 8 的像素上用扩散 Transformer、用卷积 + 时间注意力,训练几分钟都没能生成帧间连贯的视频——code README 记录了这几次失败。现象和结构都不受”一维”的影响。)
两个同样大小的扩散模型,唯一的区别是有没有时间层:
- 图像模型:每个块里只有空间卷积(核 1 × 3)——每一帧完全独立地生成;
- 视频模型:每个块里多一层时间卷积(核 3 × 1)——相邻帧之间可以交换信息。这是”把三维卷积拆成二维空间 + 一维时间”(伪三维 / (2+1)D 卷积),和 ViViT 拆注意力是同一个思路。
各训练 2000 步,用 DDIM(50 步)各生成 128 段视频:
| 每一帧画得像 | 整段 16 帧都像 | 相邻两帧都像时:恰好移动 1 格 | 长度不变 | |
|---|---|---|---|---|
| 真实视频 | 1.000 | 1.000 | 1.000 | 1.000 |
| 图像模型 | 0.988 | 0.836 | 0.140 | 0.343 |
| 图像模型,各帧打乱 | 0.988 | 0.828 | 0.142 | 0.323 |
| 视频模型 | 0.911 | 0.273 | 0.835 | 0.738 |
| 视频模型,各帧打乱 | 0.911 | 0.242 | 0.144 | 0.357 |
(“各帧打乱”:把同一时刻的帧在 128 段视频之间随机交换——每一帧的分布不变,帧与帧之间的联系被破坏。它是”如果每一帧都是独立画的”的基线。)
- 图像模型的每一帧都画得很好(99% 的帧是一段合格的物体),但帧与帧之间毫无关系:恰好移动一格的 14%、长度不变的 34%,和打乱以后一样。在时空图上,它画的是每一行各自随机的一小段。
- 视频模型多了时间层,帧与帧连起来了:恰好移动一格的 83%(打乱后 14%),在时空图上是连起来的斜线。但每一帧没那么干净(91%),整段都合格的只有 27%——同样的训练步数,它要学的东西多得多,常常在中途断一两帧、或者一条轨迹分叉成两条。
这就是真实视频模型的结构选择背后的道理:单帧的质量可以靠图像数据学好,“连贯”必须靠时间层从视频数据里学。
一个我们踩到的坑:归一化层也会让帧之间”串通”。 第一版的图像模型用了普通的 GroupNorm:它在整段视频(所有帧)上算均值和方差。结果这个”没有时间层”的模型生成的物体长度在帧之间明显相关(长度不变 74%,打乱后 36%)——帧与帧通过归一化的统计量偷偷交换了信息。改成逐帧归一化以后,时间层才是帧之间交换信息的唯一通道。真实的视频模型在”把视频当成一批独立的图像”处理时也要注意这一点。
3.2 和图像联合训练
slides:模型可以同时在图像和视频上训练——在图像上训练时,把时间注意力遮掉,让每个位置的注意力全部落在当前这一帧自己身上(相当于时间层什么也不做);这样的联合训练能提高视频生成的质量。Ho et al. 的表:每段视频之外再加 0 / 4 / 8 张独立的图像一起训练,FVD(越低越好)从约 202 降到 68、再到 58。图像数据多得多、也更多样,单帧的质量靠它学;时间层只从视频里学。
3.3 条件生成:替换法 vs 重建引导(代码 03)
slides 先回忆了无分类器引导(第 8 讲):。然后问:如果要从条件分布 里采样呢?例如 是前 16 帧、要生成后 16 帧(把视频续长);或者 是低帧率的视频、 是要插进去的中间帧。
替换法(replacement):用一个无条件的视频模型,每一步去噪时把 里”已知帧”那部分换成对 加同样强度的噪声,模型对全部帧做一次预测,只用 的部分。问题是:模型只是”看到”了加了噪声的 ;它对 的预测并没有被要求和 一致。
重建引导(reconstruction-guided sampling):根据”模型对条件数据的重建”来引导样本——
如果模型对已知帧的重建 和真实的 不符,就沿着让它们更符合的方向调整 。slides 引用论文的图:用替换法做自回归续写,生成的视频缺乏时间上的连贯;重建引导没有这个问题。论文在 BAIR 机器人推物体和 Kinetics-600 的视频预测基准上都取得了当时最好的 FVD。
03 用 02 的无条件视频模型(训练时从没见过”给定前半段”这种任务),给前 8 帧、生成后 8 帧:
| 方法 | 第一帧接得上(移动一格、长度相同) | 后半段和真实后续逐帧完全相同 | 后半段内部恰好移动一格 | ⏱ |
|---|---|---|---|---|
| 替换法 | 0.250 | 0.037 | 0.837 | 3.5 秒 |
| 重建引导,w = 3 | 0.516 | 0.083 | 0.808 | 6 秒 |
| 重建引导,w = 10 | 0.844 | 0.142 | 0.809 | 6 秒 |
| 重建引导,w = 30 | 0.961 | 0.199 | 0.808 | 6 秒 |
替换法生成的后半段自己是连贯的(内部 84% 恰好移动一格),但只有 25% 和给定的前半段接得上——它常常另起一条轨迹。重建引导把这个比例提到了 96%(w = 30),代价是每一步多一次反向传播。即使如此,后半段和真实后续逐帧完全相同的也只有约五分之一:引导主要修好了”接口”那几帧,再往后模型仍会自己另起炉灶(真实后续里有反弹,一步走错,后面每一帧都不同)。
4. 扩大规模 · Scaling video generation
4.1 Video LDM:在潜空间里
slides 的 Video Latent Diffusion Model(Blattmann et al., 2023)由两部分组成:
- 编码器 / 解码器:训练成把视频压缩到潜空间再重建回来(解码器还用一个”看视频的”判别器微调,让解码出的帧与帧之间不闪烁);
- 潜空间里的视频扩散模型:从一个预训练好的图像 LDM(第 12 讲的 Stable Diffusion)出发,在每一层插入时间层,只训练这些时间层——图像模型的知识原封不动地保留下来,视频数据只用来学”怎样动”。
它的生成是一个”堆栈”(slides 的图):先生成稀疏的关键帧;再分两步做时间上的插值,得到高帧率;最后把潜变量解码回像素,并可选地用一个视频超分辨率扩散模型放大。
4.2 DiT 与 Sora
slides 回顾了第 14 讲的 DiT:把潜变量切成小块,用带 adaLN-Zero 条件的 Transformer 块去噪。Sora(OpenAI, 2024)用 DiT 作为骨干,在图像和视频上训练:先用一个视频压缩网络把视频压到潜空间,再切成”时空小块”作为 token。技术报告的标题是”视频生成模型作为世界模拟器”——第 26 讲会接着讨论这个说法。
4.3 Open-Sora 2.0:成本在下降
slides 的表(Open-Sora 2.0 论文):Movie Gen 用了 6144 块 GPU、约 125 万 GPU 小时,估计 250 万美元;Step-Video-T2V 约 2992 块、50 万 GPU 小时、100 万美元;Open-Sora 2.0 用 224 块 GPU、约 10 万 GPU 小时、约 20 万美元——“随着模型和数据的改进,训练成本在下降”。它的三阶段训练(按每 GPU 小时 2 美元算):
| 阶段 | 数据 | GPU·天 | 成本 |
|---|---|---|---|
| 256px 文本到视频 | 7000 万 | 2240 | 10.75 万美元 |
| 256px 文本 / 图像到视频 | 1000 万 | 384 | 1.84 万美元 |
| 768px 文本 / 图像到视频 | 500 万 | 1536 | 7.37 万美元 |
先在低分辨率、大量数据上学”内容和运动”,再在少量高分辨率数据上学”细节”——绝大部分计算花在低分辨率上。
怎样评估? slides 列了两种:人工评估(人在两个模型的视频之间选更好的,分别看画面质量、是否遵循提示、运动质量)和基准 + 指标(例如 VBench,把视频质量分解成十几个维度的自动指标,汇总成质量分和语义分)。我们的 02 用的”每一帧像不像""相邻帧是否连贯”正是这两个维度的缩小版。
5. 视频与 VLM:Large World Model
slides 的 Large World Model(Liu et al., 2024)把视频理解和生成放进同一个自回归 Transformer:图像和视频帧用 VQGAN 变成离散的图像 token,文字用 BPE 分词,全部排成一条序列,预测下一个 token(图像 token 或文字 token)。
难点是长度:一小时的视频有几十万到上百万个 token。它分两个阶段训练:先把一个语言模型的上下文逐步扩展到 100 万 token(用长书籍);再在越来越长的图文、视频-文字数据上训练(从单张图像到几千帧的视频问答)。能处理这么长的序列,靠的是第 19 讲的 RingAttention——把序列切开分给多块 GPU,键值块在 GPU 之间轮转。slides 展示了它既能根据文字生成图像和短视频(“烟花在夜空中绽放""海浪拍打着海岸”),也能回答关于长视频内容的问题。
6. 智能体式的视频生成与理解
6.1 Neural OS
slides 的 Neural OS(2025)是”可交互的视频扩散”:用户的动作 + 隐状态 → 下一帧屏幕。它模拟一个操作系统的图形界面:
- 一个 RNN(两层 LSTM)读入用户的输入(鼠标移动、点击、键盘),维护”电脑现在处于什么状态”的隐状态;
- 一个扩散渲染器以 RNN 的输出和一张”光标位置图”为条件,生成下一帧屏幕画面。
slides 的例子:模型生成的画面序列里,用户把鼠标移到”Home”文件夹、双击打开,再启动并关闭一个游戏程序——每一帧都是模型画出来的,没有真正的操作系统在运行。
6.2 Neural Computers
slides 最后提到 Neural Computers(2026):更进一步的设想——把传统计算机分离的计算、存储和输入输出,统一成一个学出来的”运行时状态”,让神经网络本身扮演计算机。这些工作把视频模型从”生成一段好看的视频”推向”模拟一个可以交互的世界”——下一讲的主题。
7. 小结 · Summary
- 视频 = 很多帧 + 帧间连贯;最大的视频数据集用模型写字幕,字幕质量取决于写字幕的模型。
- 一段视频的 token 数是”帧数 × 每帧 token”,完整注意力按它的平方增长;所以要先压缩到潜空间,再把注意力分解成空间和时间——分解注意力是带掩码的完整注意力。
- 视频扩散模型 = 图像扩散模型 + 时间层;没有时间层,每一帧都对,连起来却不是视频。可以和图像联合训练(遮掉时间层),单帧质量靠图像,连贯靠视频。
- 归一化层也是一条帧间通道:逐帧归一化才能让时间层成为唯一的帧间交流方式。
- 条件生成:替换法只让模型”看到”条件,重建引导要求生成的部分和条件一致。
- Video LDM 在预训练的图像 LDM 里插入时间层;Sora 用 DiT 处理时空小块;Open-Sora 2.0 用三阶段训练把成本降到约 20 万美元。
- Large World Model 用 RingAttention 在百万 token 上统一视频理解和生成;Neural OS 用”RNN + 扩散渲染器”把视频生成变成可交互的模拟。
8. 常见误区 · Common pitfalls
- “视频生成就是逐帧生成图像。” 逐帧独立生成的视频每帧都对,帧与帧却毫无关系(§3.1)。
- “分解的时空注意力是完整注意力的近似。” 它是带特殊掩码的完整注意力,多层叠起来信息仍然能传到任何地方(§2.2)。
- “没有时间层,帧之间就一定没有信息交流。” 在整段视频上算统计量的归一化层也会传递信息(§3.1)。
- “无条件模型 + 替换已知帧,就能做视频预测。” 生成的部分自己连贯,却常常和已知帧接不上(§3.3)。
- “视频模型的训练成本只会越来越高。” 更好的数据、更好的压缩和分阶段训练让同等质量的成本在下降(§4.3)。
9. 练习 · Exercises
练习 1(token 数)。 一段 5 秒、24 帧/秒、1280 × 720 的视频,自编码器在时间上压缩 4 倍、空间上压缩 8 倍,再切成 2 × 2 的小块。一共多少个 token?完整注意力和分解注意力的注意力分数计算量之比约是多少?
参考答案
帧数 120 / 4 = 30;每帧潜空间 160 × 90,切成 2 × 2 后 80 × 45 = 3600 个 token;总共 108,000 个。比值 ≈ = 30 × 3600 / 3630 ≈ 29.8 倍。
练习 2(分解注意力的掩码)。 t = 2 帧、每帧 n = 2 个 token,按”帧 0 的 token 0、token 1,帧 1 的 token 0、token 1”排列。写出空间注意力和时间注意力的 4 × 4 允许矩阵。两者合起来(先空间后时间)能让 token (帧 0, 位置 0) 的信息传到 (帧 1, 位置 1) 吗?
参考答案
空间:块对角 [[1,1,0,0],[1,1,0,0],[0,0,1,1],[0,0,1,1]]。时间:[[1,0,1,0],[0,1,0,1],[1,0,1,0],[0,1,0,1]]。先空间:(0,0) → (0,1);再时间:(0,1) → (1,1)。两层就能传到。
练习 3(联合训练)。 在图像上训练时”把时间注意力遮掉,使全部注意力落在当前帧上”。为什么这等于时间层什么也不做(假设有残差连接)?如果改成”把时间注意力的输出置零”,效果一样吗?
参考答案
只允许看自己时,注意力权重是 1,输出 = 自己的 V 投影再过输出投影——是一个逐位置的线性变换,不混合任何其他帧,相当于一个”逐帧的 MLP 层”(对单张图像没有害处,也不提供时间信息)。把输出置零则是让残差分支完全消失。两者都不在帧之间传递信息,但前者仍然训练了 V 和输出投影的参数(它们在视频上也会用到)。论文的做法是前者。
练习 4(重建引导的方向)。 为什么重建引导的梯度是对 (未知帧的噪声变量)求的,而不是对 ?如果模型完全不在帧之间传递信息(没有时间层),重建引导还有用吗?
参考答案
我们想改变的是生成的部分,让它和已知部分一致; 每一步都被替换成已知帧加噪声,调它没有意义。没有时间层时, 只依赖 ,对 的梯度为 0——重建引导完全不起作用。它能起作用,正是因为模型在帧之间传递信息:生成的帧”错了”,会让模型对已知帧的重建也跟着变差。
练习 5(成本)。 按 Open-Sora 2.0 的表,每 GPU 小时 2 美元,2240 GPU·天是多少美元?三个阶段里低分辨率阶段占总计算的多少?
参考答案
2240 × 24 × 2 = 107,520 美元(表里的 10.75 万)。低分辨率的前两个阶段 2240 + 384 = 2624 GPU·天,占 2624 / 4160 ≈ 63%。
10. 延伸阅读 · Further reading
- 架构:Çiçek et al. (2016), 3D U-Net;Tran et al. (2018), A Closer Look at Spatiotemporal Convolutions((2+1)D 卷积);Arnab et al. (2021), ViViT;Bertasius et al. (2021), TimeSformer。
- 视频扩散:Ho et al. (2022), Video Diffusion Models;Singer et al. (2022), Make-A-Video;Ho et al. (2022), Imagen Video;Blattmann et al. (2023), Align your Latents;Blattmann et al. (2023), Stable Video Diffusion;OpenAI (2024), Sora 技术报告;Open-Sora 团队 (2025), Open-Sora 2.0;Huang et al. (2024), VBench。
- 数据:Bain et al. (2021), WebVid;Chen et al. (2024), Panda-70M。
- 理解与交互:Liu et al. (2024), Large World Model;Liu et al. (2023), RingAttention;Rivard et al. (2025), NeuralOS;Valevski et al. (2024), Diffusion Models Are Real-Time Game Engines(GameNGen)。
11. 下一讲预告 · Next lecture
第 26 讲(最后一讲):交互式世界模型 + 对齐科学。世界模型 = 给定当前状态和动作,预测下一个状态。我们会看三种范式(生成 3D 场景、可交互的视频如 Genie、隐空间的表示如 V-JEPA),在一个小网格世界里训练动力学模型、在”想象”中规划、从没有动作标签的视频里学出”潜动作”,并演示 JEPA 的”表示坍缩”。最后是 Aran Nayebi 的”对齐科学”:从复杂度的角度看对齐的内在障碍(任务数、智能体数、状态空间大小),以及”可纠正性”的形式化。