Rolling Forcing: Autoregressive Long Video Diffusion in Real Time¶
会议: ICLR2026
OpenReview: https://openreview.net/forum?id=IAyzXjbfwo
代码: 待确认
领域: 视频生成 / 长视频扩散 / 实时流式生成
关键词: 长视频生成、流式视频扩散、自回归生成、误差累积、attention sink
一句话总结¶
Rolling Forcing 把逐帧自回归视频扩散改成可滚动的多帧联合去噪,并用初始帧 attention sink 锚住全局外观,从而在单卡上以接近 16 FPS 实时生成多分钟长视频,同时显著压低长期误差累积。
研究背景与动机¶
领域现状:现代视频扩散模型已经能生成质量很高的短片段,但主流的双向视频扩散通常一次性看完整个时间窗口,适合离线生成,不适合交互式 world model、神经游戏引擎或 XR 场景里的实时流式输出。实时应用要求视频帧按时间顺序不断吐出,用户或下游系统看到一帧就能立刻消费这一帧,不能等整段视频都采样完再统一展示。
现有痛点:为了满足流式约束,CausVid、Self Forcing 这类方法会把双向视频扩散蒸馏成快速的因果自回归生成器。问题是,严格因果的逐帧预测会让每一帧都依赖前面模型自己生成的帧,前面的小瑕疵会被下一帧继续继承,几十秒以后就变成明显的颜色漂移、背景变形、主体崩坏或运动不自然。另一类长视频方法会先规划远处关键帧再补中间帧,但这种乱序生成破坏了流式系统必须遵守的顺序输出。
核心矛盾:实时流式视频生成同时要求“顺序输出”和“长期稳定”。如果完全按因果链逐帧生成,顺序性强但误差会沿时间传播;如果允许未来帧参与规划,长期一致性更好,却不能保证每一帧按时发出。历史帧加噪能缓解训练和推理的分布差异,但会牺牲干净历史参考,导致局部连贯性变差。
本文目标:作者希望在不改变 Wan2.1 这类基础视频扩散模型架构的前提下,把短窗口视频扩散蒸馏成一个可实时运行的自回归长视频生成器。具体目标包括:单卡实时吞吐、亚秒级稳定延迟、多分钟生成、短期运动连续、长期色调和背景不漂移,以及训练阶段不需要昂贵的长视频数据。
切入角度:论文的观察是,严格逐帧去噪把所有局部错误都提前“定稿”了;如果当前帧和接下来若干帧能在一个小窗口里共同去噪,局部错误就有机会在输出前被邻近帧互相修正。同时,视频最开头的若干帧天然包含主体、场景、色调和白平衡等全局信息,如果能像流式 LLM 的 attention sink 一样长期保留它们,后续帧就有一个稳定锚点。
核心 idea:用“滚动窗口联合去噪 + 初始帧 attention sink + 非重叠窗口蒸馏”替代严格逐帧自回归去噪,在保持顺序输出和实时延迟的同时抑制长视频误差累积。
方法详解¶
整体框架¶
Rolling Forcing 仍然是自回归视频扩散:系统每次向前滚动一个时间步,输出当前干净帧,并把新的高噪声帧追加到窗口末尾。不同之处在于,它不是只对一个当前帧去噪,而是在长度为 \(T\) 的滚动去噪窗口里同时处理多个连续帧;这些帧拥有从低到高递增的噪声等级,并在窗口内部使用双向注意力互相修正。
整体可以理解成三层记忆加一个滚动窗口:最近的干净帧 KV cache 提供短期时间上下文,初始帧 KV cache 作为长期全局锚点,当前窗口负责把一串不同噪声等级的帧联合往更干净的方向推一步。训练时,作者用 DMD 蒸馏把 Wan2.1-T2V-1.3B 变成 5 步快速生成器,并只对一部分互不重叠的滚动窗口回传梯度,让扩大的窗口能在 80G GPU 上训练。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["文本提示 + 已生成历史"] --> B["滚动窗口联合去噪<br/>多帧递增噪声"]
B --> C["初始帧 attention sink<br/>全局外观锚点"]
C --> D["非重叠窗口蒸馏<br/>低显存训练"]
D --> E["实时顺序输出<br/>多分钟视频流"]
推理时,第 \(i\) 个滚动窗口包含 \(x_i,\ldots,x_{i+T-1}\)。窗口里的帧带有 \(t_1,\ldots,t_T\) 这些递增噪声等级,模型一次前向预测所有帧的干净版本,再通过前向扩散过程 \(\Psi\) 把它们推到下一组更低噪声等级。窗口最前面的帧达到 \(t_0=0\) 后被输出,剩余帧继续留在窗口中,末尾追加一个新的高斯噪声帧。
关键设计¶
1. 滚动窗口联合去噪:让当前帧在定稿前被邻近未来帧修正
Self Forcing 的严格逐帧去噪可以写成 \(x^i_{t_{j-1}}=\Psi(G_\theta(x^i_{t_j},t_j,x^{<i}_0),t_{j-1})\),当前帧只能看干净历史,不能和正在生成的邻近帧互相调整。这样一来,前一帧的噪声、伪影或颜色偏差会成为后一帧的条件,误差沿链条传播,很难在后面自然消失。
Rolling Forcing 把单帧去噪扩展成窗口去噪,核心分布写成 \(p_\theta(x^{i:i+T-1}_{t_{0:T-1}}\mid x^{i:i+T-1}_{t_{1:T}},x^{<i}_0)\)。窗口内部的连续帧使用双向注意力,且噪声等级沿时间递增:靠前帧更接近输出,靠后帧还更噪。每次滚动只输出最前面的干净帧,其余帧保留为下一轮的中间状态。这个安排既没有打破顺序输出,又让当前帧在输出前接受后续短期运动趋势的约束,因此比单帧定稿更不容易把局部错误固化进历史。
窗口长度原则上等于去噪步数 \(T\)。普通视频扩散常有几十步,窗口会太大;论文通过 DMD few-step distillation 把 \(T\) 降到 5,并把每个 chunk 设为 3 个 latent frames,所以实际滚动窗口是 15 个 latent frames。这是实时性的关键:窗口足够长,可以互相修正;窗口又足够短,单卡可以在稳定阶段达到 15.79 FPS 和 0.76 秒延迟。
2. 初始帧 attention sink:用开头几帧锁住长期色调和场景身份
仅保留最近历史可以维护短期连贯,但长视频里很多漂移不是局部运动问题,而是全局属性慢慢偏掉:曝光、色调、背景布局、主体身份都会在几十秒后发生变化。Rolling Forcing 因此把初始 \(L_{glo}\) 帧的 KV 状态常驻为 global context,把最近 \(L_{tem}\) 帧的 KV 状态作为 temporal context,并让 \(L_{tem}+L_{glo}+L_{win}=L_{bidirectional}\),即总注意力窗口仍匹配教师模型原本能处理的长度。
这个 attention sink 不是简单地把第一帧一直塞进缓存。Wan2.1 这类 DiT 使用 RoPE,相对位置偏移如果随视频长度不断增大,会超过训练时见过的范围,引发画面跳回初始帧、闪烁或运动异常。作者的做法是缓存 global context 的 key states 时先不施加 RoPE;到每次生成时,再把它们动态放到 temporal context 前面的位置 \(i-L_{tem}-L_{glo}:i-L_{tem}-1\)。这样初始帧在内容上仍是全局锚点,在位置编码上却总是像“刚好位于最近历史之前”的上下文,避免 RoPE offset 爆掉。
附录的动态 RoPE 分析说明了这个细节的重要性:固定在 0 到 \(L_{glo}-1\) 会造成强烈 jumping artifact;和 temporal context 重叠会产生闪烁;放进 denoising window 会让输出趋于静态;放到窗口之后会诱导不自然运动。最终采用的位置策略本质上是在“保留全局内容”和“维持训练内相对位置”之间做了一个很精确的工程折中。
3. 非重叠窗口蒸馏:让扩展窗口能训练,同时继续暴露给自生成历史
Rolling Forcing 训练仍使用 DMD loss,把学生生成分布和教师数据分布对齐。直接问题是:滚动窗口一次预测 \(T\) 个帧,如果对每个起点窗口都回传梯度,query size 和梯度显存都会变成 Self Forcing 的约 \(T\) 倍;论文估计若完全去掉子集梯度策略,显存可能从 80G 级别膨胀到约 400G,几乎不可训练。
作者随机采样一个偏移 \(j\sim Uniform\{0,\ldots,T-1\}\),只对满足 \(i\equiv j\pmod T\) 的窗口开启梯度。这些窗口互不重叠,但合在一起仍覆盖完整视频,因此每轮训练只需要约 \(\lceil N/T\rceil\) 个带梯度前向。更重要的是,训练时输入窗口和历史帧都来自模型自己一路滚动生成的结果,而不是完全干净的 ground truth 历史,这延续了 Self Forcing 缓解 exposure bias 的优点。
单独使用 Rolling Forcing 训练也会带来一个新问题:DMD 所看到的视频由不同噪声等级的窗口输出拼接而成,不同位置的清晰度和运动状态可能不自然。论文因此采用混合训练策略,以 50% 概率使用 Self Forcing 目标、50% 概率使用 Rolling Forcing 目标。Self Forcing 分支像一个运动自然性正则项,帮助模型保持合理相机运动;Rolling Forcing 分支则让模型学会在扩展窗口里联合去噪和控制长期漂移。
一个完整示例¶
假设系统要根据提示词“一个长板手沿山路下坡并穿过树林”实时生成 2 分钟视频。开始时,模型先初始化前 \(T-1\) 个中间噪声状态,并生成开头若干帧;这些初始帧的 KV 被保存为 global context,记录了人物、道路、光照和画面风格。
到了第 40 秒,当前窗口可能包含 5 个去噪阶段的 chunk:最前面的 chunk 已经接近干净,马上要输出;后面的 chunk 仍带有更高噪声,但已经粗略包含接下来运动方向。Rolling Forcing 一次前向让这几个 chunk 互相看见:如果最前帧的滑板姿态和后面运动趋势不一致,窗口内部注意力可以在输出前修正它;如果画面色温开始偏移,global context 的初始帧 KV 会提供早期外观锚点;如果最近几帧出现连续转弯,temporal context 会维持短期运动惯性。
前向结束后,系统只把窗口最前面的干净 chunk 发给用户显示,剩余 chunk 通过 \(\Psi\) 调整到下一轮所需噪声等级,末尾再追加一个纯高斯噪声 chunk。于是输出仍是一帧接一帧的实时视频流,但每个被显示的帧都已经在一个小的未来局部窗口中被共同修正过。
损失函数 / 训练策略¶
论文采用 Wan2.1-T2V-1.3B 作为基础模型,先用 causal attention masking 和 16k ODE solution pairs 做初始化,再进行 3,000 步 Rolling Forcing 训练。训练 prompts 来自过滤并由 LLM 扩展的 VidProM;生成分辨率为 832 × 480,帧率 16 FPS,基础视频长度 5 秒。
训练目标沿用 DMD。直观地说,DMD 用教师数据分布的 score \(s_{data}\) 和学生生成分布的 score \(s_{gen}\) 之差来近似反向 KL 的梯度,使学生少步生成结果接近教师模型的平滑数据分布。论文中的梯度形式为 \(\nabla_\theta L_{DMD}\approx-E_t\int(s_{data}-s_{gen})\frac{dG_\theta(\epsilon)}{d\theta}d\epsilon\);这里关键不是公式本身,而是它不需要真实视频标注,可以让学生在自生成历史条件下训练。
具体超参上,作者设置 \(T=5\),每个 chunk 含 3 个 latent frames,训练 temporal window 为 27 个 latent frames,batch size 为 8。生成器 \(G_\theta\) 使用 AdamW,学习率 \(1.5\times10^{-6}\);fake score \(s_{gen}\) 学习率 \(4.0\times10^{-7}\);每 5 步 fake score 更新后更新一次生成器。推理阶段只使用 Rolling Forcing 范式,不再混合 Self Forcing。
实验关键数据¶
主实验¶
论文在 200 个随机采样的 MovieGen prompts 上评测 30 秒视频,统一使用 16 FPS、832 × 480 分辨率。指标来自 VBench,包括 temporal flickering、subject consistency、background consistency、motion smoothness、aesthetic quality、imaging quality;同时用首尾 5 秒 imaging quality 的绝对差 \(\Delta Quality_{Drift}\) 衡量误差累积。
| 方法 | 参数量 | 吞吐 FPS ↑ | 延迟 s ↓ | Subject ↑ | Background ↑ | Imaging ↑ | \(\Delta Quality_{Drift}\) ↓ |
|---|---|---|---|---|---|---|---|
| FramePack | 13B | 0.92 | 65 | 91.65 | 93.55 | 65.20 | 3.45 |
| CausVid | 1.3B | 15.38 | 0.78 | 87.99 | 89.99 | 66.38 | 2.18 |
| Self Forcing | 1.3B | 15.38 | 0.78 | 86.48 | 90.29 | 68.68 | 1.66 |
| Rolling Forcing | 1.3B | 15.79 | 0.76 | 92.80 | 93.71 | 70.75 | 0.01 |
30 秒主表里,Rolling Forcing 的优势很集中:吞吐和延迟略优于同规模 distilled causal baseline,但更关键的是漂移指标几乎归零。它的 subject consistency、background consistency 和 imaging quality 也同时更高,说明不是靠牺牲画质来换稳定,而是在长期一致性和单帧质量上都有收益。
论文还补充了 2 分钟长视频评测,更贴近“长视频流”的真实目标。
| 方法 | Temp. ↑ | Subj. ↑ | Back. ↑ | Aes. ↑ | Img. ↑ | Dyn. ↑ | \(\Delta Quality_{Drift}\) ↓ |
|---|---|---|---|---|---|---|---|
| CausVid | 96.67 | 84.69 | 89.53 | 62.16 | 63.62 | 52.08 | 3.35 |
| Self Forcing | 97.44 | 71.95 | 88.73 | 50.66 | 60.03 | 51.02 | 14.4 |
| w/o RF training | 96.87 | 84.38 | 91.93 | 58.61 | 66.55 | 56.75 | 1.39 |
| Rolling Forcing | 96.90 | 91.47 | 95.29 | 65.21 | 68.96 | 57.14 | 0.49 |
2 分钟结果里,Self Forcing 的 drift 放大到 14.4,说明严格因果链在更长时间上确实会崩得更明显;Rolling Forcing 仍保持 0.49 的 drift,并在 subject、background、aesthetic、imaging 和 dynamic degree 上取得最好结果。
消融实验¶
| 配置 | Temporal ↑ | Subject ↑ | Background ↑ | Motion ↑ | Aesthetic ↑ | Imaging ↑ | \(\Delta Quality_{Drift}\) ↓ | 说明 |
|---|---|---|---|---|---|---|---|---|
| w/o RF inference | 95.45 | 86.01 | 89.94 | 97.36 | 57.59 | 65.19 | 5.53 | 推理不用滚动窗口,长期漂移明显变大 |
| w/o RF training | 95.91 | 87.50 | 90.86 | 98.05 | 60.41 | 69.24 | 0.89 | 训练和推理都回到逐帧范式,稳定性和一致性下降 |
| w/o SF training | 90.83 | 83.27 | 88.14 | 95.63 | 55.30 | 62.00 | 1.62 | 去掉混合训练里的 SF 正则后,相机运动和整体质量变差 |
| w/o attention sink | 97.53 | 83.22 | 87.99 | 98.56 | 58.99 | 67.30 | 4.63 | 没有初始帧全局锚点,主体和背景一致性大幅下降 |
| Ours full | 97.61 | 92.80 | 93.71 | 98.70 | 62.39 | 70.75 | 0.01 | 三个设计合用时质量和漂移控制最佳 |
关键发现¶
- 滚动窗口不只是训练 trick,也是推理时抑制漂移的核心机制;w/o RF inference 的漂移从 0.01 变成 5.53,是消融里最直接的失败模式之一。
- attention sink 对长期主体和背景稳定非常关键;去掉它后 temporal flickering 仍高,但 subject consistency 从 92.80 掉到 83.22,说明短期平滑不等于长期身份一致。
- 混合训练里的 Self Forcing 目标主要稳定自然运动;只用 Rolling Forcing 训练会导致 temporal、motion、aesthetic 和 imaging 全面下降。
- 附录 full VBench 显示,Rolling Forcing 在 30 秒 946 prompts 的质量总分为 84.08,高于 CausVid 的 80.89 和 Self Forcing 的 81.39;语义总分 69.78 也略高于 Self Forcing 的 69.17。
- 人类偏好实验也支持定量结论:在误差累积控制和总体质量两个维度,Rolling Forcing 得票都明显高于对比方法。
亮点与洞察¶
- 把“未来信息”压缩进仍可流式的局部窗口:论文没有用规划式长视频生成那种先生成远处关键帧的方案,而是让当前帧只和一个很短的滚动窗口内未来中间状态交互。这种未来信息很弱,却足以修正局部运动和外观错误,同时不破坏顺序输出。
- attention sink 从语言流式推理迁移到视频生成很自然:视频开头几帧像 prompt prefix 一样承载全局身份信息,长期保留它们的 KV 比反复重算长历史更便宜。真正巧妙的是动态 RoPE,否则这个看似简单的缓存会因为相对位置外推而制造新的伪影。
- 训练策略服务于工程可行性,而不是单纯追求形式完整:非重叠窗口只对部分窗口回传梯度,理论上引入训练和推理差异,但换来了可训练的显存规模。实验上这个折中很有效,说明长视频生成里“训练覆盖完整轨迹”有时比“每个窗口都精确监督”更重要。
- 实时长视频的评价必须看漂移而不只是平均质量:Self Forcing 的单帧 imaging quality 并不低,但 2 分钟 drift 非常高。论文用首尾 5 秒质量差和分段 CLIP score 把长期退化显式量化,这对后续实时世界模型评测很有参考价值。
局限与展望¶
- 作者承认,global context 只保存开头几帧,temporal context 只保存最近几帧,中间很长一段历史离开缓存后就被丢弃。因此模型对“中途出现过但后来暂时离开画面”的对象或事件没有真正记忆,未来可以结合层级记忆、检索式视频缓存或对象级状态表示。
- 训练成本仍然不低。Rolling window 扩大了注意力窗口,DMD loss 本身也耗显存;虽然非重叠窗口让 80G GPU 可训练,但扩展到更大基础模型、更高分辨率或更长上下文时仍可能遇到瓶颈。
- rolling diffusion window 可能增加交互场景里的响应延迟,因为当前帧定稿前已经部分预生成了后续帧。如果用户突然改 prompt,系统需要处理已经在窗口中的未来状态。论文附录展示了 prompt 修改时可以丢弃旧 cross-attention cache,但更理想的方案可能是在交互高频阶段切到逐帧模式,稳定播放阶段再切回 Rolling Forcing。
- 实验主要基于 Wan2.1-T2V-1.3B 和文本到视频设置,尚不清楚对更大闭源模型、视频到视频、可控角色一致性或多主体交互任务是否同样稳定。
- 社会影响上,实时长视频生成降低了交互式内容生产门槛,也会提高实时伪造视频流和长时误导内容的风险。部署时需要配套水印、内容审核和滥用检测。
相关工作与启发¶
- vs Self Forcing: Self Forcing 通过在训练时条件于自生成历史来缓解 exposure bias,但推理仍是严格逐帧因果链。Rolling Forcing 保留自生成历史训练,同时在推理中加入滚动窗口联合去噪,因此更能控制长期误差累积。
- vs CausVid: CausVid 将慢速双向视频扩散蒸馏成快速自回归模型,解决实时性问题,但没有专门处理长时间漂移。Rolling Forcing 可以看作在 CausVid / Self Forcing 这一 distilled causal 路线上的长程稳定性增强。
- vs Diffusion Forcing / SkyReels-V2: Diffusion Forcing 通过给历史帧加不同噪声来减少模型对干净历史的依赖,但这会削弱时间一致性。Rolling Forcing 不污染已输出的干净历史,而是在当前窗口内使用不同噪声等级的未定稿帧进行联合修正。
- vs planning generation / FramePack: FramePack 这类方法用非顺序方式生成或打包上下文,能利用更宽的时间信息,但不适合严格实时流式输出。Rolling Forcing 的优势是每次仍输出当前最前帧,系统语义上始终是在线生成。
- 对后续工作的启发: 这篇论文提示长视频生成不一定要无限扩展全历史注意力;更可行的方向可能是“短期滚动窗口 + 少量全局锚点 + 可学习记忆”。类似思想可以迁移到实时 3D 场景生成、交互式仿真、长音频扩散或多模态 agent 的连续视觉想象。
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 将 rolling diffusion、few-step distillation 和 attention sink 组合进严格流式视频生成,问题切得很准,设计也不是简单拼接。
- 实验充分度: ⭐⭐⭐⭐⭐ 主实验、30 秒和 2 分钟长视频、消融、full VBench、人类偏好和 RoPE 分析都覆盖到了,证据链比较完整。
- 写作质量: ⭐⭐⭐⭐☆ 方法叙述清楚,图和算法帮助很大;但 DMD 训练细节较密,读者需要熟悉 Self Forcing / CausVid 背景才能完全跟上。
- 价值: ⭐⭐⭐⭐⭐ 实时长视频扩散是 world model 和交互式生成的重要基础能力,本文给出了质量、延迟和训练可行性都比较平衡的一条路线。