【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度

news2024/11/17 7:22:01

近日,阿里云人工智能平台 PAI与华东师范大学陈岑副教授团队合作在深度学习顶级会议 CIKM 2023 上发表 OLSS (Optimal Linear Subspace Search) 算法,这是一种针对扩散模型的采样加速算法。在这篇论文中,扩散模型加速算法的本质被建模成线性子空间的扩张过程,给出了目前方法的统一分析,并基于此设计了新的加速算法,大幅度提升了扩散模型的生成速度。

论文:

Zhongjie Duan, Chengyu Wang, Cen Chen, Jun Huang, Weining Qian. Optimal Linear Subspace Search: Learning to Construct Fast and High-Quality Schedulers for Diffusion Models. CIKM 2023

背景

近年来,在图像生成领域,对于扩散模型的成功我们有目共睹。与基于 GAN 的生成模型不同,扩散模型需要多次调用模型进行前向推理,经过多次迭代,才能得到清晰完整的图像。扩散模型在大幅度提升生成效果的同时,也因其迭代式的生成过程面临严重的计算效率问题。我们希望改进扩散模型的生成过程,减少迭代步数,提升生成速度。

加速算法的统一分析

形式化地,给定一个扩散模型 ϵ θ \epsilon_\theta ϵθ,在一次完整的生成过程中从高斯噪声 x T \boldsymbol x_T xT开始,经过 T T T 步采样,依次得到 x T − 1 , … , x 0 \boldsymbol x_{T-1},\dots,\boldsymbol x_0 xT1,,x0。为了保证生成效果, T T T 在训练时通常被设置的非常大,例如 Stable Diffusion 中是 1000 1000 1000。现有的一些研究工作提出了“调度机”(scheduler)的概念。一个调度机会在 { T , T − 1 , … , 0 } \{T,T-1,\dots,0\} {T,T1,,0} 中取出一个 n n n 步递减的子序列 t ( 1 ) , … , t ( n ) t(1),\dots,t(n) t(1),,t(n),只在这 n n n步中调用模型进行前向推理,构建完整生成过程的近似过程,重构出迭代公式。

c1.png

具体地,在 DDIM 调度机中

x t ( i + 1 ) = α t ( i + 1 ) ( x t ( i ) − 1 − α t ( i ) e t ( i ) α t ( i ) ) + 1 − α t ( i + 1 ) e t ( i ) . \boldsymbol x_{t(i+1)}=\sqrt{\alpha_{t(i+1)}}\left(\frac{\boldsymbol x_{t(i)}-\sqrt{1-\alpha_{t(i)}}\boldsymbol e_{t(i)}}{\sqrt{\alpha_{t(i)}}}\right) +\sqrt{1-\alpha_{t(i+1)}}\boldsymbol e_{t(i)}. xt(i+1)=αt(i+1) (αt(i) xt(i)1αt(i) et(i))+1αt(i+1) et(i).

其中 e t ( i ) \boldsymbol e_{t(i)} et(i) 是模型的输出值。在一些基于常微分方程的调度机中, x t x_t xt 被建模成步骤$ t$ 的函数,进而可以使用常微分方程的数值近似算法——前向欧拉方法求解

x t ( i + 1 ) = x t ( i ) + ( t ( i + 1 ) − t ( i ) ) d x t ( i ) d t ( i ) , \boldsymbol x_{t(i+1)}=\boldsymbol x_{t(i)}+\Big(t(i+1)-t(i)\Big)\frac{\mathrm{d} \boldsymbol x_{t(i)}}{\mathrm{d}t(i)}, xt(i+1)=xt(i)+(t(i+1)t(i))dt(i)dxt(i),

其中

d x t d t = − d α t d t ( x t 2 α t − e t 2 α t 1 − α t ) . \frac{\mathrm{d} \boldsymbol x_{t}}{\mathrm{d}t}=-\frac{\mathrm{d} \alpha_t}{\mathrm{d} t}\left( \frac{\boldsymbol x_t}{2\alpha_t} -\frac{\boldsymbol e_t}{2\alpha_t\sqrt{1-\alpha_t}} \right). dtdxt=dtdαt(2αtxt2αt1αt et).

PNDM 调度机则是基于线性多步方法构造了一个伪数值近似算法

