像奥林匹克精神一样,如何更快地生成高质量图像/视频,一直是生成模型社区的核心追求。早期的探索主要集中在数值分析视角:研究者希望构建更高效的 ODE Solver,例如 DDIM1、DPM-Solver2 和 iPNDM3,从数学上用更少的采样步数逼近目标分布。与此同时,蒸馏(Distillation)也是一种立竿见影的加速手段,只是通常需要额外训练,资源开销也更大。
到了 FLUX、Wan 这类大模型时代,或许也受到 LLM 推理加速思路的启发,缓存(Cache)机制凭借免训练(Training-Free)和即插即用(Plug-and-Play)的特点,在学术界迅速火了起来。当然,量化、分布式推理等路线也在同步发展。但归根结底,大家追求的目标仍然是同一个:在效率和质量之间找到更好的平衡。
本文聚焦缓存机制,结合自己的研究经历,讨论两个问题:缓存方法应该如何评估,以及这条技术路线大致是如何演进的。
打开一篇缓存相关论文,最先看到的通常是两类指标:质量(Visual Quality)和效率(Efficiency)。质量方面,常见指标包括 CLIP Score、ImageReward、VBench 等;对于 Cache 研究,还经常会额外关注重建指标,例如 PSNR 和 LPIPS。相比之下,“效率”这个概念在很多论文里反而有些隐性模糊。
最常见的效率指标是延迟(Latency)和加速比(Speedup)。延迟很直观,本身也是一个合理指标;只是它强依赖硬件,同一个算法在不同 GPU、不同负载、不同显存状态下,结果都可能差很多。加速比看起来也直观,但水分更大,因为它本质上是一个相对指标,非常容易受到基线设置的影响。这里的基线通常就是原始推理步数(num inference steps),也就是我们常说的“Ground Truth”配置。
来看一个简单的算术题。假设我们的目标是生成一张质量达标的图:
- Case A:原始 inference steps 为 50 步。使用 Cache 后,实际只完整计算 10 步,跳过 40 步。此时 Speedup = 50 / 10 = 5.0×。
- Case B:原始 inference steps 为 30 步。对于 FLUX 这类模型来说,30 步通常已经足够。使用 Cache 后,同样只完整计算 10 步,跳过 20 步。此时 Speedup = 30 / 10 = 3.0×。
乍一看,Case A 的 5.0× 似乎比 Case B 的 3.0× 强很多,甚至像是一个更大的突破。但剥离掉基线步数的影响后会发现:两者都只完整运行了 10 次网络,实际推理延迟很可能非常接近。
在 ODE Solver 相关研究中,NFE(Number of Function Evaluations)被广泛用来衡量 Denoising Network 实际完整运行的次数。它是一个相对更“硬”的指标:不直接依赖硬件,也不容易被原始步数设置影响。对于 Step-Level Cache 这类方法来说,NFE 刚好非常合适,因为这类方法真正减少的就是网络完整 forward 的次数。
厘清评估指标后,我们可以简单回顾一下 Cache 技术的发展脉络。扩散模型的生成过程依赖循环去噪,而冗余其实存在于不同粒度之中。早期探索主要关注模型架构内部的冗余。DeepCache4 以及面向 DiT 架构的 Delta-DiT5 都捕捉到了类似现象:深层语义特征在相邻时间步之间变化较慢,而浅层特征变化更快。基于这个观察,我们可以选择性跳过部分深层 Block 的计算,直接复用上一时刻的 Feature Map,从而让网络在单次推理中变得“更薄”。
随着 DiT 架构的普及,研究者进一步把目光放到更细粒度的 Token-Level,代表方法包括 ToCa6 和 DuCa7。这类方法通过识别冗余 Token,并进行剪枝(Pruning)或合并(Merging),从而减少 Attention 等模块的计算量。需要注意的是,无论是 Layer-Level 还是 Token-Level,本质上都是在单次网络推理内部减少 FLOPs,网络运行的总步数并没有改变。因此,NFE 并不是衡量这类方法的最佳指标。
到了 2024 年末至 2025 年,Step-Level Cache 开始集中出现,例如 TeaCache、MagCache、LeMiCa 和 MeanCache。这代表缓存机制从模型内部粒度进一步走向了时间步粒度。
Step-Level Cache 的逻辑更加直接:如果相邻时间步的整体输出变化足够小,为什么不直接跳过整个 Forward Pass?这种对“步数级冗余”的挖掘,让推理过程真正变短了。更重要的是,这一阶段的核心问题从“缓存什么”(What to cache)转向了“什么时候缓存”(When to cache)。
早期 Cache 尝试往往采用朴素的 Uniform Strategy,也就是机械地每隔 $K$ 步计算一次,重点仍然在 Token、Layer 或 Block 这些缓存对象上。而 Step-Level Cache 的关键在于引入更合理的 Heuristic Strategy,通过阈值(threshold)动态决定是否跳过当前步。这种从 Static Uniform 到 Dynamic Heuristic 的转变,让 NFE 的分配更符合生成过程本身的非均匀性,在工程实现和效果稳定性上通常也更有优势。
在这个语境下,NFE 是衡量 Step-Level Cache 效率的更合理标准。

Figure 1. 两种常见扩散模型架构的缓存方式差异。UNet 架构通常缓存 Feature 本身,而 DiT 架构更常缓存变化量/残差(Chen et al.)。为什么 DiT 架构下会出现这样的差异,后续会进一步讨论。
当然,启发式策略并不完美。它本质上是贪心且短视的:一方面,缓存带来的误差会在生成过程中继续向后传递,并可能逐步累积甚至放大,这意味着很可能存在更优的全局策略;另一方面,基于阈值的判定会带来明显的不确定性。阈值和实际 NFE 之间往往是一个不透明的黑盒映射:把阈值设为 0.24 或 0.36,到底会对应多少 NFE?不同 Prompt 下,同一个阈值是否会导致计算量忽高忽低?这些问题在工程部署中都非常关键。
从更理想化的角度看,我们可能还需要进一步追问:Cache 的上限在哪里?在固定 NFE 预算下,缓存策略的最优质量上限是什么?是否还能通过其他方式继续提高这个上限?例如,在当前 DiT 架构下,基于 $\Delta$ 的缓存方式是否已经是最合理的选择?这些问题都还值得继续研究。
持续更新中……
Song, Jiaming, Chenlin Meng, and Stefano Ermon. “Denoising diffusion implicit models.” arXiv preprint arXiv:2010.02502. 2020. ↩︎
Lu, Cheng, et al. “Dpm-solver: A fast ode solver for diffusion probabilistic model sampling in around 10 steps.” Advances in Neural Information Processing Systems 35. 2022: 5775-5787. ↩︎
Zhou, Zhenyu, et al. “Fast ode-based sampling for diffusion models in around 5 steps.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024. ↩︎
Ma, Xinyin, Gongfan Fang, and Xinchao Wang. “Deepcache: Accelerating diffusion models for free.” Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2024. ↩︎
Chen, Pengtao, et al. “$\Delta$-DiT: A Training-Free Acceleration Method Tailored for Diffusion Transformers.” arXiv preprint arXiv:2406.01125. 2024. ↩︎
Zou, Chang, et al. “Accelerating diffusion transformers with token-wise feature caching.” arXiv preprint arXiv:2410.05317. 2024. ↩︎
Zou, Chang, et al. “Accelerating diffusion transformers with dual feature caching.” arXiv preprint arXiv:2412.18911. 2024. ↩︎