Self Forcing: Bridging the Train-Test Gap in Autoregressive Video Diffusion

Authors: Xun Huang, Zhengqi Li, Guande He, Mingyuan Zhou, Eli Shechtman Affiliations: Adobe Research, The University of Texas at Austin Project Page: self-forcing.github.io Year: 2025

1. Motivation (研究动机)

Self Forcing 讨论的是自回归视频扩散模型里的 train-test gap:训练时看到的上下文和推理时看到的上下文不一致,导致 exposure bias 和误差累积。

当前视频扩散模型主要有两种架构范式:

  • 双向扩散模型(Bidirectional DiT):如 Wan2.1、CogVideoX,一次性对所有帧去噪,使用双向注意力。优点是质量高,缺点是无法流式生成,不支持实时交互。
  • 自回归扩散模型(AR Diffusion):逐帧/逐块生成,天然支持因果结构和流式输出,适用于实时交互场景(游戏、直播、世界模型)。

AR 扩散模型的训练方法主要有两种,但都存在 exposure bias:

训练范式训练时的上下文推理时的上下文分布偏移
Teacher Forcing (TF)干净的 ground-truth 帧模型自己生成的(不完美)帧训练见的是真实帧,推理见的是自生成帧
Diffusion Forcing (DF)带不同噪声水平的上下文帧模型自己生成的帧训练时上下文帧来自数据分布加噪,推理时来自模型分布

这种分布偏移会导致 误差累积:随着自回归展开,每一帧的小误差逐渐放大,后续帧质量不断退化,常见现象包括颜色饱和度递增、过度锐化。

2. Idea (核心思想)

Self Forcing 的核心思想很直接:训练时模拟推理过程。不用 ground-truth 帧作上下文,而是在训练中就进行自回归展开(self-rollout),让模型在自己生成的帧上条件化生成下一帧。这样:

  1. 训练分布 = 推理分布,从根本上消除 exposure bias。
  2. 可以使用 视频级别的整体损失(而非逐帧损失),直接优化生成视频的全局质量。
  3. 模型被迫学会从自己的不完美输出中恢复,天然具备鲁棒性。

灵感来源:早期 RNN 序列建模中的 scheduled sampling / professor forcing 技术。

3. Method (方法)

3.1 自回归视频扩散模型的形式化

给定 帧视频 ,AR 扩散模型通过链式分解建模联合分布:

每个条件分布 通过扩散过程实现:从高斯噪声出发,逐步去噪生成帧 ,同时以之前的帧 为条件。

架构选择:基于 Transformer 的因果 DiT(Causal DiT),在压缩的 3D VAE 隐空间中操作,通过因果注意力实现链式分解。

3.2 Self Forcing 训练:通过自展开进行后训练

Figure 1 解读:这张图对应 Self Forcing 的整体训练思路——训练阶段直接按推理方式做自回归展开,再用分布匹配损失优化最终生成的视频。

核心流程:在训练时按推理时的方式生成视频,然后用分布匹配损失优化。

关键技术点 1:Few-Step 扩散模型

标准多步扩散模型(如 50 步 DDPM)进行自回归展开 + 反向传播在计算上不可行。因此使用 few-step 扩散模型(4 步),大幅减少计算图深度。

去噪步序列 ,每步去噪:

然后通过前向过程注入噪声到下一噪声水平:

关键技术点 2:随机梯度截断(Stochastic Gradient Truncation)

即使用 few-step 模型,朴素地对整个自回归过程反向传播仍然内存消耗巨大。解决方案:

  1. 随机采样去噪步:对每个样本序列,随机采样一个去噪步 ,只用第 步的去噪输出作为最终输出。
  2. 只在最后一步计算梯度:只对选中的去噪步开启梯度,其余步骤用 torch.no_grad()
  3. KV cache 梯度截断:将之前帧的梯度通过 KV cache 的流动截断,不反传到更早的帧。

这种随机采样确保所有去噪步都能接收到监督信号(期望上等价于完整反传)。

关键技术点 3:训练时使用 KV Caching

Figure 2 解读:这张图展示了 Self Forcing 训练时的因果注意力组织方式,核心区别是它像推理一样逐帧输入,并用 KV caching 维护历史状态。

这是 Self Forcing 区别于 TF/DF 的关键架构差异:

  • TF/DF:将整个视频的所有帧并行输入 Transformer,使用特殊的注意力掩码强制因果依赖。
  • Self Forcing:像推理一样逐帧/逐块输入,使用 KV caching 存储之前帧的注意力状态。

好处:

  • 训练过程精确镜像推理过程。
  • 可以使用标准的全注意力(FlashAttention-3),无需自定义掩码。
  • 每帧/块只需处理当前 token,无需重复计算历史帧。

3.3 整体分布匹配损失(Holistic Distribution Matching Loss)

Self Forcing 的自回归展开直接生成推理时分布的样本,使得可以使用 视频级别 的分布匹配损失:

对比 TF/DF 只能做逐帧的损失,Self Forcing 优化的是整个视频序列的联合分布。

论文考察了三种分布匹配框架:

方法散度度量核心机制是否需要数据
DMD (Distribution Matching Distillation)反向 KL 散度通过 score 差异引导梯度否(data-free)
SiD (Score Identity Distillation)Fisher 散度匹配 score function否(data-free)
GANJensen-Shannon 散度判别器区分真假视频是(需要视频数据)

注意:DMD 和 SiD 方案是 data-free 的——只需要文本提示,不需要视频训练数据。这意味着可以将预训练的双向视频扩散模型直接转换为自回归模型。

3.4 Rolling KV Cache:无限长视频生成

