跳转至

Flow Caching for Autoregressive Video Generation

会议: ICLR 2026
OpenReview: https://openreview.net/forum?id=vko4DuhKbh
代码: https://github.com/mikeallen39/FlowCache
领域: 视频生成 / 推理加速
关键词: 自回归视频生成, 特征缓存, KV Cache 压缩, Diffusion Transformer, 训练无关加速

一句话总结

FlowCache 指出自回归视频生成中不同 chunk 在同一时间步处于异质去噪状态,因此放弃"全帧统一缓存",改为给每个 chunk 配独立的逐块自适应缓存策略,并配套一个联合重要性—冗余的 KV cache 压缩,在 MAGI-1 和 SkyReels-V2 上分别取得 2.38× / 6.7× 提速且画质几乎无损。

研究背景与动机

  • 领域现状:自回归视频模型(MAGI-1、SkyReels-V2)把超长视频切成固定帧数的 chunk,对每个 chunk 做 Causal Diffusion-Forcing 式去噪,把长视频推理的复杂度从二次降到线性,被视为实时超长视频生成的可行路径。但高分辨率下仍极慢——MAGI-1-4.5B-distill 在 A800 上生成 10 秒 720×720 视频要约 32GB 显存、50 分钟。
  • 现有痛点:训练无关的特征缓存(TeaCache、ToCa、DiCache 等)能加速传统 DiT 扩散,但它们都默认"同一时间步所有帧去噪程度一致",因此对所有内容用同一套 reuse/recompute 决策。这一假设在自回归模型里直接失效。
  • 核心矛盾:作者实测 MAGI-1 / SkyReels-V2 的相邻时间步相对 L1 距离,发现三条规律——(i) 越接近干净视频,相邻步相似度越差(去噪后期不能复用);(ii) 同一时间步不同 chunk 处于不同去噪阶段,相似度差异巨大;(iii) 模型输入与采样输出全程高度相似。统一缓存无法兼顾"已接近干净、必须重算的 chunk"和"还在噪声阶段、可大胆复用的 chunk"。
  • 本文目标:设计首个面向自回归视频生成的缓存框架,让每个 chunk 拥有独立缓存策略,同时控制随生成增长的 KV cache 显存。
  • 核心 idea[逐块独立缓存] 把视频 chunk 类比成 LLM 的 token,按各自的相对 L1 距离轨迹独立决定算/复用;[联合重要性—冗余的 KV 压缩] 在固定显存预算下既保留对当前去噪重要、又彼此不冗余的历史 token。

方法详解

整体框架

FlowCache 是训练无关的两件套:去噪侧用 chunkwise 自适应缓存 替代统一缓存,逐 chunk 累积相对 L1 距离决定该步重算还是复用;显存侧用 联合重要性—冗余的 KV cache 压缩 把已完成去噪的 clean chunk 压进固定预算的缓存区,维持长程时序一致性。前者由 Theorem 1 + Corollary 1 在理论上证明"必须按 chunk 分开缓存",后者解决自回归生成中 KV cache 随 chunk 数线性膨胀的显存问题。

flowchart TD
    A[当前去噪 chunk 组] --> B{逐 chunk 累积相对 L1 距离 f}
    B -->|f=0 超阈值/前 m 步| C[重算该 chunk 前向]
    B -->|f≤ε| D[复用缓存激活]
    C --> E[chunk 去噪完成 → 进入 KV cache]
    D --> E
    E --> F[Reserved KV Cache 已满?]
    F -->|是| G[联合 Importance−Redundancy 打分<br/>每个 head 选 top-B token]
    F -->|否| H[直接保留]
    G --> I[固定预算的压缩 clean KV]
    H --> I
    I --> A

关键设计

