一、背景介绍
-
论文链接:https://arxiv.org/abs/2312.00858
-
代码链接:https://github.com/horseee/DeepCache
-
DeepCache 是新加坡国立大学一个 diffusion 加速的方法,该方法不同于以往剪枝算法,类似于路由的路径剪枝,无需通过 retrain 恢复精度,这样极大保留 diffusion 的泛化性。
-
该方法在 stable diffusion 取得 2.3x 加速且精度不掉点,在 LDM 取得 7.0x 加速不掉点。
二、方法介绍
-
Diffusion 模型加速原理:diffusion model 除一致性 model 外普遍需要多步采样(少则50步,多则1000步)来完成图片生成;作者发现其中相邻步对应的 feature 存在高度的相似性,从而萌生当前步的 feature 是否能部分服用前一步的 feature 的想法,这样就能减少计算量,完成模型加速。
-
DeepCache 架构:通过复用前一步的 feature 可以节省当前步的计算量,整个方法比较简单。
-
Cache 策略:
-
Uniform 1:N:每 N 步中,后 N-1 步复用第一步 feature。
-
Non-uniform 1:N:主要为 long-term 采样器(如DDPM)设计的,在低相似区域少cache多计算的策略,有利于提高剪枝效果
-
三、实验结果
-
SOTA 对比实验: 在 LDM 和 Stable Diffusion 均取得比较明显的效果。
四、一些思考
-
DeepCache 比较创新提出了 feature 相似的问题,通过 Cache Feature 的方法极大的加速的模型推理。
-
DeepCache 无需 finetune 的加速方法,特别适合 pretrain model,不破坏原有的泛化性。
-
DeepCache 应该会有不少后续工作,目前的方法并没有特别精度优化,而且是一些 static 的策略,未来一定会出现更加智能和动态的加速的算法。