In-Flight KV Cache with Clean Anchors for Faster Autoregressive Video Diffusion
Yikai Wang, Xiao Han, Mengmeng Xu, Juan Camilo Perez, Yiannis Douratsos, Sen He, Zijian Zhou, Fei Zhang, Zhaochong An, Juan-Manuel Perez-Rua, Chen Change Loy, Tao Xiang
cs.CV, cs.AI, cs.LG, cs.MM
2026-09-26
FlashForward把去噪前向算出的KV直接留给下一块,再用稀疏干净锚点做双侧约束。四卡生成20秒以上16FPS视频比HiAR快1.16至1.69倍,1.3B在480p上VBench总分0.838。
少步自回归视频扩散把长视频切成时间块,每块只走很短的去噪序列。后面的块要靠 KV cache 记住已经生成的内容。KV cache 就是 Transformer 注意力里存下来的 Key 和 Value。现有方法会专门再跑一轮模型,把这块编成更干净或噪声更低的 KV,这一轮并不推进输出 latent。
Self-Forcing 等一块走完,再拿干净输出过一遍模型建 cache,块与块只能串行等。HiAR 允许不同块在不同去噪阶段重叠,但每个阶段都要给被消费的前驱再编码一次。去噪被压到四步量级之后,这些只更新记忆、不产出帧的前向变成越来越重的瓶颈。
去噪前向本身已经算出当前块的飞行中 KV。FlashForward 直接复用这份 KV,把记忆发布绑在产出帧的那一次前向上。
这套系统来自 Meta 与南洋理工大学 S-Lab。跨块记忆被写成一份状态契约:一块发布什么表示、噪声停在哪一档、后一块何时能读。契约同时决定记忆内容和生成依赖图。
渲染器每次普通去噪前向做两件事:把当前块从噪声档 σk 推到 σ{k-1},并把这一档的 KV 写入同阶段历史库。后一块在同一噪声档立刻可读,窗口最多保留最近 H=5 块。四个去噪阶段各占一张 GPU。块 i、阶段 k 依赖更噪的 (i, k+1) 和同阶段的 (i−1, k),落在同一条反对角线上的节点可以并行。预热之后,每个流水线回合完成一块。
同阶段历史来自还没走完的噪块,单独用会把外观和运动的不确定性传过块边界。规划器先在时间轴上每隔 Δ=10 个 latent 生成稀疏辅助锚点,每块 3 个,走完后做一次干净端点的 cache 抽取。渲染器每个内部块读左右两侧锚点的干净 KV,再读同阶段稠密近期历史。稀疏干净锚点管粗结构、长程和双侧约束;稠密同阶段历史管细外观和近期运动。干净锚点只当条件,最终每个位置仍由渲染器重生成。把规划器锚点直接拼进成片,会在锚点位置留下周期性色缝。
两个角色共用一个 DiT 骨干,用角色 embedding 和各自的 LoRA 学不同的时间依赖。训练分两段:先在 25.6 万条带生成字幕的 Shutterstock 真实视频上做 packed SFT,1800 步;再做 100 步 student 更新,用 distribution-matching distillation 在 self-rollout 上适配自己生成的锚点和历史。骨干是 Wan2.1-T2V-1.3B。14B 只做了同样张量和调度的系统计时,没有质量分。
默认一条 81 个 latent,对应 16 FPS 下 321 帧 RGB,规划器 9 个锚点、渲染器 27 块、4 个去噪阶段。四卡设置里规划先跑完再渲染;五卡流式把规划器固定在一张卡上,第一块锚点一出就可以开始渲染。
延迟测的是去噪路径,不含文本编码和 VAE 解码,最多四卡,各方法取最快配置。20 秒及以上、16 FPS、覆盖 1.3B 与 14B、480p 与 720p:
| 对照 | 加速比 |
| vs HiAR | 1.16–1.69× |
| vs Self-Forcing | 1.42–2.92× |
| 65 秒 vs 双向生成 | 3.54–8.44× |
1.3B、四张 H100、65 秒视频:Self-Forcing 在 480p 与 720p 分别是 65.1 秒和 97.7 秒,HiAR 是 24.7 秒和 86.9 秒,FlashForward 是 21.3 秒和 58.9 秒。81 个 latent 的逻辑前向次数:FlashForward 123 次,Self-Forcing 134 次,HiAR 212 次。单卡吃不到波前,20–65 秒相对 HiAR 仍快 1.54–1.59×,相对 Self-Forcing 慢 1.9–4.2%。五卡流式相对四卡版,1.3B 再快 1.18–1.47×,14B 再快 1.15–1.36×。5 秒短片上双向基线仍然最快。
质量只报了 1.3B 480p。VBench-1.0、20 秒:
| 方法 | Total | Quality | Semantic |
| Self-Forcing | 0.805 | 0.829 | 0.708 |
| Causal Forcing | 0.810 | 0.837 | 0.701 |
| HiAR | 0.821 | 0.846 | 0.723 |
| FlashForward | 0.838 | 0.859 | 0.753 |
VBench-Long 上 20、35、65 秒的 Total 分别是 0.8404、0.8401、0.8395,几乎不掉。Self-Forcing 从 0.8258 掉到 0.7806,Causal Forcing 掉到 0.7539,HiAR 停在 0.8219。消融里,只用同阶段历史会闪到 VBench 打不出分;只用干净历史与未来锚点 Total 为 0.826,两套记忆合在一起才到 0.838。定性上 Self-Forcing 会累积颜色漂移,HiAR 在长镜头里换脸、手臂发糊。FlashForward 在锚点帧和非锚点帧之间看不出接缝。
这是一次执行图改造,不是新的去噪目标。「记忆怎么发布、何时可读」直接决定阶段能不能摊到多卡上。已经在跑 Self-Forcing 或 HiAR 这类块级流水线、并且有四张同构 GPU 要出 20 秒以上片子的团队,可以把 cache 更新前向从热路径上拿掉,质量在 1.3B 480p 上还略高。
单卡和 5 秒短片没有这笔账。14B 的画质也还没测。更接近换调度,不是换生成器。
论文写明:面向多卡、少步、长序列;规划和流水线预热会吃掉短视频的收益;单卡吃不到波前并行;训练数据全是真实世界视频,偏写实,动画和风格化域可能不行;锚点步长和条件窗口固定。
质量评测只有 1.3B 480p,14B 行是同样形状和调度的系统计时。延迟不含 VAE 解码,端到端还会再慢一截。干净锚点假设没有放松,自适应选锚留在 future work。蒸馏之后规划器和渲染器的输出亮度已经分叉,把锚点当输出会出缝;这个分叉有没有别的副作用,正文没有展开。