DeepCache

2023-12-17

这里介绍一种名为DeepCache的无需训练的方法,它利用了去噪过程中模型深层特征的相似性,通过缓存(Cache)来避免重新计算网络中的深层特征,仅计算网络的浅层,从而减少计算量。实验展示了DeepCache相较于需要重新训练的现有剪枝和蒸馏方法的优越性,以及它与当前采样技术例如DDIM,PLMS的兼容性。 无损加速扩散模型!无训练、无成本的AI神器开源

简介

近几年,Diffusion Models在图像合成领域获得了前所未有的关注。在序列式的生成过程中,多步的计算和庞大的模型尺寸会带来相当大的成本。而传统的模型压缩技术,例如剪枝、蒸馏通常又涉及到重新训练,导致了额外的成本和可行性上的挑战。本文介绍了一种名为DeepCache的 无需训练 的方法,它利用了去噪过程中模型深层特征的相似性,通过缓存(Cache)来避免重新计算网络中的深层特征,仅计算网络的浅层,从而减少计算量。在没有任何额外训练的情况下,这种策略使得Stable Diffusion v1.5的速度提升了2.3倍,CLIP分数仅下降了0.05;而LDM-4-G的速度提升了4.1倍,且FID在ImageNet仅下降0.22。实验展示了DeepCache相较于需要重新训练的现有剪枝和蒸馏方法的优越性,以及它与当前采样技术例如DDIM,PLMS的兼容性。DeepCache目前支持Stable Diffusion v1.5/v2.1/XL等主流扩散模型。

DeepCache: Accelerating Diffusion Models for Free

Xinyin Ma, Gongfan Fang, Xinchao Wang  Learning and Vision Lab, National University of Singapore

论文:https://arxiv.org/abs/2312.00858

代码:github.com/horseee/DeepCache

项目主页:https://horseee.github.io/Diffusion_DeepCache/

方法

图1:扩散模型多步计算中的深层特征冗余

特征冗余 :扩散模型的合成是一个多步的序列过程,在每一步中我们都要完整执行一次模型的前馈计算。然而,研究者发现在相近的步骤中(例如第20步和第19步),模型的深层特征变化十分微小,这就引入了一个新的探索问题,即是否需要反复地计算这些特征。在这一基础上,本文进一步分析了三种主流模型:LDM-4-G,DDPM,Stable Diffusion中的特征相似性,如图1(b)所示,相邻时间步均呈现出了高度的特征相似性。这种冗余现象启发了一种新的加速方式,即本文提出的DeepCache。

算法核心 :DeepCache的核心想法是避免重复计算冗余的深层特征,因此算法的整体框架非常简洁。如图2所示,我们在部分步骤执行完整的网络计算,并缓存深层特征;而在其他步骤仅计算浅层特征,并利用缓存直接得到结果。这一过程允许我们跳过网络中的大部分层,从而显著降低计算量。通过的实验可以发现,Diffusion Models中的绝大多数层都可以借助DeepCache进行跳过,同时不影响最终的生成质量。

图2:DeepCache方法示意图

Uniform与Non-Uniform加速策略 :基于上述基本框架,我们可以很自然地拓展出Uniform和非Uniform的加速策略。Uniform加速策略采用了1:N的计算分配,即1步完整计算获得缓存,N步快速计算得到结果。例如在Stable Diffusion上,我们采用1:5的加速策略可以得到2.3倍实际速度提升,同时性能几乎无损。在另一方面,非Uniform策略则具有更大的设计空间。先前提到,网络中不同步骤之间存在特征冗余,然而这种冗余的分布是有所差异的。Non-Uniform策略则针对特征冗余的特点,给高冗余步骤分配更少的Cache更新次数,给低冗余区域分配更多的Cache更新,这会带来显著的性能提升。

实验

定量分析

本文在Stable Diffusion, LDM (ImageNet),DDPM (CIFAR, LSUN)等主流模型上进行深入验证。