1. 逐块相对 L1 距离与单调性定理:为什么必须分 chunk 缓存。 在自回归设定下,第 \(i\) 个 chunk 在时间步 \(t\) 的相对 L1 距离可写成更新量的归一化形式 \(L1_{rel}(X,t,i)=\frac{\lVert X^i_{t-1}-X^i_t\rVert_1}{\lVert X^i_t\rVert_1}=\frac{\lVert v_\theta(X^i_t,t,c)\cdot\Delta t\rVert_1}{\lVert X^i_t\rVert_1}\)。作者证明的 Theorem 1 指出:当模型收敛到流匹配最优速度场、调度函数取幂律 \(\sigma(t)=(t/T)^p\) 时,\(L1_{rel}\) 随去噪推进单调增大——即 chunk 越接近真实视频,相邻步越不相似、越不该复用。Corollary 1 进一步说明,只要不同 chunk 内容异质(状态范数 \(\lVert X^i_t\rVert_1\neq\lVert X^j_t\rVert_1\))而更新幅度近似相同,则同一 \(t\) 下它们的 \(L1_{rel}\) 必然不等。这就把"统一缓存不合理"从经验观察上升为理论结论,奠定了逐块独立策略的必要性。

2. Chunkwise 自适应缓存决策。 对每个 chunk 维护一个递归累积量 \(f(X,t,i)\) 来决定算还是复用:前 \(m\) 个时间步强制重算(\(f=0\)),其余时间步若 \(f(X,t+1,i)+L1_{rel}(X,t,i)>\epsilon\) 则触发重算并清零,否则继续累加并复用缓存激活。直觉是把"自上次重算以来累积的变化量"和阈值 \(\epsilon\) 比较——靠近高斯噪声的 chunk 变化慢,可连续复用多步;靠近干净视频的 chunk 变化快,频繁触发重算。\(m\)(MAGI-1 取 5、SkyReels-V2 取 4)保护去噪早期质量,\(\epsilon\) 区分 slow/fast 档位(如 MAGI-slow 0.01、MAGI-fast 0.015、SkyReels-slow 0.1、fast 0.15)。每个 chunk 的轨迹独立,这正是相对 TeaCache 等统一策略能同时提速又保质的关键。

3. 联合重要性—冗余的 KV cache 压缩。 自回归视频里已去噪完成的 clean chunk 全部进 KV cache 供后续 chunk 注意,显存随生成线性膨胀。LLM 里只按重要性(注意力分数)选 top token 在视频上失效——视频时空高度冗余,高分 token 往往彼此几乎相同,导致缓存被冗余内容塞满、丢失多样历史。FlowCache 把固定缓冲 \(B_{total}\) 切成压缩 clean 区 \(B_{budget}\) 和当前去噪区 \(B_{active}\),满了就合并新完成的 chunk 再压缩。打分同时考虑两项:重要性 \(\widetilde{Imp}^{(h)}\) 由当前去噪 query 对 clean key 的注意力 softmax、跨 query 平均再做 1D max-pooling 得到;冗余性 \(Red^{(h)}_j=\mathrm{softmax}\big(\frac1{L_k}\sum_i S^{(h)}_{ij}\big)\)\(\ell_2\) 归一化 key 的余弦相似度(对角置零)跨 token 平均得到。最终每个 head 的选择分数 \(Score^{(h)}_j=\lambda\cdot\widetilde{Imp}^{(h)}_j-(1-\lambda)\cdot Red^{(h)}_j\),每个 head 取 top-B token 保留。这样在固定预算内既留对当前去噪相关、又彼此不冗余的历史,保住长程时序一致性。

实验关键数据

主实验表格(推理效率与画质,A800)

Model Method PFLOPs↓ Speedup↑ Latency(s)↓ VBench↑ LPIPS↓ SSIM↑ PSNR↑
MAGI-1 Vanilla 306 2873 77.06 - - -
TeaCache-fast 225 1.44× 1998 70.11 0.816 0.114 8.94
FlowCache-slow 161 1.86× 1546 78.96 0.316 0.650 22.34
FlowCache-fast 140 2.38× 1209 77.93 0.431 0.514 19.27
SkyReels-V2 Vanilla 113 1540 83.84 - - -
TeaCache-fast 49 2.2× 686 80.06 0.306 0.612 18.39
FlowCache-slow 36 5.88× 262 83.12 0.123 0.789 23.74
FlowCache-fast 28 6.7× 230 83.05 0.147 0.764 22.95

消融实验表格(fast 档,拆 reuse 策略 vs KV 压缩)