x t ( i + 1 ) = α t ( i + 1 ) α t ( i ) x t ( i ) − 1 α t ( i ) α t ( i ) ′ e t ( i ) ′ , \boldsymbol x_{t(i+1)}=\frac{\sqrt{\alpha_{t(i+1)}}}{\sqrt{\alpha_{t(i)}}}\boldsymbol x_{t(i)}-\frac{1}{\sqrt{\alpha_{t(i)}}}\alpha_{t(i)}'\boldsymbol e_{t(i)}', xt(i+1)=αt(i) αt(i+1) xt(i)αt(i) 1αt(i)et(i),

其中

e t ( i ) ′ = 1 24 ( 55 e t ( i ) − 59 e t ( i − 1 ) + 37 e t ( i − 2 ) − 9 e t ( i − 3 ) ) , \boldsymbol e_{t(i)}'=\frac{1}{24}(55 \boldsymbol e_{t(i)}-59 \boldsymbol e_{t(i-1)}+37 \boldsymbol e_{t(i-2)}-9 \boldsymbol e_{t(i-3)}), et(i)=241(55et(i)59et(i1)+37et(i2)9et(i3)),

α t ( i ) ′ = α t ( i + 1 ) − α t ( i ) ( 1 − α t ( i + 1 ) ) α t ( i ) + ( 1 − α t ( i ) ) α t ( i + 1 ) . \alpha_{t(i)}'=\frac{\alpha_{t(i+1)}-\alpha_{t(i)}} {\sqrt{(1-\alpha_{t(i+1)})\alpha_{t(i)}}+\sqrt{(1-\alpha_{t(i)})\alpha_{t(i+1)}}}. αt(i)=(1αt(i+1))αt(i) +(1αt(i))αt(i+1) αt(i+1)αt(i).

观察以上调度机中的迭代公式,我们不难发现
x t ( i + 1 ) ∈ span { x t ( i ) , e t ( 1 ) , … , e t ( i ) } . \boldsymbol x_{t(i+1)}\in\text{span}\{\boldsymbol x_{t(i)},\boldsymbol e_{t(1)},\boldsymbol \dots,\boldsymbol e_{t(i)}\}. xt(i+1)span{xt(i),et(1),,et(i)}.

用数学归纳法易证

x t ( i + 1 ) ∈ span { x t ( 1 ) , e t ( 1 ) , … , e t ( i ) } . \boldsymbol x_{t(i+1)}\in\text{span}\{\boldsymbol x_{t(1)},\boldsymbol e_{t(1)},\boldsymbol \dots,\boldsymbol e_{t(i)}\}. xt(i+1)span{xt(1),et(1),,et(i)}.

这其实揭示了调度机设计的本质——在由模型输出值和初始高斯噪声张成的向量空间中求解下一步的 x T \boldsymbol x_T xT。不同的调度机仅在迭代公式的系数上存在不同,我们决定设计一个新的调度机,将迭代公式中的系数设计成可训练的,使其对应的近似计算过程更加精确。

算法架构

假定 n n n个步骤 { t ( 1 ) , … , t ( n ) } \{t(1),\dots,t(n)\} {t(1),,t(n)} 已经被选出,在第 i i i 步,我们已经得到了 x t ( 1 ) , … , x t ( i ) \boldsymbol x_{t(1)},\dots,\boldsymbol x_{t(i)} xt(1),,xt(i) 以及 e t ( 1 ) , … , e t ( i ) \boldsymbol e_{t(1)},\dots,\boldsymbol e_{t(i)} et(1),,et(i),考虑计算 x t ( i + 1 ) \boldsymbol x_{t(i+1)} xt(i+1) 的近似值 x ^ t ( i + 1 ) \hat{\boldsymbol x}_{t(i+1)} x^t(i+1),根据我们上文中的分析, x ^ t ( i + 1 ) \hat{\boldsymbol x}_{t(i+1)} x^t(i+1) 应当在由 { x t ( 1 ) , e t ( 1 ) , … , e t ( i ) } \{\boldsymbol x_{t(1)},\boldsymbol e_{t(1)},\boldsymbol \dots,\boldsymbol e_{t(i)}\} {xt(1),et(1),,et(i)} 张成的线性子空间中求解,即