LDM - ImageNet :例如在ImageNet上,我们的算法能够不依赖任何额外训练,实现几乎无损的压缩加速效果。例如基于1:2的加速策略,我们的方法实现了和剪枝方法略优的加速比(DeepCache1.88x对比剪枝1.51x),得到了更优的FID指标(DeepCache3.39对比剪枝9.27)。除此以外,DeepCache可以自由地权衡加速比和性能,例如提高缓存的间隔我们可以将加速比提升到10倍,此时算法的FID指标依然优于基于小规模训练的压缩方法(剪枝、蒸馏)。另外,引入非均匀的Non-Uniform策略,我们可以以同样的加速比,得到更优的图像质量。

Stable Diffusion :在Stable Diffusion v1.5模型上,我们使用了CLIP Score对生成质量进行评估。并比较了压缩模型(DeepCache)与压缩步数(采样加速方法PLMS)的性能。减少采样步数是扩散模型加速中的一种主流方法,与本文提出的压缩模型策略是相互适配的。DeepCache展现出了和减少采样步数相似的加速性能,例如2.15倍加速的DeepCache甚至能取得优于步数减少一半的PLMS算法。

更多CIFAR, LSUN Church, LSUN Bedroom的结果可见论文实验部分。

分析实验

Cache策略分析 :我们进一步分析了Stable Diffusion上不同Cache策略带来的加速效果,可以看到Non-Uniform策略往往能够提供最有的加速速率以及CLIP Score。但是相对来说1:N Uniform的加速方法是一种通用且实现简洁的技术,且仅有一个超参数N。在1:N的Uniform加速策略中,我们可以自由调整N,即缓存间隔来提升模型速度。本文可视化了N从2到8的设置下,生成图像的视觉效果。可以明显的看到,随着Cache间隔N逐渐增大,图片的内容会逐渐变化,但仍然能够维持整体视觉质量。

可视化

下图可视化了Stable Diffusion v1.5, LDM (ImageNet), DDPM (LSUN Church & Bedroom)等模型的生成效果,上图是原始模型生成结果,下图是DeepCache加速后的模型生成结果,具体的加速比可见图片标题。        whaosoft aiot http://143ai.com

代码实现

DeepCache算法的核心思想非常简单,本文提供了Stable Diffusion v1.5/v2.1以及Stable Diffusion XL的代码实现,具体可见:

https://github.com/horseee/DeepCache

算法在使用体验上与原始的Diffusers pipline几乎完全一致。我们仅需要用DeepCache提供的Pipeline替换Diffusers库的Pipeline,即可实现扩散模型加速。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DeepCache 的相关文章

