Ca2-VDM: Efficient Autoregressive Video Diffusion Model with Causal Generation and Cache Sharing¶
会议: ICML 2025
arXiv: 2411.16375
代码: https://github.com/Dawn-LX/CausalCache-VDM
领域: 视频生成
关键词: 视频扩散模型, 自回归生成, KV-Cache, 因果注意力, 长视频生成
一句话总结¶
提出 Ca2-VDM,通过因果生成(Causal Generation)和缓存共享(Cache Sharing)两大设计,消除自回归视频扩散模型中条件帧的冗余计算,将计算复杂度从二次降至线性,生成 80 帧视频速度比基线快 2.5 倍,同时保持 SOTA 级生成质量。
研究背景与动机¶
现有视频扩散模型(VDM)通常以自回归方式生成长视频:每一步生成一个短 clip,以前一个 clip 的最后几帧作为条件。这种范式面临两个核心效率瓶颈:
冗余计算问题:相邻 clip 之间存在重叠的条件帧,模型必须在每个自回归步骤重新计算这些帧的特征。当条件帧随自回归步骤累积扩展以提供长期上下文时,计算需求呈二次增长。
缓存存储问题:由于现有 VDM 对条件帧和噪声帧使用相同的 timestep embedding,不同去噪步骤的 KV 特征各不相同,因此为每个去噪步骤单独缓存 KV 会消耗巨量 GPU 显存。
核心矛盾:想要长期上下文(Long-term context)就需要扩展条件帧,但扩展条件帧会导致计算和存储开销激增。作者认为关键在于:现有 VDM 的双向注意力(Bidirectional Attention)机制使得条件帧的 KV 特征依赖于当前噪声帧,无法预计算和复用。
方法详解¶
整体框架¶
Ca2-VDM 基于 Spatial-Temporal Transformer(以 Open-Sora v1.0 初始化),核心改动集中在注意力机制上。整体流程分为训练和推理两个阶段:
- 训练阶段:输入视频序列被部分加噪——前 \(P\) 帧保持干净作为 clean prefix(条件),后 \(L-P\) 帧加噪作为 denoising target。\(P\) 在训练中随机采样,且 clean prefix 使用 \(\text{tEmb}(0)\),denoising target 使用 \(\text{tEmb}(t)\),确保两部分有不同的 timestep embedding。
- 推理阶段:每个自回归(AR)步包含两个子阶段:(1) Denoising Stage——利用预存的 KV-cache 去噪生成新 chunk;(2) Cache Writing Stage——对去噪结果做一次前向传播,计算并存储新的 KV-cache 供下一步使用。
关键设计¶
1. 因果时序注意力(Causal Temporal Attention)¶
将标准的双向时序注意力替换为因果(单向)注意力,通过下三角掩码确保每一帧只 attend to 其前面的帧:
其中 \(\mathbf{M}\) 为下三角掩码矩阵(\(M_{i,j} = -\infty\) 若 \(i < j\))。这一设计的关键意义:条件帧的 KV 特征不再依赖于后续的噪声帧,因此可以在前一个 AR 步预计算并缓存,在后续所有 AR 步中直接复用。
2. 缓存共享(Cache Sharing)¶
因果生成使得 clean prefix 的 KV 仅由干净帧本身决定,与去噪时间步 \(t\) 无关。训练时为 clean prefix 固定使用 \(\text{tEmb}(0)\),推理时同理——这使得同一份 KV-cache 可以在所有去噪步骤间共享。
对比 Live2diff 等方法需要为每个去噪步存储独立 KV-cache(存储量与去噪步数 \(T\) 成正比),Ca2-VDM 的 KV-cache 存储量与 \(T\) 无关,节省了 \(T\) 倍显存。
3. 前缀增强空间注意力(Prefix-Enhanced Spatial Attention)¶
为增强条件帧对生成帧的空间引导,将 clean prefix 中最近 \(P'\) 帧的空间特征通过空间维拼接注入到每一帧的空间注意力中:
- 对于 denoising target 帧 \(i \geq P\):将最后 \(P'\) 个 prefix 帧的空间特征拼接到帧 \(i\) 的 K/V 上
- 对于 clean prefix 帧 \(i < P\):通过 self-repeat 实现对齐
注意力图大小为 \((HW) \times ((P'+1)HW)\),\(P'\) 通常取 3(较小值),计算开销可控。
4. 时序 KV-Cache 队列与 Cyclic-TPEs¶
KV-Cache 队列:随着自回归推进,条件帧数 \(P_k\) 不断增长。当 \(P_k\) 达到预设最大值 \(P_{\max}\) 时,最早的 KV-cache 被出队,保持队列长度恒定。这确保了计算和存储成本不会无限增长,同时仍能利用长期上下文。
Cyclic-TPEs:当累计生成长度超过训练长度时,时间位置编码(TPE)会用尽。由于 KV-cache 中已绑定了早期的 TPE,不能简单重置。作者设计了循环移位机制:去噪目标被分配到从开头重新开始的 TPE 索引。训练时通过随机偏移的循环移位 TPE 序列来对齐这一行为。
5. 空间 KV-Cache¶
由于 \(P' < l\),当前 chunk 的前缀增强只需最近一个 chunk 的空间 KV-cache,因此: - 仅存储一个 chunk 的空间 KV-cache - 每个 AR 步覆写,无需队列结构
损失函数 / 训练策略¶
损失函数采用改进的扩散损失:
- \(\mathbf{m}\) 为损失掩码,仅对 denoising target 部分(\(i \geq P\))计算损失
- \(\mathbf{t}\) 为 timestep 向量:prefix 部分为 0,target 部分为 \(t\)
- 实际训练中额外优化 \(\mathcal{L}_{\text{vlb}}\)(带可学习协方差)
训练策略: - Clean prefix 长度 \(P\) 随机采样:\(P \in \{1, 1+l, \ldots, 1+nl\}\)(\(l\) 为 chunk 长度的倍数) - 使用不同长度的训练视频:\(L_{\text{train}} = P + l\) - TPE 序列在训练中随机循环偏移以支持推理时的 Cyclic-TPEs - 基于 Open-Sora v1.0 初始化,使用 T5 文本编码器和 StableDiffusion VAE
实验关键数据¶
主实验¶
零样本文本到视频 FVD 评估(16×256×256 分辨率):
| 方法 | 条件 | MSR-VTT FVD | UCF101 FVD |
|---|---|---|---|
| ModelScope | T | 550 | 410 |
| VideoComposer | T | 580 | - |
| Make-A-Video | T | - | 367.2 |
| PixelDance | T+I | 381 | 242.8 |
| SEINE | T+I | 181 | - |
| Ca2-VDM | T+I | 181 | 277.7 |
UCF-101 微调 FVD(256×256 分辨率):
| 方法 | 分辨率 | FVD |
|---|---|---|
| MCVD | 64² | 1143 |
| VDT | 64² | 225.7 |
| VideoFusion | 128² | 220 |
| Latte | 256² | 333.6 |
| PVDM | 256² | 343.6 |
| Ca2-VDM | 256² | 184.5 |
80 帧生成速度对比(256×256,单 A100):
| 方法 | 可扩展条件 | 时间 (s) | 相对加速 |
|---|---|---|---|
| StreamT2V | ✗ | 150 | 1× |
| OS-Ext | ✓ | 130.1 | 1.15× |
| OS-Fix | ✗ | 77.5 | 1.94× |
| Ca2-VDM | ✓ | 52.1 | 2.88× |
消融实验¶
条件长度 \(P_{\max}\) 与前缀增强 PE 的消融(SkyTimelapse,48 帧 / 6 AR 步):
| \(P_{\max}\) | PE | Chunk 1 FVD | Chunk 2 FVD | Chunk 3 FVD | 说明 |
|---|---|---|---|---|---|
| 25 | ✗ | 274.8 | 244.5 | 275.1 | 短条件、无增强 |
| 25 | ✓ | 257.4 | 216.5 | 238.5 | +PE 显著提升 |
| 41 | ✗ | 187.3 | 209.3 | 263.2 | 长条件效果好 |
| 41 | ✓ | 185.0 | 202.9 | 240.5 | 两者结合最优 |
GPU 显存对比(256×256,去噪 50 步):
| 方法 | KV-cache 显存 | 总显存 |
|---|---|---|
| Live2diff (T=50) | 17.70 GB | 29.46 GB |
| Ca2-VDM w/ PE | 0.86 GB | 4.79 GB |
| Ca2-VDM w/o PE | 0.77 GB | 3.95 GB |
关键发现¶
- 线性 vs 二次复杂度:OS-Ext 的时间成本随 AR 步二次增长,Ca2-VDM 仅线性增长
- 前缀增强有效:PE 在所有配置下均带来 FVD 提升(Chunk 2 提升约 10%)
- 长条件帧改善后期质量:\(P_{\max}\) 从 25 增至 41,Chunk 1 FVD 从 274.8 降至 187.3
- 缓存共享省显存:相比 Live2diff 的 17.7 GB KV-cache,Ca2-VDM 仅需 0.86 GB(节省 20 倍)
- 不同注意力层的 FLOPs 影响:扩展条件时,OS-Ext 三类注意力层 FLOPs 全部增长,Ca2-VDM 仅时序注意力略微增长,空间和文本交叉注意力保持不变
亮点与洞察¶
- 从 LLM 的 KV-cache 迁移到 VDM 并非 trivial:LLM 每步生成一个 token、KV 同步计算缓存;VDM 每个 AR 步需反复调用模型(不同 \(t\)),且每个 token 对应 \(HW\) 个视觉网格,存储开销远大于文本。本文的因果注意力 + 缓存共享巧妙解决了这两个特有挑战。
- Distinct timestep embedding 是 cache sharing 的关键:为条件帧和去噪目标使用不同的 timestep embedding 这一简单改动,使得条件帧的 KV 与 \(t\) 解耦,是整个方案可行的基础。
- Cyclic-TPEs 精巧地处理了超长推理的位置编码问题:避免了 TPE 与 KV-cache 绑定后无法重置的矛盾。
局限与展望¶
- 因果注意力的信息损失:单向注意力相比双向注意力天然损失了后向信息流,虽然 PE 做了一定补偿,但生成质量是否在更复杂场景下有差距值得进一步研究
- 分辨率受限:实验均在 256×256 分辨率下进行,对高分辨率(如 512+)视频生成的可扩展性尚未验证
- KV-cache 队列出队策略简单:最早帧先出队可能丢失关键全局信息,更智能的选择性出队策略可能进一步提升质量
- 潜在安全风险:高效实时视频生成可能被用于生成深度伪造内容,需配合水印等安全措施
相关工作与启发¶
- Open-Sora v1.0:Ca2-VDM 的 backbone 基础,展示了 Spatial-Temporal Transformer 在视频生成中的有效性
- StreamT2V / GenLV:固定条件帧长度的自回归 VDM 代表,存在帧间突变问题
- Live2diff:并发工作,也使用 KV-cache 但未实现缓存共享,显存开销大
- 启发:该技术思路可推广至其他需要自回归生成的扩散模型场景(如音频、3D 生成),因果注意力 + 缓存共享的范式可能成为通用加速方案
评分¶
- 新颖性: ⭐⭐⭐⭐ — 因果注意力本身不新,但在 VDM 中结合缓存共享、Cyclic-TPE 等形成完整方案有原创性
- 实验充分度: ⭐⭐⭐⭐ — 多数据集评估、充分消融、效率分析全面,但分辨率和数据集多样性有限
- 写作质量: ⭐⭐⭐⭐⭐ — 问题定义清晰,Figure 优秀,逻辑链完整
- 价值: ⭐⭐⭐⭐ — 解决了自回归 VDM 的核心效率瓶颈,2.5-3× 加速实用性强