x ^ t ( i + 1 ) = w i , 0 x t ( 1 ) + ∑ j = 1 i w i , j e t ( j ) . \hat{\boldsymbol x}_{t(i+1)}=w_{i,0}\boldsymbol x_{t(1)}+\sum_{j=1}^i w_{i,j}\boldsymbol e_{t(j)}. x^t(i+1)=wi,0xt(1)+j=1iwi,jet(j).

为了确定最佳的参数 { w i , j } \{w_{i,j}\} {wi,j},我们需要对其进行训练。考虑到训练参数较少,我们并不采用基于梯度的训练方法,而是直接使用最小二乘法求最优解。首先采集来自完整生成过程的变量 x t ( i + 1 ) \boldsymbol x_{t(i+1)} xt(i+1),令损失函数 L = ∣ ∣ x ^ t ( i + 1 ) − x t ( i + 1 ) ∣ ∣ 2 2 \mathcal L=||\hat{\boldsymbol x}_{t(i+1)}-\boldsymbol x_{t(i+1)}||_2^2 L=∣∣x^t(i+1)xt(i+1)22,使用基于 QR 分解的最小二乘求解算法,在保证数值稳定性的前提下计算出最优参数,构成新的调度机算法。我们称这个新的调度机算法为 OLSS (Optimal Linear Subspace Search)。

我们在下图中提供了这个过程的几何解释,在完整生成过程中 x t − 1 ∈ span { x t , e t } \boldsymbol x_{t-1}\in\text{span}\{\boldsymbol x_t, \boldsymbol e_t\} xt1span{xt,et};由 DDIM 调度机构造的近似过程中,若跳过 x t \boldsymbol x_t xt,那么 x ^ ∗ t − 1 ∈ span x ∗ t + 1 , e _ t + 1 ; \hat{\boldsymbol x}*{t-1}\in\text{span}{\boldsymbol x*{t+1}, \boldsymbol e\_{t+1}}; x^t1spanxt+1,e_t+1而在由 OLSS 构造的近似过程中,若跳过 x t \boldsymbol x_t xt,则在一个更高维线性子空间 span { x T , e T , … , e t + 1 } \text{span}\{\boldsymbol x_T,\boldsymbol e_T,\dots,\boldsymbol e_{t+1}\} span{xT,eT,,et+1}中计算 x ^ t − 1 \hat{\boldsymbol x}_{t-1} x^t1,具有更低的误差

截屏2023-10-23 11.50.20.png

此外,为了进一步降低这个算法的误差,我们还对 { t ( 1 ) , … , t ( n ) } \{t(1),\dots,t(n)\} {t(1),,t(n)} 进行了调整。具体地,设计了一个启发式的路径规划算法,分为以下三部分:

截屏2023-10-23 11.51.59.png

截屏2023-10-23 11.52.38.png

截屏2023-10-23 11.53.19.png

其中算法 1 利用贪心策略搜索下一步的 t ( i ) t(i) t(i),算法 2 调用算法 1 搜索在误差上届 D D D 下是否存在这样的路径,算法 3 调用算法 2 搜索最低的误差上界。整个路径规划算法可以使 n n n 步中的最大误差最小。

实验结果

我们在主流的 Stable Diffusion 1.4 和 Stable Diffusion 2.1 上进行了实验,测试了包括 OLSS 和 OLSS-P(无路径规划版本)在内的 8 个调度机算法,使用 5 步、10 步、20 步的算法与 100 步、1000 步的算法比较,FID 结果(越小越好)如下表所示:

截屏2023-10-23 11.55.52.png

我们可以明显看出,在同等步数下,OLSS 比其他调度机算法能够实现更高的图像质量,这证明了 OLSS 方法的巨大优越性。此外,从以下例子中我们也可以明显看出 OLSS 在极少步数下的效果:

截屏2023-10-23 11.57.29.png

