Meta Movie Gen:新的 SOTA 视频生成模型-技术报告解读
一、背景
前段时间 Meta 发布了对标 OpenAI SORA 和快手可灵的视频生成模型 Movie Gen,这里我们进行相关的技术解读。本文主要聚焦在其图像和视频生成模型部分,进行详细介绍;然后对视频个性化、编辑和音频生成进行简单概述。
对应的论文:Movie Gen: A Cast of Media Foundation Models
对应的 Blog:How Meta Movie Gen could usher in a new AI-enabled era for content creators
更多的 Video:Meta Movie Gen
我们在之前的文章中也详细介绍过各种文生图相关的技术方案、OpenAI SORA 技术原理以及 Meta 的 LLaMA 3 技术报告和大规模 GPU 集群建设,可以参考:
- OpenAI 文生图模型演进:DDPM、IDDPM、ADM、GLIDE、DALL-E 2、DALL-E 3
- 文生图模型演进:AE、VAE、VQ-VAE、VQ-GAN、DALL-E 等 8 模型
- DALL-E、Stable Diffusion 等 20+ 图像生成模型综述
- 追本溯源:OpenAI Sora 技术报告解读
- LLaMA 3 技术报告解读:全面梳理 LLM 相关技术栈
- LLaMA 3 背后的大规模 GPU 集群 RoCE 网络建设
二、摘要
Movie Gen 是一组基础模型,可生成具有不同宽高比、同步音频的高质量 1080P 高清视频。此外,作者还展示了其他的能力,比如基于指令的精确视频编辑、根据用户图像生成个性化视频等。
作者的模型在多个任务上都达到了新的 SOTA 水平,包括:文本->视频生成、视频个性化、视频编辑、视频->音频生成、文本->音频生成等。
最大的视频生成模型是一个 30B 参数的 Transformer 模型,经过训练,最大上下文长度可达 73K 视频 Token,对应以每秒 16 帧的速度生成 16 秒的视频。此外,作者还展示了相应的多项技术创新和简化,比如模型结构、隐空间、训练目标和方案、数据管理、评估以及并行化方案和推理优化方案,使得能够从扩展预训练数据、模型大小以及训练预算中获益,以最终训练大规模视频生成模型。
三、概览
总体来说,Movie Gen 包含 4 个模型以及 3 个基准。
3.1 四个模型
与 LLM 模型不同,LLM 聚焦与生成文本,而本文的 Movie Gen 模型聚焦于生成图像、视频和音频。包含 2 个基础模型、1 个个性化模型以及一个编辑模型。
两个基础模型为:
- Movie Gen Video:包含一个30B 参数量的基座模型,可用于文本->图像、文本->视频生成。支持可变宽高比、分辨率以及时长。在 O(100)M 视频和 O(1)B 图像上训练,作者发现,预训练的模型可以推理物体动作、交互、几何、相机移动和物理学。为了进一步提升视频生成能力,额外在小规模高质量的视频和文本数据集上进行 SFT。
- Movie Gen Audio:包含一个13B 参数量的基座模型,可用于文本->音频、视频->音频生成。支持遵循文本提示,生成 48kHz 的高质量电影音效以及与视频输入同步的音乐等。在O(1)M 小时的音频上预训练,并且在一个小规模的高质量(文本、音频)、(视频、文本、音频)数据集上 SFT,以生成高质量音频。
如下图所示为上述两个模型的使用示例:
个性化模型和视频编辑模型为:
- Personalized Movie Gen Video:提供视频个性化能力,可以输入一个个人图片,然后生成针对这个人的个性化视频。在Movie Gen Video 基础上使用包含人类的视频子集(自动构建了图像-文本对输入和视频输出数据) Post Training而来。
- Movie Gen Edit:允许用户使用文本说明轻松地对真实和生成的视频进行精确和富有想象力的编辑。同样在Movie Gen Video 基础上 Post Training 而来。
如下图所示为上述两个模型的使用示例:
3.2 三个基准
为了更好的进行基准评估,作者也进一步发布了 3 个评估基准:
- Movie Gen Video Bench:用于评估视频生成能力,总共包含 1000 个 Prompt,涉及各种不同的元素。
- Movie Gen Edit Bench:用于评估视频编辑能力,总共包含 1152 个样本,涉及 6 个不同的编辑任务。
- Move Gen Audio Bench:用于评估音频生成能力,总共包含 538 个样本。
四、图像和视频生成
4.1 概览
针对文本->图像和文本->视频生成,作者训练了一个统一的基座模型。作者将图像看做一个单帧的视频,给定一个文本提示作为输入,模型可以生成包含一个或多个 RGB 图像作为输出的视频帧。
如下图 Figure 2 所示为 Movie Gen Video 模型的训练过程,其包含 3 个阶段:
- 256 px Image Training:使用 256 分辨率的图像-文本对训练文本->图像生成模型,使用 O(1) B 图像数据集,训练总共迭代 1.94B 个 Sample。
- 256->768 px Video Training:
- 使用 256 分辨率混合训练文本->图像和文本->视频能力,包含 O(100)M 切片数据集,训练总共迭代 394.8M 个 Sample。
- 使用 768 分辨率混合训练文本->图像和文本->视频能力,包含 O(100)M 切片数据集,训练总共迭代 73.8M 个 Sample。
- 个性化、编辑模型训练:基于上述的基座模型 Post Training。
为了提升训练和推理效率,生成是在压缩的时空隐空间(spatio-temporally latent space)进行。因此作者训练了一个时序自编码模型(Temporal Autoencoder Model,TAE),以便将图像、视频编码到压缩的时空隐空间。对于用户输入的文本提升,使用预训练的 Text Encoder 模型进行编码,以获得文本 Embedding,这也将作为生成模型的 Condition 输入。此外,作者使用 Flow Matching 训练目标来训练生成模型。将采样噪声和所有 Condition 作为输入,使 Generative 模型生成输出隐向量。然后使用 TAE 的 Decoder 将其映射回像素空间,以便生成图像和视频。整个过程如下图 Figure 3 所示(包含了上述的 TAE、Text Encoder 以及 Generative 模型):
在对基座模型的所有组件进行设计选型时,作者都尽量注重简单化,包括训练目标、主干架构以及 TAE 的时空压缩。具体来说,这些选择包括:
- 使用 LLaMA 3 作为统一的图像、视频生成模型主干架构,以便更简单的扩展和高效训练;
- 最大的 30B 模型可以直接生成不同宽高比(比如 1:1,9:16,16:9)、多种长度(4-16s)的视频(768x768);
- 此外,使用空间上采样(Spatial Upsampling)模型可以进一步生成全高清 1080P 的视频。
4.2 图像、视频基座模型
4.2.1 TAE 模型
上述提到的 TAE 模型是一个标准的 VAE(Variational AutoEncoder)模型。假设输入的空间维度为 T’ x 3 x H’ x W’,经过 TAE 的 Encoder 后将编码为 T x C x H x W 的隐空间向量,在空间、时间维度均是 8 倍下采样,也就是 T’/T=H’/H=W’/W=8;而 Decode 是 8 倍上采样。通过这种方式,可以大幅降低输入生成模型(Transformer Backone)的维度,以便生成长时间、高分辨率的视频帧。如下图 Figure 4 所示为相应的流程:
TAE 模型结构来自 [2112.10752] High-Resolution Image Synthesis with Latent Diffusion Models (也就是 Stable Diffusion)中的 Image AutoEncoder 模型,并进行相应的修改以增加时序信息。具体来说:
- 每一个 2D 空间卷积后增加一个 1D 时序卷积,称为2.5D Convolution;每一个 2D 空间 Attention 之后增加一个 1D 时序 Attention,称为2.5D Attention。
- 所有时序卷积两边对称 Padding。
- 时序卷积通过 stride 为 2 来实现下采样,上采样时采用最近邻插值。
- Channel 维度 C = 16,作者同样发现增加 Channel 维度可以提升重建和生成质量。
- TAE 训练时采用了预训练的 Image AutoEncoder 模型来初始化,并增加时序参数。
- 联合图像和视频进行序列,图像 Batch 和视频 Batch 的比例为 1:3。
TAE 模型的训练目标:如下图 Figure 5 所示,之前 StableDiffusion 中的训练目标容易导致 Spot Artifact 问题,为了缓解这个问题,作者在损失函数上增加了一个异常损失惩罚(Outlier Penalty Loss,OPL),如下图公式 (1) 所示:
通过时序 tiling 实现高效推理:直接编码、解码高分辨率长视频的代价很高,比如 1024x1024 分辨率、256 帧需要非常大的存储空间。为了解决这个问题,作者在时序维度将长视频切分为不同的 tile,然后每个 tile 分别进行编码和解码,最后再将结果融合到一起。在切片的时候允许一定的 Overlap,如果执行 Overlap,则结果要对应线性加权。使用 Overlap 可以避免边界处的 Artifact,但是也会引入额外的计算开销。在作者的实践中,Encoder212!!@2121 并没有使用 Overlap,对应的 tile size 为 32(32个视频帧,降采样后对于隐空间 4 帧);而在 Decoder 中使用了 16 帧的 Overlap(对应隐空间 2 帧)。如下图 Figure 6 所示为推理阶段对应的切片方案:
4.2.2 视频和图像生成训练目标
生成模型训练采用了 [2210.02747] Flow Matching for Generative Modeling 提出的 Flow Matching 框架。
4.2.3 视频和图像生成 Backbone 架构
采用了类 LLaMA 3 模型架构,并且使用了 RMSNorm 和 SwiGLU。主要做了 3 点改造:
- 为了集成基于文本提示提取的文本 Embedding 作为 Condition,在每一个 Transformer Block 的Self-Attention 和 FFN 之间插入一个 Cross-Attention。当然,作者使用了多个文本模型来提取 Embedding。
- 增加了一个Adaptive Layer Norm Block以便集成时间步长 t,类似[2212.09748] Scalable Diffusion Models with Transformers。
- 使用双向 Full Attention,而不是 Causal Attention。
对应的模型超参如下图 Table 1 所示,共包含 30B 参数量,因为直接基于 LLaMA 3 改造而来,也就可以直接应用 LLaMA 3 的相关经验,比如模型结构超参配置,学习率和 Batch Size 设置等。
4.2.4 丰富的文本 Embedding 和视觉-文本生成
如下图所示,作者使用了 3 个预训练的文本 Embedding 模型:UL2、ByT5 和 Long-prompt MetaCLIP,以便提前语义级(Semantic-Level)和字符级(Character-Level)文本 Embedding。
- Long-prompt MetaCLIP 是基于 MetaCLIP 的文本 Encoder 在长文本描述数据上微调而来,以将输入文本 Token 长度从 77 扩展到 256。
- 针对 3 个模型,会分别提取文本 Embedding,然后Concat 到一起并通过一个线性投影和 LayerNorm 层将其投影到 6144 维的归一化向量。
- UL2 和 Long-prompt MetaCLIP 用于提取语义级 Embedding。
- ByT5 用于提取字符级 Embedding,仅用于编码视觉文本,比如明确要求输出结果中包含特定的字符串(“No,Movie Gen is the best”)。
控制 FPS:使用 FPS Condition 来控制生成视频的长度,方法是将每个训练视频的采样 FPS 值预先添加到输入文本提示(例如,“FPS-16”)。在预训练期间,以原始 FPS 采样视频切片,最小维 16 FPS;在微调中,以 16 和 24 两个固定 FPS 值采样视频切片。
4.2.5 空间上采样
需要说明的是,上述的模型生成最终只能生成 768 px 的视频,作者用过一个空间上采样模型(Spatial Upsample)将 768 px 的视频转换为 full HD(1080P) 分辨率的视频。可以大幅降低视频生成模型的计算开销,主要是低分辨率会大幅降低文本->视频模型处理的 Token 数。
如下图 Figure 7 所示,作者将空间上采样看做一个视频->视频的生成任务,低分辨率视频作为输入,高分辨率视频作为输出。
- 低分率输入视频在输入模型之前首先经过双线性插值扩展到期望的输出大小,然后经过 VAE 模型生成高分辨率视频。
- VAE 模型同样是使用 Encoder 将每个视频帧编码到隐空间的隐向量,然后隐空间模型会生成用于高分辨率的隐向量,最后使用 Decoder 来生成高分辨率视频帧。
实现细节:空间上采样模型是一个文本->视频 Transformer 模型的变种,包含 7B 参数量,并使用 1024 px 训练的文本->视频模型来初始化,以便更好的利用高分辨率图像数据。空间上采样模型训练用于预测视频的隐向量,然后使用 VAE Decoder 逐帧生成视频帧。
如下图 Fig 3 所示,在 [2311.10709] Emu Video: Factorizing Text-to-Video Generation by Explicit Image Conditioning(也是 Meta 的工作) 中,首先会使用文本提示生成视频首帧 I,然后将生成的首帧 I 作为条件输入,同时使用 Mask m 标识首帧 I,然后使用生成模型 F 生成视频 V。
与上述 Emu Video 类似,空间上采样模型中编码视频在通道维度也会与生成视频拼接,一起输入空间上采样 Transformer 模型。由于拼接,输入初的附加参数也将初始化为 0。
作者在 400K 高清视频上以 24 FPS、14 帧切片的方式训练空间上采样模型。 并且采用了二阶退化([2107.10833] Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data)来模拟输入中的复杂退化,以训练模型生成高清输出视频。训练时采用的是已有的高清视频,而推理时使用的是经 TAE Decoder 解码的视频,为了最小化训练-测试偏差,也会使用 TAE 生成的视频随机替换二阶退化的视频。此外,作者观察到,只经过 20 个推理 Step 就可以生成一个很好的结果视频。
这种简单的架构可以用于各种倍数的超分辨;然而,本文中作者只训练了 2x 的空间超分模型。与上述 TAE tail 类似,同样会使用滑动窗口方式对视频进行上采样,窗口大小为 14,重叠 4 个 Latent 帧。
这种简单的架构可用于各种倍数的超分辨率;然而,我们为我们的案例训练了一个 2⇥ 的空间超分辨率模型。与 TAE 平铺(第 3.1.1 节)类似,我们使用滑动窗口方法对视频进行上采样,窗口大小为 14,重叠 4 个潜在帧。
内存限制导致无法使用更长的视频训练 Spatial Upsample。所以才使用上述滑动窗口的方案,然而,这也导致在边界处出现明显不一致的现象。为了避免这种情况,作者采用了 MultiDiffusion([2302.08113] MultiDiffusion: Fusing Diffusion Paths for Controlled Image Generation)方案,其无需训练,可以通过约束条件来保证不同生成阶段的一致性。具体来说,在每个 Denoising Step 中,使用重叠帧隐向量的加权平均值来促使窗口间的信息交换,以增强输出的时序一致性。
4.2.6 模型扩展和训练效率
这个部分作者具体介绍了高效训练 Movie Gen Video 30B 模型的方案,包括 Meta 的 AI Infra 建设,与 SOTA 模型训练的对比以及采用的分布式并行策略等。
Infrastructure:我们在前面的文章中介绍过,Meta 有 2 个 24K H100 GPU 的 Data Center,一个是 NVIDIA Quantum2 Infiniband(IB) 网络互联,一个是 RoCE 互联,其中 RoCE 集群采用 3 层 Clos 网络。
- 每个 Rack包含 2 个 Server,每个 Server 有 8 个 H100 80GB GPU,8 个 400 Gbps NIC。每个 Rack 中都有一个 TOR(top-of-the-fack) Switch。
- 每个 Cluster包含 192 个 Rack,共 192x2x8=3072 个 H100 GPU,Cluster 内部的后向网络是无收敛的,而跨 Cluster 是 1:7 的收敛比。
Scheduler:训练任务调度采用的是 Meta 在 MAST: Global Scheduling of ML Training across Geo-Distributed Datacenters at Hyperscale 中提到的 MAST。MAST 的设计原则是:时间解耦(Temporal decoupling)、范围解耦(Scope decoupling)和全面搜索(Exhaustive search),使得 MAST 能够在全局范围内有效地调度复杂的 ML 训练工作负载。如下图 Figure 1 所示,MAST 架构包含全局 ML 调度器(GMS)、区域 ML 调度器(RMS)和集群管理器(CM),它们分别在全局、区域和 Cluster 范围内处理不同的调度职责。此外,MAST 还利用了 Tetris 系统,可以优化跨区域数据放置,确保数据和 GPU 在同一个位置。
与 LLM 对比:LLM 通常采用 Causal Mask Attention,而 Movie Gen Video 中采用双向 Full Attention,这样就导致 Movie Gen Video 中 Attention 计算代价更高,几乎是 LLM 的 2x。
此外,在 LLaMA 3 中会使用 GQA 来代替 MHA,以便降低 KV Cache 大小和计算量,推理时也可以进一步加速。由于 Movie Gen Video 不是自回归模型,也就不需要 KV Cache,因此作者并没有采用 GQA。
和 LLaMA 3 类似,模型同样支持可变的上下文长度,上下文长度与空间分辨率密切相关。对于 768x 的训练,其上下文长度将达到 73K(768x768, 256 帧,8x8x8 的下采样 -> 768x768x256/8/8/8=294912,得到 294912 个隐向量,然后使用 3D 卷积(2x2x1)得到 73728 个 Token)。LLM 通常先在短上下文(比如 4K、8K)上预训练,然后扩展到长上下文,主要训练预算花费在短上下文预训练上;而 Movie Gen Video 的训练主要花费在 768x 的预训练上。
模型并行:由于模型比较大,上下文序列很长,同时又是主要的训练开销,因此就需要尽可能高效的训练。为此,作者采用了 3D 并行策略,允许灵活的扩展 GPU 规模;具体来说,作者结合了 FSDP、TP、SP(Megatron-LM SP) 和 CP(Megatron-LM CP) 方案。
序列并行的方案有很多,上述提到 SP 和 CP 与 Megatron-LM 对应。如下图 Figure 5 所示为 Megatron-LM SP,其主要是为了解决 TP 中无法分摊的显存。作者分析后发现 LayerNorm 和 Dropout 的输入输出没有被分摊到不同的 GPU。实际上它们在不同的 Token 上并没有依赖关系,因此可以按照 Sequence 维度进行切分,不同 GPU 只保留序列的一部分,也只计算这一部分:
在 Megatron-LM 中还有Megatron-LM CP(上下文并行,Context Parallelism),实际上就是按照输入序列进行切分。如下图所示为 Megatron-LM 中 TP 和 CP 的组合,其中 AG/RS 表示 Forward 为 All Gather,Backward 为 Reduce Scatter;RS/AG 表示 Forward 为 Reduce Scatter,Backward 为 All Gather。具体可参考 Context parallelism overview - NVIDIA Docs:
如下图 Figure 8 所示,作者展示了本文中如何在 Transformer 模型的不同部分应用这些并行方案:
- Tensor Parallelism(TP):在FFN 层各个 Token 之间没有交叉,直接采用 TP,对模型参数进行切分;当然,也就在 Forward 和 Backward 过程额外引入了 AllReduce 通信操作。
- Sequence Parallelism(SP):对应NVIDIA Megatron-LM SP,在 TP 的基础上可以进一步使用 SP。具体来说,Scale 和 Norm 等操作按照序列维度切分,每个设备只处理一部分序列。如果不这么做,将导致部分层(比如 LayerNorm)出现重复计算,在不同的 TP Group 产生相同的激活。
- Context Parallelism(CP):对应NVIDIA Megatron-LM CP,在输入序列维度切分,具体来说,将输入序列切分为不同的 Chunk,每个设备处理一部分的 Token,然后通过通信来实现 Attention 到其他 Chunk 的 Token。CP 主要应用在 Attention 计算中,不过在 Self-Attention 和 Cross-Attention 中实现方式会不太一样:
- Cross-Attention 的 Contexts(对应 K 和 V) 是一些 Condition,往往不会特别长,因此不用 CP 切分;对应FSDP + TP + SP。
- Self-Attention 中 Forward 过程通过 K 和 V 的 AllGather 来实现 Attention 计算(不用传输 Q),Backward 过程通过 ReduceScatter 来传递相关梯度。对应FSDP + TP + SP + CP。
- 由于 LLaMA 3 使用 GQA,而 Movie Gen Video 采用 MHA,K 和 V 的大小存在明显差异,也就导致 K 和 V 的通信量存在明显差异(比如 LLaMA 3 70B 会小 8x)。
- Fully Sharded Data Parallel(FSDP):其实就是数据并行(Data Parallelism,DP),不过会将模型权重、优化器状态和梯度切分到所有 DP Group,然后在训练中通过 Gather 和 Scatter 权重、梯度来实现同步。
其他部分的切分:
- Text Encoder:ByT5 和 Long-Prompt MetaCLIP 模型都很小,因此在所有 GPU 上都有一个完整的副本。UL2 稍微大点,但相比整个 Pipeline 还比较小,因此仅在 DP Group 的每个 TP rank 上使用 FSDP 切分。
- TAE:仅包含较少的冻结参数,但随着输入的增加,中间激活会非常大。此外,对 TAE 进行各种切分也并不容易,这导致数据预处理(TAE Encode)生成隐向量可能出现瓶颈,因此作者采用提前计算和缓存的方式来隔离这部分的影响,这也是常见的方案。
通信和计算重叠:虽然并行方案可以通过跨 GPU 切分 FLOP 和内存需求来训练长序列 Transformer 模型,但是直接的实现可能带来额外的开销并导致效率低下。因此,作者构建了一个分析框架来对计算和通信时间进行建模,能够识别出需要 GPU 间通信的重复 Activation,从而设计出高度优化的模型并行方案。作者自定义了相关并行化实现,用 PyTorch 编写并编译成 CUDAGraph,以最大限度的降低暴露的通信时间、提升可用的 Activation 内存。
4.3 预训练
4.3.1 预训练数据
预训练数据集包含 O(100)M 视频-文本对数据和 O(1)B 图像-文本对数据。对于图像-文本数据采用类似 [2311.10709] Emu Video: Factorizing Text-to-Video Generation by Explicit Image Conditioning 的方案,本文中作者主要聚焦在视频数据。
数据池中包含 4s-120s 的视频数据,包含各种场景,比如人类、自然、动物和物体等,最终会生成 4s-16s 的视频切片-文本对训练数据集。如下图 Figure 9 所示为其数据处理过程,总共包含 3 个过滤阶段和 1 个描述生成阶段:
- Visual 过滤:6 种过滤手段来移除低质量视频。包括:
- 删除长或宽小于 720 px 的视频。
- 控制数据集中的宽高比,最终 60% 横屏视频,40% 竖屏视频。更倾向于横屏视频是因为它们的持续时间更长、美观性更好且动作稳定。
- 使用视频 OCR 模型去除包含太多文本的视频。
- 使用 FFmpeg 的场景边界检测来提取 4s-16s 的视频帧。
- 训练了一个视觉模型来预测帧级的美观度,视觉质量、大的边界以及视觉效果,用于过滤。
- 参考 Panda-70M,删除视频中起始的几秒 ,因为其经常包含一些不稳定的相机移动或者过渡效果。
- Motion 过滤:同样参考 Emu Video,删除很少动作的视频。
- 首先,使用内部的一个静态视频检测模型删除没有任何动作的视频。
- 然后,根据 VMAF Motion 分数和 Motion 矢量确定具有“合理”动作的视频(FFmpeg)。为了删除相机频繁抖动的视频,作者使用 PySceneDetect 库中的镜头边界检测。
- 最后,删除了具有特殊动作效果的视频,比如幻灯片视频。
- Content 过滤:确保预训练数据集的多样性。
- 利用视频帧的 Embedding 相似性去除重复的切片。
- 采用重采样技术来平衡不同类别的占比。具体来说,基于视频-文本联合 Embedding 进行聚类,然后根据每个聚类簇大小的平方根倒数进行采样。
- Captioning:使用 LLaMA3-Video 模型为视频切片创建准确而详细的文本描述。
- 作者微调了 8B 和 70B 的模型变体,并使用它们来生成描述,整个训练集中 70% 是 8B 模型生成,30% 是 70B 模型生成。
- 为了实现影片级摄像机移动控制,作者还训练了一个相机移动分类模型,可以预测 16 类相机移动,比如缩小、向左平移等。然后将高置信度的摄像机移动预测作为之前生成的文本描述的前缀。推理时,允许用户显示制定摄像机移动控制提示。
如下图 Table 38 所示为各阶段的过滤阈值,最终只保留了不到 1% 的数据:
多阶段数据子集:作者整理了 3 个预训练数据子集,具有逐渐严格的 Visual、Motion 和 Content 阈值,以满足预训练不同阶段的需求。
- 首先,使用最小宽度或高度为 720 px 的视频切片进行低分辨率训练。
- 然后,筛选数据集,使用最小宽度或高度为 768 px 的视频用于高分辨率训练。
- 最后,还会使用新的视频来增强高分辨率训练集,其包含 80% 横屏视频和 20% 竖屏视频。此外,至少 60% 包含人类,在这个过程中,作者构建了一个600 个人类动作和表情的词库,然后使用 zero-shot 文本->视频检索的方式来筛选包含人类的视频。在 Content 重采样期间,保留了这些人类视频的比例。
时长和大小分桶:为了支持不同的视频长度和宽高比,作者根据宽高比和时长对数据进行分桶。每个桶中的视频最终都会生成完全相同的隐空间大小,从而可以比较轻松地对训练数据进行批处理。作者对图像和视频数据集使用 5 个宽高比,比如 1024x576,576x1024;此外,也包含 5 个时长桶(4s-16s)。通过在文本描述中添加 FPS Token 来引入 FPS 控制,从而允许以不同的帧率对视频进行采样(16-32 FPS)。
4.3.2 训练
与 Emu Video 类似,作者的 30B 模型训练同样包含多个阶段,如下图 Table 3 所示:
- 文本->图像 Warmup 训练:在 O(1) B 图像数据集上训练 T2I,并且使用 256 px。
- 从头开始训练 T2I/V 模型非常慢,不如从 T2I 模型初始化训练;
- 相比使用 768 px 训练,256 px 允许使用更大的 Batch Size,同时在相同的训练预算下训练更多的数据。
- 训练了210K Step,迭代 1.94B 个样本(并不能确定数据集就是 1.94B,有采样策略)。
- 使用1536 个 GPU训练,Token 比较少,也就不用 TP 和 CP。
- 文本->图像/视频联合训练:接着联合训练文本->图像和文本->视频生成。为了联合训练,需要将来自 T2I 的空间位置嵌入(PE)加倍以适配可变比例,同时需要新增时序 PE 来最多支持 32 个 Latent Frame(32x8=256 个视频帧)。256 px T2I 的图像数据同样会用于这个阶段,和视频数据的比例为 1:10。整个训练分为两个阶段训练:
- 256 px T2I/V:Global Batch Size 1536,首先训练 123K 个 Step;然后将 GPU 数量从 3072 扩展到 6144,相应 Global Batch Size 也加倍变为 3072,继续训练 72K Step,验证损失可以快速下降。共训练 185K 个 Step(123K + 72K=195K?),迭代 395M(4+ Epoch)个视频样本。(PS:这里前期训练 3072 GPU,调度比较好的话可以完全放在一个 Cluster,是无收敛的,可以实现最优性能;6144 GPU 也只需 2 个 Cluster。)
- 768 px T2I/V:继续在 768 px 分辨率训练 74.5K 个 Step,迭代 73.8M 个样本。
如上图 Table 3 所示,在上述 768 px T2I/V 联合训练过程中其实经历了多个子阶段,主要不同就是学习率和相应 Batch Size 的改变。这是因为作者发现在训练到 10K 个 Step 时验证损失快速抖动并且不怎么下降。因此,在 19.6K 个 Step 时将学习率减半。同时后续当验证损失不怎么下降时就降低学习率,如下图所示:
4.4 微调
与之前的工作类似,作者同样在一个小的高质量视频数据集上微调预训练模型来提升生成视频的动作和美学质量。微调视频和描述是人工构建的,因此作者将这个阶段成为监督微调。在这个阶段作者训练了多个模型,然后通过模型平均方案将它们组合起来成为最终的模型。虽然模型本身可以生成高质量的图像,但是作者发现专门针对图像的后训练可以进一步提升质量,将在后续部分介绍。
微调数据集:目标是收集一组用于微调的高质量视频,这些视频具有良好的动作、真实度、美观度,同时具有广泛的概念和高质量的描述。为此,作者从大量视频开始,经过自动和人工过滤方案来获取视频,具体来说包含 4 个关键阶段:
- 建立一组候选视频,然后使用自动化的过滤方案从美学、动作、场景变化等方面进行严格过滤。此外,还使用物体检测模型删除带有小主体的视频。此阶段会产生几百万个视频,但概念分布很不均衡。
- 平衡视频中的概念,同样使用之前提到的 600 个人类动作和表情词库来实行文本 K-NN 方法,从视频候选池中检索每个概念的视频。为每个概念手动挑选一些视觉上吸引人的种子视频,并执行视觉 K-NN 以获得概念均衡的视频子集。
- 人工识别影级视频,自动化的手段往往无法高精度、高召回的捕获高质量微调视频数据。为此作者改为人工筛选。以此来确保包含各种角度光照、生动(但不饱和)的色彩、无杂乱、非异常动作、无相机抖动、无编辑效果和无叠加文本的视频。在此阶段,标注员还会将视频剪辑到所需的时长,并选择视频中最佳、最引入注目的片段。
- 人工视频描述,具体来说,标注员通过修正 LLaMA3-Video 生成描述中不正确的细节来确保包含某些关键视频细节。包括摄像头控制、人类表情、主体和背景信息、详细动作描述和光照信息。在此阶段,标注了另外 6 种相机移动和位置类型。微调视频数据时长在 10.6s-16s 之间,实际上 50% 视频时长 16s,剩余 50% 在 10.6s-16s 之间。
监督微调方案:SFT 中,使用预训练的 Checkpoint 初始化进行微调。使用了相对比较小的 Batch Size 和 64 个节点(512 H100 GPU)来训练模型,并使用 Cosine 学习率调度。与预训练类似,16s 视频使用 16FPS 训练,10.6s-16s 视频使用 24FPS 训练。经过训练,可以更好地支持 10s 和 16s 视频生成。
模型平均:作者实验表明,选择不同的微调数据集、超参数以及 Checkpoint 会显著影响模型效果,包括动作、一致性和相机控制。为了利用这些模型的不同优势,作者采用了模型平均方案。和 LLaMA 3 类似,对使用各个版本的微调数据、超参数和 Checkpoint 实验获得的模型进行平均。
4.5 推理
4.5.1 推理提示改写
推理时的文本提示可能和训练时有比较大的差异,比如写作风格,长度等,比如很多用户提示都少于 10 个单词,远小于训练时提示的平均长度。为了减小差异,作者利用 LLaMA3(推理改写模型,Rewrite Model) 将简短提示转换为详细描述。具体来说:
- 采用标准化的信息结构重新表述提示,确保视觉结构的一致性。
- 通过更易于理解和直接的术语替换复杂的词汇,从而提升提示的清晰度和可理解性。
- 作者观察到,对动作细节的过度详细描述会导致生成视频中引入伪影,因此要在描述丰富性和视觉保真度之间取得平衡。
为了提高 Rewrite Model 的计算效率,作者额外提出了一种蒸馏方案。具体来说,使用基座模型训练集中的详细提示说明和上下文学习示例,基于 LLaMA3-70B 模型构建提示改写教师模型,然后收集人机协同(Human-in-the-loop,HITL)微调数据。具体来说,是使用 LLaMA3 70B 提示改写模型对大规模 Prompt Pool 中的样本进行推理,并按照质量指南通过人工评估选择高质量的改写。最后在筛选出的 HITL 数据集上微调了一个 8B LLaMA3 模型,得到最终的改写模型。
4.5.2 提升推理效率
作者发现,与图像生成相比,视频生成额外引入了时间维度,减少视频生成中的推理步数比图像生成更有挑战,视频生成的动作质量等对推理步数更为敏感。比如,使用 250、500 和 1000 个线性步骤生成的视频在场景构图和动作质量方面有明显的差异。虽然可以采用蒸馏等方案加速,但是需要引入额外的训练,为此作者采用了一种比较简单的纯推理方案,只需几行代码就可以提速 20x。
作者发现,通过实施线性二次 t-schedule,可以仅用 50 个 Step 就获得接近 N Step 生成的质量。这种方法保留 N Step 线性 schedule 的前 25 个 Step,然后在后 25 个 Step 采用二次放置近似。这样做是因为作者观察到一些独特的现象,如下图 Figure 10 所示,作者统计了每个推理 Step 中每个 Transformer Block 输入和输出的平均变化。可以看出,在前期变化很快,然后很快就趋近于比较稳定,变化很小。实践中,作者使用 50 Step 的线性二次 schedule 模拟 N=250 的线性 Step 可以获得最佳结果。
4.6 评估
4.6.1 评估维度
作者从 3 个维度进行评估:文本对齐(Text-alignment)、视觉质量(Visual quality)以及真实度和美观度(realness、aesthetics)。如下图 Table 4 所示:
- Text-alignment:评估生成的视频与提供的提示的对齐程度。输入提示可以包括主体外观、动作、背景、相机移动、光照、样式和视觉文本等。人工评估员要密切关注这些方面。
- Visual Quality:与文本->图像生成不同,生成视频中的大部分感知质量源自于动作质量——一个特定于视频的维度。为此,文本->视频的质量评估中主要关注生成视频的一致性、自然度和足够数量的动作。为此从下面 4 个角度衡量:
- Frame consistency:帧一致性,评估生成内容的时间一致性。
- Motion completeness:动作完整性,衡量输出视频是否包含足够的动作。
- Motion naturalness:动作自然度,评估生成自然、逼真动作的能力,展示对现实实际物理学的理解。
- Overall quality:整体质量,根据上述 3 个维度整体评估,是一个整体的评价。
4.6.2 评估基准
作者构建了 Movie Gen Video Bench 评估基准,包含 1000 个提示,覆盖上述提到的各种因素。该基准比之前的基准大 3x。如下 Table 5 所示,该基准中主要包含 5 类概念:人类活动、动物、自然风景、物理、不常见物体或活动。
如下图 Figure 11 是相应的评估集分布:
4.7 结果
4.7.1 与之前工作对比
如下图 Table 6 所示,作者与之前的 SOTA 方案进行对比,包括 Runway Gen3,LumaLabs,OpenAI Sora 以及快手 Kling1.5。净胜率的计算是基于 Movie Gen Video 与其他模型在视频生成任务中的直接对比,范围 [-100%,100%],其中正数表示 Movie Gen Video 的胜率高于对比模型,负数则表示其表现不如对比模型。σ 表示每个维度下的标准差。可以看出:
- Movie Gen Video 明显优于 Runway Gen3 和 LumaLabs,略优于 OpenAI Sora 和 Kling1.5。
- 在 Motion Completeness 和 Text-alignment 上 Movie Gen Video 不如 Kling1.5,但 Realness 和 Aesthetics 上具有明显优势。
如下图 Figure 15 所示,作者对比了不同迭代阶段 Checkpoint 的评估结果以及对应的验证损失,可以看出,验证损失在持续下降,同时整体评估质量在越靠后的 Checkpoint 上表现越好,证明 Flow Matching 验证损失可以作为模型开发过程中人工评估的有效代理:
4.7.2 消融实验
作者使用 5B 参数量的 Movie Gen Video 模型来进行消融实验,其生成 4-8s 352x192 px 的视频。
- 模型包含 32 个 Transformer Block,Embedding 维度 3072,包含 24 个 Head。
- 两阶段训练,文本->图像和联合训练。使用 21M 个视频的小数据集,并使用 LLaMA3-8B 模型生成描述。 在 512 个 GPU 上训练。
如下图 Table 8 所示,作者进行了一系列对比实验,其中 Q 表示整体质量,A 表示文本对齐。实验包括包括:
- Flow Matching 训练目标和 Diffusion 训练目标
- 视频描述和图像描述
- 类 LLaMA 3 结构和 DiT 结构
如下图所示为上述类 LLaMA 3 结构和 DiT 结构的差异,其他都保持相同:
4.7.3 TAE 结果
如下图 Table 10 所示,作者进一步对比了本文 TAE 与 Frame-wise 的 AutoEncoder 的性能差异
- 视频维度:TAE 略差,但是能力也不错。
- 图像维度:TAE 表现更好,并且FID 具有明显优势。
4.7.4 TAE 消融实验
如下图 Table 11 所示,作者也对比了 TAE 中 2.5D Attention/Convolution(先 2D 空间执行,然后 1D 时序维执行)与 3D Attention/Convolution 的性能差异。3D 方案有更好的重建质量,但是提升不大,而 2.5D 方案在 FID 上有明显优势,因此采用 2.5D:
如下图 Table 12 所示,作者也对比了是否添加异常惩罚损失(OPL)的影响,可以看出,添加 OPL 后有比较明显的提升:
4.7.5 空间上采样结果
如下图 Figure 17 所示,经过空间上采样后清晰度和视觉质量有了明显提升:
4.8 文本 -> 图像生成
4.8.1 方法
对于文本->图像模型,目标是生成逼真的图像。作者使用 Movie Gen 模型作为初始化,将 TAE 替换为 Image AutoEncoder。然后,在文本->图像生成任务上训练模型,使其能根据文本描述生成图像,最终分辨率为 1024 px。在 Post Training 中,作者按照 [2309.15807] Emu: Enhancing Image Generation Models Using Photogenic Needles in a Haystack 中的方式构建了 O(1000) 张高质量图像,并训练了 6K Step,学习率 0.00001,Batch Size 64,并且 Warmup 2000 Step。
4.8.2 结果
如下图所示,作者利用 ELO 评级系统对 SOTA 模型进行对比,本文的模型取得了最优性能:
五、个性化视频
5.1 模型
如下图 Figure 20 所示,其主要的不同是将人脸图像经 Long-prompt MetaCLIP 的 Vision Encoder 提取 Vision Embedding,然后经过投影与文本 Embedding 拼接在一起作为 Condition 输入模型:
5.2 预训练
5.2.1 预训练数据
从原始的 T2V 视频数据中选择人类相关的子集,然后每 1s 提取一张人脸,并计算人脸相似性(ArcFace cosine similarity score 超过 0.5 认为是一个人)。然后挑选仅包含一个人的视频,得到 O(1) M 文本-视频数据对。
然后作者将其分为 “paired” 和 “cross-paired” 数据,区别是对应的 Reference 人脸是否来自对应的视频切片。作者发现,如果只使用 “paired” 数据,也就是视频切片中包含对应的 Reference 人脸,则会导致过拟合,也就是出现直接拷贝人脸的效果。
- Paird 数据:每个 Video 切片提取 5 帧作为 Reference,最终得到 O(10)M 训练样本。
- Cross-Paired 数据:从属于同一个人但是不同视频切片中选择 Reference,得到 O(10)K 真实样本,同时也用个性化人脸生成模型来生成数据,最终得到 O(1)M 合成训练样本。
5.2.2 预训练方案
作者发现直接训练生成长视频比较困难,因此也分为多个阶段训练,如下图 Figure 21 所示:
- Stage I:短视频训练,对应 64 帧,冻结 Vision Encoder,只训练 Transformer Backbone。
- Stage II:长视频训练,和第一阶段类似,不过帧数扩展到 128/192/256。
- Stage III:提升自然度,主要是调整学习率,并且也会训练 Vision Encoder。
5.3 监督微调
与 Movie Gen Video 的 Post Training 类似,作者也额外收集了一批高质量的微调数据,目的是生成具有良好动作质量的高度美观的视频。作者从 T2V 微调数据集开始,筛选包含只包含一个人的视频。然后人工选择具有不同人类动作的视频,确保数据集包含各种动作和行为。最终数据集包含 O(1000) 个高质量视频,其中 “paired” 和 “cross-paired” 的比例为 1:1。
5.4 评估&结果
如下图 Figure 22 所示为本文方案与 ID-Animator 生成效果的对比:
如下图 Table 12 所示,提出的 PT2V 模型明显优于之前的 ID-Animator 方案:
如下图 Table 14 和 Table 16 所示,训练 Vision Encoder 在所有指标上都有所提升,而 Cross-Paired 训练会导致 Identity 指标下降,但对改善生成视频的面部表情和自然动作至关重要:
如下图 Table 15 所示,PT2V 微调后所有指标上均优于 ID-Animator;PT2V 相比没有视觉 Condition 的 T2V 相比,整体质量更高,一致性也更好,但是动作完整性和文本对齐方面稍弱:
六、指令引导精确编辑
6.1 模型
鉴于监督视频编辑数据的稀缺性,训练模型来执行视频编辑容易出现训练和测试阶段的偏差,从而导致生成质量欠佳。为了应对这一挑战,作者引入了一种多阶段方案,以逐步减少这些差异。如下图 Figure 24 所示:
- 模型结构和初始化:
- 为了支持视频编辑,需要对现有文本->视频模型架构进行修改,包括增加额外的输入通道以实现输入视频的编辑,并添加任务嵌入向量以支持特定编辑任务的适配。
- 模型初始化时,保留预训练的文本->视频模型权重,并添加新的可学习参数以实现对参考图像的条件调节。
- 第一阶段:单帧视频编辑
- 通过在图像编辑数据集上训练,将图像编辑视为单帧视频编辑,以此作为视频编辑任务的起点。
- 采用多任务学习目标,交替进行图像编辑和文本->视频的生成任务,以此来训练模型使用编辑指令和视频输入。编辑任务和文本->视频任务的比例为 5:1。
- 由于图像编辑和视频生成在序列长度上的差异,通过交替处理这两种任务的批次来加速训练。
- 有趣的是,在初步实验中,作者发现在图像编辑训练期间直接使用第一帧的位置嵌入会导致在视频编辑上测试模型时输出完全失真。通过使用随机采样的临时位置嵌入作为图像的位置嵌入可以解决此问题,使用此目标训练模型 30 K Step。
- 第二阶段:多帧视频编辑
- 为了解决在第一阶段训练中产生的视频模糊问题,引入了两个新的合成任务,这些任务更贴近多帧视频编辑的实际需求。
- 第一个任务是 Animated Frame Editing:通过随机仿射增强将图像编辑样本动画化,创建合成视频编辑样本。
- 第二个任务是 Generative Instruction-Guided Video Segmentation:将视频分割视为视频编辑任务,要求模型根据给定的颜色标记视频中的特定对象。
- 模型在这些新数据集上进行微调,以减少训练和测试之间的差异。文本->视频、Segmentation、Animated 的比例为 1:1:3。
- 第三阶段:通过 BackTranslation 进行视频编辑
- 为了解决在第二阶段训练中仍然存在的问题,如新生成元素缺乏自然运动和过饱和现象,采用了 BackTranslation 技术来训练模型。
- 通过生成编辑后的示例,然后使用语言模型生成反向编辑指令,以此来训练模型在保持清晰视频的同时,根据编辑指令进行精确的视频编辑。
- 这一阶段的训练使用了真实的输出视频,并且通过 BackTranslation 技术构建了弱监督视频编辑数据集,进一步提高了视频编辑的质量。
6.2 评估
6.2.1 视频编辑基准测试
TGVE+ 基准测试:这是最近提出的基准测试,包括 76 个视频,每个视频附带 7 个编辑指令,覆盖多种编辑任务,如物体修改、背景修改等。但这些视频分辨率比较低,都是 480x480 px,时长比较短,10FPS 的 3.2s 视频或 16FPS 的 8s 视频。
Movie Gen Edit Bench 基准测试:为了评估新一代的视频编辑模型,作者提出了新的基准,包括不同分辨率、帧率、长度和宽高比的视频。初始数据来自 Segment-Anything V2 数据集的 51000 个视频,经过美观度和动作得分过滤,构建了验证集和测试集,验证集包含 64 个视频,测试集包含 128 个视频。此外,通过众包为每个视频和编辑操作编写编辑指令,以支持使用基于 CLIP 的图像编辑评估指标。作者额外为每个视频针对每个编辑任务构建了 1 个输入和输出描述,最终的基准包含 1152 个样本。(128+64)x6=1152。
6.2.2 视频编辑评估指标
主要评估模型编辑输入视频的能力,同时准确遵循提供的提示指令,并保留那些应保持不变的结构和元素。使用人工评估和自动化评估指标来评估。
- 自动化评估使用 ViCLIP 方向相似性(ViCLIPdir)和 ViCLIP 输出相似性(ViCLIPout)。
- 人工评估遵循 TGVE+ 的标准评估协议,评估者需要对输入视频、编辑指令和一对生成的视频进行评估,以确定哪个编辑视频能更好地反应给定的描述,保持原始输入的结构完整性以及在视觉上更有吸引力和美观度优越性。
6.3 结果
6.3.1 与之前工作对比
如下图 Table 17 所示,作者评估了 Movie Gen Edit 模型与多个视频编辑模型的性能,包括无需训练的方案(如 SDEdit)和需要训练的方案(如 InsV2V 和 EVE 等),可以看出:
- 在TGVE+ 基准上,Movie Gen Edit 在整体人类评估标准上比当前最先进的 EVE 模型更受偏好,其偏好率达到 74%。
- 在Movie Gen Edit Bench 基准上,Movie Gen Edit 同样优于其他基线模型,包括 Runway Gen3 V2V。
6.3.2 消融实验
第一阶段:如下图 Table 18 所示,作者对比了两种变体的影响,人工评估表明本文的模型在图像编辑任务上具有更好性能。
- 冻结文本 ->视频模型,训练 ControlNet
- 本文的多任务学习
第二阶段:如下图 Table 19 所示,评估了使用 Animated Frame Editing 相比 Animated Image Editing 的效果,人类评估员更喜欢 Animated Frame Editing 的结果:
第三阶段:如下图 Table 20 所示,对比使用 BackTranslation 方案与标准微调方案,人类评估员更喜欢 BackTranslation 方案的结果:
不同阶段对比:通过比较每个训练阶段的模型,作者发现每个后续阶段的模型都在人类评估中更受偏好,表明多阶段训练方法的有效性。
七、声音和音乐生成
7.1 模型
Movie Gen Audio 模型的目标是为视频切片和短片生成音轨(soundtrack),时间可能从几秒到几分钟不等。涉及的音轨包括环境声音、音效(Foley)和器乐(instrumental music),但是不包括语音或带人声的音乐。特别是,环境声音应与视觉幻觉相匹配,音效应在时间上与动作保持一致,并且对于视觉对象应该合理。
为了支持可变时长视频的音轨,作者构建了一个音频生成方案,即可以给定视频生成音频,也可以给定部分音频来扩展。如下图 Figure 27 所示为生成过程,其核心是有 Overlap 的分块生成:
如下图 Figure 28 所示为对应的 Movie Gen Audio 模型架构,其采用了 Flow Matching + DiT 的方案,其中黄色表示输入,蓝色表示预训练后冻结的部分,灰色表示没有可学习参数,绿色为可学习的模块:
7.2 数据
如下图所示为不同的数据类别:
如下图 Table 24 所示为对应的预训练数据集类别及数量:
如下图 Table 25 所示为微调数据集的分布:
7.3 评估&结果
如下图 Table 29 和 Table 30 所示,作者对比了本文 Movie Gen Audio 模型与以前 SOTA 模型,净胜率范围为 [-100%, 100%],正值表示 Movie Gen Audio 的质量更优。可以看出,Movie Gen Audio 几乎在所有任务上都获得更好的效果:
八、参考链接
- https://ai.meta.com/static-resource/movie-gen-research-paper
- https://ai.meta.com/blog/movie-gen-media-foundation-models-generative-ai-video/
- https://ai.meta.com/research/movie-gen/
- https://arxiv.org/abs/2112.10752
- https://arxiv.org/abs/2210.02747
- https://arxiv.org/abs/2212.09748
- https://arxiv.org/abs/2311.10709
- https://arxiv.org/abs/2107.10833
- https://arxiv.org/abs/2302.08113
- https://www.usenix.org/system/files/osdi24-choudhury.pdf
- https://docs.nvidia.com/megatron-core/developer-guide/latest/api-guide/context_parallel.html
- https://arxiv.org/abs/2311.10709
- https://arxiv.org/abs/2309.15807
本文转载自 AI闲谈,作者: AI闲谈