随机推荐

  • DSP捕获输入简单笔记

    程序 cap c Created on 2023年12月16日 Author My PC include cap h void cap init EALLOW SysCtrlRegs PCLKCR3 bit GPIOINENCLK 1 gp
  • 蓝禾2024届秋招/校招内推信息/内推码

    公司名称 蓝禾 内推码 SQDPVPM 内推来源 内推鸭小程序 官方招聘网站 https lanhevip jobs feishu cn index m position external referral code SQDPVPM
  • 007 Windows组策略

    组策略的应用 1 基本概念 组策略是一组策略的集合 组策略 英语 Group Policy 是 微软 Windows NT 家族操作系统的一个特性 它可以控制 用户帐户 和计算机帐户的工作环境 组策略提供了操作系统 应用程序 和 活动目录
  • 剑指 Offer(第2版)面试题 35:复杂链表的复制

    剑指 Offer 第2版 面试题 35 复杂链表的复制 剑指 Offer 第2版 面试题 35 复杂链表的复制 解法1 模拟 剑指 Offer 第2版 面试题 35 复杂链表的复制 题目来源 48 复杂链表的复刻 解法1 模拟 算法 复制原
  • mmpose 使用笔记

    目录 自己整理的可以跑通的代码 图片demo 检测加关键点 自己整理的可以跑通的代码 最强姿态模型 mmpose 使用实例 CSDN博客 图片demo python demo image demo py tests data coco 00
  • 2023“楚怡杯”湖南省赛“信息安全管理与评估“--数字取证调查(高职组)

    2023 楚怡杯 湖南省 信息安全管理与评估 高职组 任务书 2023 楚怡杯 湖南省 信息安全管理与评估 高职组 任务书 第一阶段竞赛项目试题 第二阶段竞赛项目试题 第二部分 数字取证调查 需
  • python快速实现简单的图片透明化

    整张图片透明化的完整代码如下 import os import glob from PIL import Image def convert to transparent image path output folder image Ima
  • Llama 架构分析

    从代码角度进行Llama 架构分析 Llama 架构分析 前言 Llama 架构分析 分词 网络主干 DecoderLayer
  • 牛客小白月赛83 解题报告

    题目链接 https ac nowcoder com acm contest 72041 question A题 解题思路 签到 代码 include
  • OSG中几何体的绘制(二)

    5 几何体操作 在本章的前言中就讲到 场景都是由基本的绘图基元构成的 基本的绘图基元构成简单的几何体 简单的几何体构成复杂的几何体 复杂的几何体最终构造成复杂的场景 当多个几何体组合时 可能存在多种降低场景渲染效率的原因 在很多3D引擎中
  • 中文星期几&十二时辰

    输入年月日输出中文星期败 输入时间字符串 输出十二时辰 笔记模板由python脚本于2023年12月16日 23 39 04创建 本篇笔记适合 熟悉python字符串类型str 并可以熟练应用 的coder翻阅 学习的细节是欢悦的历程 Py
  • 时序预测 | Python实现GRU电力需求预测

    时序预测 Python实现GRU电力需求预测 目录 时序预测 Python实现GRU电力需求预测 预测效果 基本描述 程序设计 参考资料
  • 软件工程期末复习+数据仓库ETL

    一 软件工程 请用基本路径测试方法为下列程序设计测试用例 并写明中间过程 第1步 画出流程图 1 菱形用于条件判断 用在有分支的地方 2 矩形表示一个基本操作 3 圆形是连接点 第2步 计算程序环路复杂性 流图G的环路复杂度V G 定义为
  • 十七、如何将MapReduce程序提交到YARN运行

    1 启动某个节点的某一个用户 hadoop node1 jps 13025 Jps hadoop node1 yarn daemon start resourcemanager hadoop node1 jps 13170 Resource
  • ES6 面试题 | 14.精选 ES6 面试题

    前端开发工程师 主业 技术博主 副业 已过CET6 阿珊和她的猫 CSDN个人主页 牛客高级专题作者 在牛客打造高质量专栏 前端面试必备 蓝桥云课签约作者 已在蓝桥云课上架的前后端实战课程 Vue js 和 Egg js 开发企业级健康管理
  • 你好,C++(3)2.1 一个C++程序的自白

    第2部分 与C 第一次亲密接触 在浏览了C 三分天下 的世界版图之后 便对C 有了基本的了解 算是一只脚跨入了C 世界的大门 那么 怎样将我们的另外一只脚也跨入C 世界的大门呢 是该即刻开始编写C 程序 还是 正在我们犹豫的时候 便看到前面
  • 剑指 Offer(第2版)面试题 34:二叉树中和为某一值的路径

    剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 解法1 深度优先搜索 剑指 Offer 第2版 面试题 34 二叉树中和为某一值的路径 题目来源 47 二叉
  • ES6 面试题 | 13.精选 ES6 面试题

    前端开发工程师 主业 技术博主 副业 已过CET6 阿珊和她的猫 CSDN个人主页 牛客高级专题作者 在牛客打造高质量专栏 前端面试必备 蓝桥云课签约作者 已在蓝桥云课上架的前后端实战课程 Vue js 和 Egg js 开发企业级健康管理
  • 时序预测 | Python实现GRU-XGBoost组合模型电力需求预测

    时序预测 Python实现GRU XGBoost组合模型电力需求预测 目录 时序预测 Python实现GRU XGBoost组合模型电力需求预测 预测效果 基本描述 程序设计 参考资料
  • DeepCache

    这里介绍一种名为DeepCache的无需训练的方法 它利用了去噪过程中模型深层特征的相似性 通过缓存 Cache 来避免重新计算网络中的深层特征 仅计算网络的浅层 从而减少计算量 实验展示了DeepCache相较于需要重新训练的现有剪枝和蒸