目前 OLSS 已经在 EasyNLP(https://github.com/alibaba/EasyNLP/tree/master/diffusion/olss_scheduler)开源。欢迎广大用户试用!

参考文献

  • Bingyan Liu, Weifeng Lin, Zhongjie Duan, Chengyu Wang, Ziheng Wu, Zipeng Zhang, Kui Jia, Lianwen Jin, Cen Chen, Jun Huang. Rapid Diffusion: Building Domain-Specific Text-to-Image Synthesizers with Fast Inference Speed. In the 61st Annual Meeting of the Association for Computational Linguistics (Industry Track).
  • Chengyu Wang, Minghui Qiu, Taolin Zhang, Tingting Liu, Lei Li, Jianing Wang, Ming Wang, Jun Huang, Wei Lin. EasyNLP: A Comprehensive and Easy-to-use Toolkit for Natural Language Processing. In the 2022 Conference on Empirical Methods in Natural Language Processing (Demo Track).
  • Jiaming Song, Chenlin Meng, and Stefano Ermon. 2020. Denoising Diffusion Implicit Models. In International Conference on Learning Representations.
  • Tero Karras, Miika Aittala, Timo Aila, and Samuli Laine. 2022. Elucidating the design space of diffusion-based generative models. Advances in Neural Information Processing Systems 35 (2022), 26565–26577.
  • Luping Liu, Yi Ren, Zhijie Lin, and Zhou Zhao. 2021. Pseudo Numerical Methods for Diffusion Models on Manifolds. In International Conference on Learning Representations.
  • Qinsheng Zhang and Yongxin Chen. 2022. Fast Sampling of Diffusion Models with Exponential Integrator. In The Eleventh International Conference on Learning Representations.
  • Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li, and Jun Zhu. 2022. 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.
  • Cheng Lu, Yuhao Zhou, Fan Bao, Jianfei Chen, Chongxuan Li, and Jun Zhu. 2022. Dpm-solver++: Fast solver for guided sampling of diffusion probabilistic models. arXiv preprint arXiv:2211.01095 (2022).

论文信息

论文标题:Optimal Linear Subspace Search: Learning to Construct Fast and High-Quality Schedulers for Diffusion Models
论文作者:段忠杰、汪诚愚、陈岑、黄俊、钱卫宁
论文pdf链接:https://arxiv.org/abs/2305.14677

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1140139.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软件安装环境配置】vscode 安装界面没有出现安装路径的选择 的解决,以及vscode的删除的问题

由于vscode 没有删除干净,就会出现vscode 安装的时候,没有出现安装路径的界面,所以可以来到vscode的安装路径,点击 unins000.exe 文件就可以 实现将vscode 相关的文件删除, 如果是删除了整个vscode 安装下的文件&…

Python 算法高级篇:跳跃表和布隆过滤器的应用

Python 算法高级篇:跳跃表和布隆过滤器的应用 引言 1. 跳跃表( Skip List )1.1 跳跃表的基本结构1.2 跳跃表的操作1.3 Python 中的跳跃表实现 2. 布隆过滤器( Bloom Filter )2.1 布隆过滤器的基本结构2.2 布隆过滤器的…

看懂分布式追踪系统原理及实践

前言 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本文将为你揭晓…

2023年集成电路还缺人吗?集成电路产业人才供需研讨会

10月20日,移知教育创始人团长受邀参与由ARM举办的《集成电路产业人才供需研讨会》,同样受邀参与的还有上海大学、华东理工大学、华东师范大学、上海工程技术大学、上海人社高级职称评审专家等等,高校负责人以及行业专家应邀参加了本次研讨会。…

JVM工具使用(jstack + jstat + jmap)

jstack: jstack是java虚拟机自带的一种堆栈跟踪工具 命令格式: jstack [-l] pid (pid 可以使用jps查看) 例:jstack 44076 &>$(date %H%M)_44076.jstack.log 线程状态: NEW,未启动的。…

LIO-SAM算法解析

文章目录 简介算法概述1.点云去畸变1.1 主要功能1.2 主要流程 2.特征提取3.IMU预积分4.地图优化5.算法评估 简介 LIO-SAM在lego-loam的基础上新增了对IMU和GPS的紧耦合,采用一个因子图对位姿进行优化,包括IMU因子,激光里程计因子&#xff0c…

企业如何选择设备管理系统?

1、需求为王,列出你的需求清单 每个企业的设备都不尽相同,自然对设备管理系统的需求也不一样。因此,需要充分明确自己的需求和目标,清晰地列出需求清单,然后再逐一对照供应商的产品功能,看是否满足自身各业…

leetCode 76. 最小覆盖子串 + 滑动窗口 + 图解(详细)

76. 最小覆盖子串 - 力扣(LeetCode) 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 注意: 对于 t 中重复字符,我们寻…

【AICFD案例操作】潜艇阻力AI预测分析

AICFD是由天洑软件自主研发的通用智能热流体仿真软件,用于高效解决能源动力、船舶海洋、电子设备和车辆运载等领域复杂的流动和传热问题。软件涵盖了从建模、仿真到结果处理完整仿真分析流程,帮助工业企业建立设计、仿真和优化相结合的一体化流程&#x…

3D开发工具HOOPS:助力Navisworks数据处理与3D模型可视化!

在过去的25年中,Tech Soft 3D一直以其卓越的3D技术不断帮助全球600多家客户实现创新,这些客户包括HEXAGON、SolidWorks、SIEMENS、Aras、ANSYS、AVEVA等各行业领军企业。 该公司拥有四款原生产品,分别是:HOOPS Exchange、HOOPS C…

程序员就业时要考虑什么?

要考虑的事情可多了,但很多毕业生都没有这个意识,光想着把自己给卖了。 我还记得自己刚毕业那年,光想着工资高,结果进了熬夜“大班”——一家外包公司。有项目的时候真不是996这么简单,每天是9126,赶上中秋…

jsp获取数据 jsp直接获取后端数据 获取input选中的值 单选 没 checked属性

let str0${showList}; let str1${showList}; 然后可以通过JSON.parse() 转 获取input选中的值 //goodsType 按类别 goods按货品var oneType $("input[ namecriteria1 ] ").val();//count按数量 totalprice按费用var twoType $("input[ namecriteria2 ] &q…

如何选择合适的全渠道智慧收银解决方案?亿发推荐智能收银一体化系统

在数字化时代,品牌面临着越来越多的挑战和机遇。为了更好地适应市场的变化,提高竞争力,越来越多的企业选择引入新零售经营解决方案,以实现定制化的用户运营,沉淀私域流量池,提升流量的高效转化,形成一个完善…

elementUI 特定分辨率(如1920*1080)下el-row未超出一行却换行

在1920*1080分辨率下, el-col 内容未超出 el-col 宽度,el-col 不足以占据一行,el-row 却自动换行了(其他分辨率没有这个问题)。 截图: 排查: el-col 内容没有溢出;没有多余的 pad…

一次不接受官方建议导致的事故

记录一下 一次Elasticsearch集群事故分析、排查、处理 背景介绍 事故发生的ElasticSearch集群共有7台机器: 10.163.204.19310.163.204.19410.163.204.19510.163.220.7310.163.220.7410.163.220.22010.163.220.221 其中193、194、195的机器配置一样,具…

Boris FX Mocha Pro 2023:Mac/win全能影像处理神器

Boris FX Mocha Pro 2023是一款广受欢迎的影像处理软件,它凭借其强大的功能和卓越的性能,成为了影视后期、广告制作、动画设计等领域的必备工具。无论您是专业的影视制作人员,还是初入行的新手,Boris FX Mocha Pro 2023都能为您的…

医院安全(不良)事件管理系统源代码(B/S架构):事件全程监管 质量持续改进

医院安全(不良)事件管理系统采用无责的、自愿的填报不良事件方式,有效地减轻医护人员的思想压力,实现以事件为主要对象,可以自动、及时、实际地反应医院的安全、不良、近失事件的情况,更好地掌握不良事件的…

三、【常用的几种抠图方式二】

文章目录 橡皮擦魔术橡皮擦背景橡皮擦选择被遮住(调整边缘)主体抠图 橡皮擦 直接擦除图片的像素,或者填充背景色,适用于要求不高的图片。 魔术橡皮擦 擦出颜色相近的内容,适用于主体跟背景颜色相差较大的情况&#x…

conda 实践

1. 环境部署 1.1. 下载 anaconda 安装包 下面这个网址查找自己需要的版本 https://repo.anaconda.com/archive/ 或者手动下载。 wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh 1.2. 执行安装程序 #安装依赖: sudo yum install bzip2…

手把手教你入门Three.js(初识篇)

Three.js入门篇 一、Three.js和webGL的介绍二、开发和学习环境三、 三个基本概念1. 场景Scene2. 相机Camera3. 渲染器Renderer 四、三维坐标系五、材质Material六、光源1. 点光源2. 环境光3. 平行光: 七、常见几何体八、渲染器-设置设备像素比九、渲染器-锯齿属性 一、Three.js…