Figure 3 解读:这张图说明 Rolling KV Cache 如何把长视频外推的复杂度降到线性,同时避免窗口重算带来的额外开销。

自回归模型的核心优势是可以生成无限长视频(通过滑动窗口)。但现有方法效率低下:

方案计算复杂度问题
双向滑动窗口不支持 KV cache,每帧需重新计算所有注意力
因果滑动窗口 + KV 重计算窗口移动时需重新计算重叠帧的 KV cache
Rolling KV Cache(本文)固定大小 KV cache,FIFO 淘汰最旧条目

Rolling KV Cache 维护一个固定大小为 帧的 KV cache。生成新帧时:

  1. 检查 KV cache 是否已满。
  2. 若满,淘汰最旧的 KV 条目。
  3. 添加新帧的 KV 嵌入。

分布偏移问题:朴素实现会导致闪烁,因为第一帧(图像 latent)有特殊统计性质,当它从 KV cache 中淘汰后模型无法适应。解决方案:训练时限制最后一块不关注第一块,模拟 rolling cache 场景。

4. Experimental Setup (实验设置)

基于 Wan2.1-T2V-1.3B,分辨率 ,16 FPS,5 秒视频。

4.1 对比模型与评价设置

对比对象包括 Wan2.1、CausVid、SkyReels-V2,以及 Self Forcing 的 chunk-wise 和 frame-wise 两种设置。主要指标为:

  • 吞吐量(FPS)
  • 首帧延迟(s)
  • VBench 总分
  • 质量分
  • 语义分

4.2 用户偏好研究

Figure 4 解读:这张图是用户偏好实验的汇总,说明 Self Forcing 在与多个基线对比时获得了多数选择。

Self Forcing 在与所有基线的对比中均获得多数偏好:vs CausVid 66.1%,vs Wan2.1 62.7%,vs SkyReels-V2 57.9%,vs MAGI-1 54.2%。

4.3 训练效率评估

Figure 5 解读:这张图展示了 Self Forcing 与 TF/DF 在训练效率上的对比,重点是它没有因为顺序展开而显著变慢。

训练效率对比关注每迭代时间和相同 wall-clock 时间下的质量收敛。

5. Experimental Results (实验结果)

5.1 主要性能对比

模型参数量吞吐量(FPS)首帧延迟(s)VBench 总分质量分语义分
Wan2.11.3B0.7810384.2685.3080.09
CausVid1.3B17.00.6981.2084.0574.53
SkyReels-V21.3B0.4911282.6784.7074.53
Self Forcing (chunk-wise)1.3B17.00.6984.3185.0781.28
Self Forcing (frame-wise)1.3B8.90.4584.2685.2580.30

关键发现:

  • Self Forcing 在 VBench 总分上超越所有对比方法,包括慢 150 倍的 Wan2.1。
  • 实时吞吐(17 FPS),亚秒级延迟(0.45–0.69s)。
  • Data-free 训练(DMD/SiD 方案不需要视频数据)。

5.2 消融实验

Chunk-wise AR总分质量分语义分
Diffusion Forcing (50 步)82.9583.6680.09
Teacher Forcing (50 步)83.5884.3480.52
DF + DMD (4 步)82.7683.4979.85
TF + DMD (4 步)82.3282.7380.67
Self Forcing + DMD84.3185.0781.28
Self Forcing + SiD84.0785.5278.24
Self Forcing + GAN83.8885.0679.16

关键发现:

  • Self Forcing 在所有分布匹配目标下都显著优于 TF/DF 基线。
  • 从 chunk-wise 切换到 frame-wise AR 时,TF/DF 基线质量显著下降(误差累积加剧),Self Forcing 保持稳定。

5.3 实验图示:基线、注意力和滚动缓存

Figure 6 解读:这张图对比了 Teacher Forcing、Diffusion Forcing 与 Self Forcing 三种训练范式,核心是在训练时是否使用模型自生成的上下文。

这张图对比了三种自回归视频扩散模型的训练方式:

  • (a) Teacher Forcing:模型在干净的 ground-truth 上下文帧上训练去噪。条件分布的乘积 不等于联合分布 ,因为推理时用的是模型生成帧而非真实帧。
  • (b) Diffusion Forcing:上下文帧是加了不同噪声的版本。同样存在分布偏移:训练时的噪声上下文来自数据分布,推理时来自模型分布。
  • (c) Self Forcing(本文):训练时就用模型自生成的帧作上下文,条件分布的乘积恰好等于联合分布。分布匹配损失直接作用于最终输出视频。

Figure 7 解读:这张图说明 TF/DF 的并行掩码训练与 Self Forcing 的逐帧 KV cache 推理在结构上的差异。

展示了一个 3 帧视频、每帧 2 个 token 的例子:

  • (a) Teacher Forcing:所有帧并行输入,使用 block sparse 注意力掩码实现因果依赖。Q 轴是所有帧所有去噪步,K 轴区分 clean KV 和 noisy KV。
  • (b) Diffusion Forcing:类似 TF,但上下文帧有不同噪声水平。
  • (c) Self Forcing/AR 推理:逐帧处理,空间去噪在帧内完成,时间 AR 展开通过 KV caching 实现。这正是推理时的流程——训练时完全复制。

Figure 8 解读:这张图对比三种长视频生成策略,强调 Rolling KV Cache 的线性复杂度和无需重计算的优势。

三种滑动窗口长视频生成策略:

  • (a) 双向滑动窗口,每个窗口完全重新计算。
  • (b) 因果滑动窗口 + KV 重计算,窗口移动时需要重新计算重叠帧的 KV。
  • (c) 因果滑动窗口 + Rolling KV Cache(本文),FIFO 淘汰最旧 KV,无需重计算。