理解视频模型(一):Tokenization

---
title: "理解视频模型(一):Tokenization"
author: "Anirudha Majumdar (@Majumdar_Ani)"
source_url: "https://x.com/Majumdar_Ani/status/2067619531124506742"
published_at: "2026-06-18T14:44:45.000Z"
fetched_at: "2026-06-19T13:52:52Z"
updated_at: "2026-06-25T01:46:00Z"
language: "zh"
review_status: "draft"
---

![](https://pbs.twimg.com/media/HLDwJ_nWcAETvdo.jpg)

# 理解视频模型(一):Tokenization

这是我计划写的视频模型系列的第一篇。我的目标,是把自己对不同设计选择的理解夯实下来:tokenization、架构、数据、预训练、后训练、推理和评估。希望这些整理后的笔记,对其他人也有用。

### 为什么需要 tokenization?

生成式视频模型基于扩散框架(Sohl-Dickstein’15, Song ‘19, Ho ‘20),通常通过 flow matching(Albergo ‘22, Lipman ‘22, Liu ‘22)来实现。为了降低计算量、提升预测质量,扩散模型会在 latent space(潜在空间)里训练;这个空间压缩掉了低层感知细节(Rombach ‘21)。latent diffusion models 全程在这个压缩空间里工作,因此不用直接在高分辨率图像或视频数据上训练和推理。直观地说,把低层细节的重建交给另一个模型处理,可以让扩散模型专注于生成更高层的语义特征。

### Tokenization:输入和输出

视频 tokenizer 的作用,是提供扩散建模要使用的压缩 latent space。对视频模型来说,压缩有两个轴:空间和时间。因此,从高层看,一个视频 tokenizer 应该对原始视频数据做时空压缩,同时仍然保留从 latent space 重建出未压缩输出的能力。

![](https://pbs.twimg.com/media/HLDws4pXsAAkg3t.jpg)

**同时处理图像和视频**

我们希望有一个统一的 tokenizer,既能处理图像,也能处理视频。MAGVIT-v2(Yu ‘24)建议把 tokenizer 的输入组织成形状为 [1+T, H, W, 3] 的数组。因此,单张图像对应 T = 0。在这个设计下,形状为 [1+T, H, W, 3] 的输入,会被编码成形状为 [1+T', H', W', C] 的 latent representation,其中 T/T' 是时间压缩因子(通常为 4),H/H' = W/W' 是空间压缩因子。

**为什么不直接用 .mp4?**

抽象地说,视频 tokenization 和经典视频压缩方案(例如 VVC H.266;Bross ‘21)的目标是一样的。标准压缩方法当然也可以拿来当视频建模的 tokenizer,但当前最先进的神经网络 tokenizer,在压缩率和质量之间取得了更好的权衡;可以看 MAGVIT-v2 论文的图 6。那自然会有一个问题:既然如此,为什么视频压缩还没有被 neural tokenizers 接管?原因是计算成本。标准压缩方案可以在 CPU 上高效运行,这对它们的大规模使用场景至关重要;而 neural tokenizers 需要 GPU/TPU,才能高效实现。

### 通过 VAE 做 tokenization

今天的视频 tokenization 几乎完全基于变分自编码器(VAEs;Kingma ‘13)。最常用的 tokenizer 包括 WAN-VAE(WAN team ‘25)、Stable Diffusion VAE、COSMOS tokenizer(NVIDIA ‘25)和 MAGVIT-v2(Yu ‘24)。下面我会讨论不同 tokenization 方案里的几个关键设计选择。

**离散 vs. 连续**

第一个主要分叉,是连续 tokenizer 和离散 tokenizer。连续 tokenizer 会把一个视频编码成连续的 latent representation:  

ℰ : ℝ^(1+T×H×W×3) → ℝ^(1+T′×H′×W′×C)

这样就可以在这个紧凑的 latent space 里训练扩散模型;例如 WAN(WAN team ‘25)就是这样。

离散 tokenizer 由一个 encoder 和一个 quantizer 组成:

ℰ : ℝ^(1+T×H×W×3) → ℝ^(N×K),    𝒬 : ℝ^K → 𝒮  (finite codebook)

这里,encoder 会产生一个长度为 N 的 latent variable 序列,每个 latent variable 的维度是 K。随后,quantizer 会把序列里的每个 latent variable 映射成一个离散 token,这个 token 属于一个有限 codebook。为了把 tokens 解码回视频,离散 tokens 会先被 de-quantized,然后送入 decoder:

𝒟 : ℝ^(N×K) → ℝ^(1+T×H×W×3)

离散 tokenizer 基于 VQ-VAE(van den Oord ‘17)的各种变体。尤其是 MAGVIT-v2(Yu ‘24)提出了一种 VQ-VAE 变体,作者称之为 lookup-free quantization(LFQ)。LFQ 去掉了 VQ-VAE codebook 里的 embedding dimension,因此不需要再计算有限 codebook 中的最近点。VideoPoet(Kondratyuk ‘24)也使用 MAGVIT-v2 tokenizer。NVIDIA COSMOS tokenizer(NVIDIA ‘25)则先把视频变换成 wavelet representation,再用 FSQ(Mentzer ‘23)做 quantization。

和连续 tokenizer 相比,离散 tokenizer 让我们可以用语言建模架构来做视频生成。原则上,这意味着可以借用语言建模里的所有进展(例如架构改进、训练和推理优化等),同时也能为视频生成(videos out)和视频理解(videos in)提供统一表征。

### 理解压缩、重建质量和视频生成质量之间的关系

视频 tokenizer 做了多少压缩、重建质量如何、以及基于 tokenized representations 训练后生成的视频质量如何,这三者之间有一种微妙的关系。压缩和重建质量之间的权衡很直观:压缩率越高,就越难保留高保真重建所需的细节。

压缩和视频生成质量之间的关系就没那么直观了。你可能会以为,一开始压缩越多,视频建模越容易;但如果 representation 被压得太狠,视频质量又会下降。换句话说,压缩应该存在一个「甜区」。如下方 MAGVIT-v2 论文中的图所示,对于 VQ-VAE tokenizer 来说,情况确实如此。不过,MAGVIT-v2 也用 LFQ 证明:可以在增加 vocabulary size(也就是降低压缩)的同时,*同时*提升重建质量和生成质量(至少在图中考察的 vocabulary size 范围内是这样)。

![](https://pbs.twimg.com/media/HLD1EHSWoAAi01-.png)

更近期的工作(Yao ‘25)发现,把 tokenizer 的 features 对齐到预训练视觉基础模型,也可以提升生成质量和重建质量。

### 架构:因果 tokenization

最先进的视频 tokenizer,如今都已经收敛到*因果* tokenization 架构(WAN tokenizer、MAGVIT-v2、COSMOS):未来帧不会影响过去帧的 representation。以 NVIDIA COSMOS tokenizer(NVIDIA ‘25)为例,它先用 wavelet transformation 处理每四帧一组的帧组,然后再应用 causal convolution 和 attention layers。

![](https://pbs.twimg.com/media/HLD1PZCWcAA8mk5.jpg)

更近一些,COSMOS models 已经改用 WAN tokenizer(见 COSMOS3;NVIDIA ‘26),后者也采用了类似 MAGVIT-v2 的 causal architecture。

视频 tokenization 为什么要用 causal architecture,其实有很多理由,而且比我最初理解的更微妙。

**一个不能用来支持因果 tokenization 的理由。** 首先,为了理解这里的微妙之处,我们先看一个其实*不*需要因果 tokenization 的场景。假设你想训练一个 full-sequence diffusion model(也就是非自回归模型),而且它*只*会用于 text-to-video 模式(text in, videos out)。在这种情况下,非因果架构其实完全可以。事实上,让未来帧的 features 反过来影响过去帧,甚至可能有好处;比如某个东西在未来帧里变清楚了,这些信息也许能帮助提升过去帧的生成质量。

**I2V 或 V2V 生成。** 到 image-to-video(I2V)或 video-to-video(V2V)生成时,事情就更有意思了。在这里,causal encoding 和 causal decoding 都很方便。causal tokenizer 会把给定的图像/视频上下文 x 编码成 z,视频模型则生成未来的 encoded frames z'。decoder 接收 z 和 z',并重建未来帧 x'。要让非因果方案跑起来,就麻烦得多。比如,如果训练序列 (x, x') 通过 non-causal encoder 编码,那么过去帧 x 的 representation 会依赖未来帧 x' 的 representation。可是在推理时,我们看不到未来帧,因此也就无法为 conditioning frames x 计算出正确的 encoding。

**推理速度。** 对流式视频生成来说,causal tokenization 同样非常方便。一旦 z'(encoded future frames)生成出来,它们就可以作为 conditioning,用来继续生成更多帧,而不需要重新计算 representation。WAN tech report(WAN team ‘25)第 4.1.3 节进一步讨论了 causal tokenization 如何通过 feature caching 支持高效推理。

### 损失函数和训练 curriculum

视频 tokenizer 的训练分多个阶段进行。

**图像 tokenization。** 对 WAN 模型来说,第一阶段只训练图像 VAE(T = 0)。这会提供一个 spatial prior,对训练完整的视频 tokenizer 很有帮助。

**低分辨率训练。** 第二阶段会把图像 VAE「膨胀」成带有时间组件的模型,然后在低分辨率(128 x 128)帧和短视频序列(5 秒)上微调。在这一阶段,训练会结合 L1 reconstruction loss、VAE KL prior loss,以及 LPIPS(用于鼓励感知相似性;Zhang ‘18)。

**高分辨率训练。** 第三阶段会在更高质量的视频上继续微调 tokenizer,这些视频有不同的分辨率和长度。在这一阶段,会按照 VQ-GAN(Esser ‘21)引入 adversarial loss。

### 新兴方法:自适应、层级式和多视角 tokenization

视频 tokenization 是一个非常活跃的研究方向。下面我会讨论几条令人兴奋的工作线。

**自适应 tokenization。** 标准视频 tokenizer 会把 tokens 均匀分配给视频的不同部分。但视频里有些部分明显比其他部分复杂得多。最近一条关于*自适应 tokenization*的工作线,试图给视频中「更有意思」的部分分配更多 tokens。ElasticTok(Yan ‘24)通过在训练时随机 mask 掉一定数量的 tokens 来做到这一点,迫使剩下的 tokens 去表示视频里的信息。InfoTok(Ye ‘25)则使用一个固定压缩率的 tokenizer(例如他们实验里的 COSMOS tokenizer),通过预测 reconstruction loss 来判断某个视频需要多少 tokens。这个 token budget 随后会交给一个 adaptive compressor,后者会删除信息量最低的 tokens。

**面向长时域生成的 tokenization。** 另一条新兴工作线是*层级式* tokenization。MilliVid(Chandratreya ‘26)把视频编码成一个 token 层级,用来捕捉从粗到细的不同层级信息。这能提升长时域视频生成的一致性和质量。FramePack(Zhang ‘25)的动机也类似,都是面向长时域生成;不过它会给「更相关」的过去帧分配更多 tokens,例如根据时间距离或 feature similarity 来判断相关性。

**多视角 tokenization。** SceneTok(Asim ‘26)会把多视角场景观测编码成 tokens。这些 tokens 作为场景的 diffusable representations,可以用于从新视角生成视频。

### 我们真的需要视频 tokenization 吗?

让我们回到文章开头关于视频 tokenization 的论点。tokenizer 提供一种紧凑的 latent representation,让扩散建模在计算和数据层面都更高效。但 tokenizer 也会施加一个硬瓶颈:解码后的视频,只能捕捉 latent space 能够表示的东西。如果 tokenizer 丢掉了某些信息,生成视频里就会出现扩散模型无法消除的 artifacts。

为什么要把精细细节的表示交给 tokenizer?为什么不能让扩散模型自己负责一切?带着这个动机,我们正在看到一条绕过 tokenizer、直接在 raw image space 中工作的研究线(例如 JiT 和 AsymFlow)。这些方法已经开始具备和 latent diffusion models 竞争的能力。

我个人的判断是,tokenizers 是短期拐杖。最终,我们会找到办法,把扩散模型从冻结 tokenizer 的瓶颈里解放出来。