DeepCache

义项:扩散模型推理加速方法
DeepCache

DeepCache 是一种面向扩散模型的无训练推理加速方法,由 Ma Xinyin、Fang Gongfan、Wang Xinchao 提出,核心思路是复用去噪过程中相邻步骤之间变化很小的深层特征,从而减少重复计算[1]。该方法无需重新训练或微调模型,即可在 Stable Diffusion v1.5 上实现约 2.3 倍加速,而 CLIP 分数仅下降 0.05[1]。它可与 DDIM、PLMS 等采样算法叠加使用,并被集成进 Hugging Face 的 Diffusers 库[2][3]。

目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

DeepCache 是一种针对扩散模型的无训练加速方法,它从模型架构的角度入手,通过在连续去噪步骤之间缓存并检索特征,减少重复的前向计算[1]。其做法利用了 U-Net 的结构特点:在部分步骤中直接复用上一步得到的高层特征,只以较低成本重新计算浅层特征,从而降低每一步的推理开销[1]。

该方法属于无需额外训练的一类加速方案,与需要再训练的剪枝、蒸馏方法形成区别,同时可与现有的采样器配合使用[1]。

原理

扩散模型的推理依赖对同一网络进行多次顺序去噪,每个时间步都要完整执行一次前向计算,这构成主要的计算瓶颈。论文通过对比相邻时间步的中间特征发现,深层特征在相邻步骤间变化幅度有限:对每个时间步,至少有 10% 的其他时间步与它的相似度高于 0.95;在 LSUN 数据集的 DDPM 实验中,某些时间步与多达 80% 的其他步骤高度相似。

U-Net 由下采样块、上采样块以及连接二者的跳跃路径组成,主分支输出经过处理的高层特征,跳跃分支则把相对更浅层的特征直接送到对应位置,两路在拼接模块汇合。DeepCache 把缓存单位定在跳跃分支上:在第 $i$ 个时间步,若判定需要执行完整计算,则正常前向并保存所选分支的输出;若判定为复用步骤,则跳过被缓存分支的计算,直接使用最近一次保存的特征。

整个过程可以概括为下图所示的两类步骤交替。


flowchart LR

A[输入潜变量 x_t] --> B{是否缓存步骤}

B -- 是 --> C[完整前向:主分支 + 跳跃分支]

C --> D[保存所选跳跃分支特征]

B -- 否 --> E[仅计算主分支]

D --> F[拼接并输出 x_{t-1}]

E --> F

F --> A

实现上通过两个超参数控制权衡:cache_interval 指每缓存一次之间间隔的步数,cache_branch_id 指执行缓存的分支编号(由浅至深排序);分支编号越小或间隔越大,速度提升越明显,但图像质量下降也越多[2]。

发展历程

DeepCache 的论文在 2023 年 12 月以预印本形式公开,作者为新加坡国立大学学习与视觉实验室的 Ma Xinyin、Fang Gongfan 与 Wang Xinchao[3][4]。

随后开源仓库陆续发布适配不同模型的代码:2023 年 12 月 6 日提供 Stable Diffusion XL 版本(约 2.6 倍加速),12 月 20 日提供 DDPM 版本,12 月 21 日提供 Stable Video Diffusion 与 Text2Video-Zero 版本(SVD-XT 上约 1.7 倍加速),12 月 26 日发布无需改动管线代码的即插即用实现[3]。

2024 年 1 月,Hugging Face 的 Diffusers 库新增 DeepCache 文档页,使其成为该库中的标准优化选项之一[3][2]。同年 6 月,论文被 IEEE/CVF 计算机视觉与模式识别会议(CVPR 2024)收录,页码为 15762–15772[1]。

由于原始方法针对 U-Net 结构设计,作者团队进一步提出面向扩散 Transformer 的改进方案 Learning-to-Cache,通过可微搜索决定各时间步缓存的层,该工作在 2024 年被 NeurIPS 接收[5][6]。

应用

在图像生成方面,开源实现覆盖 Stable Diffusion、Stable Diffusion XL 以及图生图、图像修补等管线,并可与 DDIM、PLMS 等采样算法组合使用[3]。据 Hugging Face 文档在 NVIDIA RTX A5000 上使用 50 步推理的测试,加速 Stable Diffusion v2.1 时,512 分辨率、批大小为 8 的情况下,原管线耗时 15.96 秒,采用间隔为 5、分支为 0 的配置后降至 5.03 秒,约为 3.18 倍;1024 分辨率下则由 101.95 秒降至 33.72 秒,约 3.02 倍[2]。

在视频生成方面,该方法被用于 Stable Video Diffusion 与 Text2Video-Zero,SVD-XT 上报告约 1.7 倍加速[3]。在工程实践中,它被归入模型缓存这一加速路线,常与算子优化、模型编译、模型蒸馏等手段并列比较和组合使用[7]。

在学术研究中,DeepCache 也作为模块级缓存组件被后续工作复用。例如 ICCV 2025 的 PostDiff 框架将 DeepCache 与交叉注意力缓存结合,用于在步间复用 U-Net 深层跳跃分支的计算[8]。

局限

速度与质量之间存在取舍。降低缓存分支编号或增大缓存间隔能够进一步提速,但生成图像的保真度会相应下降,实际使用需要在二者之间自行权衡[2]。因此方法虽被作者描述为几乎无损,但仍存在可测量的质量损失,例如 Stable Diffusion v1.5 上 CLIP 分数下降 0.05、LDM-4-G 上 FID 上升 0.22[1]。

方法的效果依赖特征冗余在相邻时间步中的实际分布。当步数被压缩得很少,相邻步骤之间的特征差异增大,可复用的部分减少,加速空间随之收窄[8]。

原始设计建立在 U-Net 的跳跃连接结构上,并不直接适用于扩散 Transformer 一类架构;后续的 Learning-to-Cache 正是为弥补这一点而提出,通过训练一个路由来决定各时间步保留哪些层[5][6]。这类缓存方法的加速上限还受“一次完整计算加一次廉价计算”交替结构的约束[9]。

参见

  • 扩散模型 —— DeepCache 所服务的一类生成模型,其迭代去噪过程是加速的对象

  • U-Net —— DeepCache 缓存与复用高层特征所依托的网络结构

  • Stable Diffusion —— 常用的文生图模型,也是该方法的主要测试对象

  • DDIM —— 可与 DeepCache 组合使用的确定性采样算法

  • 知识蒸馏 —— 需要再训练的加速路线,与 DeepCache 的无训练思路相对

  • 模型剪枝 —— 另一类通过削减模型计算量加速推理的方法

参考资料

  1. thecvf.com 上的网页 [引用日期2026-10-29]
  2. DeepCache · Hugging Face [引用日期2026-10-29]
  3. DeepCache [引用日期2026-10-29]
  4. DeepCache: Accelerating Diffusion Models for Free [引用日期2026-10-29]
  5. f0b1515be276f6ba82b4f2b25e50bef0-Abstract-Conference [引用日期2026-10-29]
  6. learning-to-cache [引用日期2026-10-29]
  7. diffusers SD推理加速方案的调研实践总结(1) [引用日期2026-10-29]
  8. github.com 上的网页 [引用日期2026-10-29]
  9. f0b1515be276f6ba82b4f2b25e50bef0-Paper-Conference(PDF) [引用日期2026-10-29]
词条评价
词条统计

浏览次数:0 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-28T18:27:22Z

历史版本

本条目引用的词条
U-Net Diffusers 扩散模型 Stable Diffusion DDIM 知识蒸馏 模型剪枝