Model Reuse Strategy KV Compression VBench↑ LPIPS↓ SSIM↑ PSNR↑
MAGI-1 TeaCache - 70.11 0.816 0.114 8.94
ChunkWise - 77.66 0.421 0.523 19.89
ChunkWise Enabled 77.93 0.431 0.514 19.27
SkyReels-V2 TeaCache - 80.06 0.306 0.612 18.39
ChunkWise - 83.12 0.123 0.789 23.74
ChunkWise Enabled 83.01 0.157 0.743 22.61

关键发现

  • 逐块缓存是质量主因:在 MAGI-1 上 TeaCache-fast 把 VBench 从 77.50 砸到 70.11,而 chunkwise reuse 几乎维持原始水平(77.66),证明统一缓存正是自回归场景画质崩坏的根源。
  • KV 压缩几乎零损:开启 KV cache 压缩后 VBench 仅微动(MAGI-1 77.66→77.93,SkyReels-V2 83.12→83.01),说明联合重要性—冗余筛选能在固定显存下保住质量。
  • 越复杂的自回归结构收益越大:SkyReels-V2(chunk 内再分 block、块间非均匀去噪)异质性更强,FlowCache 提速到 6.7× 仍优于 TeaCache 2.2×,印证"异质性越强,逐块缓存优势越明显"。

亮点与洞察

  • 把"统一缓存为何在自回归视频上失效"从经验观察提升为理论结论(Theorem 1 单调性 + Corollary 1 跨 chunk 不等),让逐块独立缓存有了可证依据。
  • 视角迁移巧妙:把 video chunk 类比 LLM token,从而既能借鉴 LLM 的 KV cache 压缩思路,又点明视频时空冗余使"纯重要性"选择失效,引出重要性—冗余联合打分。
  • 训练无关、可直接挂载到已有自回归视频模型,slow/fast 双档让用户在质量与速度间灵活取舍。

局限与展望

  • 阈值 \(\epsilon\)、保护步数 \(m\)、混合系数 \(\lambda\) 等需按模型手工调(不同模型/档位取值差异大),缺乏自适应设定。
  • Theorem 1 依赖"模型已收敛到最优速度场 + 幂律调度"等理想假设,实际蒸馏/非标准采样器下的严格性待验证。
  • 仅在 MAGI-1、SkyReels-V2 两个模型上评估,对更多自回归范式(不同窗口/块划分)的普适性还需更广验证;KV 压缩对超长(数分钟级)视频的累积误差未深入分析。

相关工作与启发

  • 特征缓存:TeaCache(时间步嵌入调制 + 多项式拟合估计输出差)、ToCa(token 级冗余/误差敏感度)、DiCache(浅层 probe 在线估计输出变化)——均假设全帧同步去噪,本文证明其在自回归下的失配。
  • KV cache 压缩:H2O(heavy-hitter 高累计注意力 token)、SnapKV(prompt 末尾观测窗预选)、D2O(跨层动态分配 + 补偿)面向 LLM;R-KV 在推理模型里联合重要性与冗余,是本文 KV 压缩打分的直接灵感来源。
  • 启发:当一个统一加速假设迁移到新范式时,先实测分布差异(这里是逐 chunk 的相对 L1 轨迹),往往能找到"按单元解耦策略"的突破口;同时同一加速技术(缓存/KV 压缩)在不同模态下的失效模式各异,需结合模态特性(视频的时空冗余)重设计准则。

评分

  • 新颖性: ⭐⭐⭐⭐ 首个面向自回归视频生成的缓存框架,逐块独立缓存 + 理论单调性证明是清晰且站得住的新切入点。
  • 实验充分度: ⭐⭐⭐⭐ 两个代表性自回归模型、slow/fast 双档、FLOPs/延迟/VBench/LPIPS/SSIM/PSNR 全覆盖,并拆分两组件消融;模型多样性可再扩。
  • 写作质量: ⭐⭐⭐⭐ 动机—观察—理论—方法链条连贯,图 2/图 3 把异质性与策略对比讲得直观。
  • 价值: ⭐⭐⭐⭐ 训练无关、即插即用,6.7× 提速且画质几乎无损,对实时超长视频生成落地有实际意义。