0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Stable Diffusion采样速度翻倍!仅需10到25步的扩散模型采样算法

智能感知与物联网技术研究所 来源:智能感知与物联网技术研 作者:智能感知与物联网 2022-11-21 11:55 次阅读

清华大学计算机系朱军教授带领的 TSAIL 团队提出 DPM-Solver(NeurIPS 2022 Oral,约前 1.7%)和 DPM-Solver++,将扩散模型的快速采样算法提升到了极致:无需额外训练,仅需 10 到 25 步就可以获得极高质量的采样。

要说 AI 领域今年影响力最大的进展,爆火的 AI 作图绝对是其中之一。设计者只需要输入对图片的文字描述,就可以由 AI 生成一张质量极高的高分辨率图片。目前,使用范围最广的当属 StabilityAI 的开源模型 Stable Diffusion,模型一经开源就在社区引起了广泛的讨论。

然而,扩散模型在使用上最大的问题就是其极慢的采样速度。模型采样需要从纯噪声图片出发,一步一步不断地去噪,最终得到清晰的图片。在这个过程中,模型必须串行地计算至少 50 到 100 步才可以获得较高质量的图片,这导致生成一张图片需要的时间是其它深度生成模型的 50 到 100 倍,极大地限制了模型的部署和落地。

为了加速扩散模型的采样,许多研究者从硬件优化的角度出发,例如 Google 使用 JAX 语言将模型编译运行在 TPU 上,OneFlow 团队 [1] 使用自研编译器将 Stable Diffusion 做到了“一秒出图”。这些方法都基于 50 步的采样算法 PNDM[2],该算法在步数减少时采样效果会急剧下降。

就在几天前,这一纪录又被刷新了!Stable Diffusion 的官方 Demo[3]更新显示,采样 8 张图片的时间从原来的 8 秒钟直接被缩短至了 4 秒钟!快了整整一倍!

9575e1e4-68e0-11ed-8abf-dac502259ad0.png

而基于自研深度学习编译器技术的 OneFlow 团队更是在不降低采样效果的前提下,成功将之前的 “一秒出图” 缩短到了 “半秒出图”!在 GPU 上仅仅使用不到 0.5 秒就可以获得一张高清的图片!相关工作已经发布在[1] 中。

事实上,这些工作的核心驱动力都来自于清华大学朱军教授带领的 TSAIL 团队所提出的DPM-Solver,一种针对于扩散模型特殊设计的高效求解器:该算法无需任何额外训练,同时适用于离散时间与连续时间的扩散模型,可以在 20 到 25 步内几乎收敛,并且只用 10 到 15 步也能获得非常高质量的采样。在 Stable Diffusion 上,25 步的 DPM-Solver 就可以获得优于 50 步 PNDM 的采样质量,因此采样速度直接翻倍!

项目链接:

DPM-Solver: A Fast ODE Solver for Diffusion Probabilistic Model Sampling in Around 10 Steps:https://arxiv.org/abs/2206.00927(NeurIPS 2022 Oral)

DPM-Solver++: Fast Solver for Guided Sampling of Diffusion Probabilistic Models:https://arxiv.org/abs/2211.01095

项目开源代码:https://github.com/LuChengTHU/dpm-solver

项目在线 Demo:https://huggingface.co/spaces/LuChengTHU/dpmsolver_sdm

扩散模型的定义与采样方法

扩散模型通过定义一个不断加噪声的前向过程来将图片逐步变为高斯噪声,再通过定义了一个逆向过程将高斯噪声逐步去噪变为清晰图片以得到采样:

9596931c-68e0-11ed-8abf-dac502259ad0.png

在采样过程中,根据是否添加额外的噪声,可以将扩散模型分为两类:一类是扩散随机微分方程模型(Diffusion SDE),另一类是扩散常微分方程(Diffusion ODE)。两种模型的训练目标函数都一样,通过最小化与噪声的均方误差来训练一个“噪声预测网络”:

95a8fab6-68e0-11ed-8abf-dac502259ad0.png

基于 Diffusion SDE 的采样过程可以视为离散化如下随机微分方程:

95bb02c4-68e0-11ed-8abf-dac502259ad0.png

并且 [4] 中证明,DDPM[5] 是对上述 SDE 的一阶离散化。

而基于 Diffusion ODE 的采样过程可以视为离散化如下常微分方程:

95cb322a-68e0-11ed-8abf-dac502259ad0.png

并且 [6] 中证明,DDIM[7]是对上述 ODE 的一阶离散化。

然而,这些一阶的离散化方法收敛速度极慢,扩散模型的采样通常需要 100 到 1000 次串行计算才可以得到高质量的图片。通常情况下,为了加速扩散模型的采样,研究者往往通过对 Diffusion ODE 使用高阶求解器来进行加速,例如经典的 Runge-Kutta 方法(RK45),这是因为 ODE 不会带来额外的随机性,离散化步长可以相对选取得更大一些。在给定 s 时刻的解后,Runge-Kutta 方法基于离散化如下积分:

95dadee6-68e0-11ed-8abf-dac502259ad0.png

这样的离散化将 Diffusion ODE 整体看做一个黑盒,损失了 ODE 的已知信息,在小于 50 步的情况下就难以收敛了。

DPM-Solver:专为扩散模型设计的求解器

DPM-Solver 基于 Diffusion ODE 的半线性(semi-linear)结构,通过精确且解析地计算 ODE 中的线性项,我们可以得到:

95ec8fec-68e0-11ed-8abf-dac502259ad0.png

剩余的积分项是一个关于时间的复杂的积分。然而,DPM-Solver 的提出者发现,该积分可以通过对 log-SNR(对数信噪比)做换元后得到一个非常简单的形式:

96082ec8-68e0-11ed-8abf-dac502259ad0.png

剩余的积分是一个关于噪声预测模型的指数积分(exponentially weighted integral)。通过对噪声预测模型做泰勒展开,我们可以得到该积分的一个估计:

9619a540-68e0-11ed-8abf-dac502259ad0.png

该估计中存在两项:一项是全导数部分(向量),另一项是系数部分(标量)。DPM-Solver 的另一个核心贡献是,该系数可以通过分部积分被解析地计算:

962ae364-68e0-11ed-8abf-dac502259ad0.png

而剩余的全导数部分则可以通过传统 ODE 求解器的数值方法来近似估计(无需任何求导运算):

9661a340-68e0-11ed-8abf-dac502259ad0.png

基于以上 4 点,DPM-Solver 做到了尽可能地准确计算所有已知项,只对神经网络部分做近似,因此最大程度地减小了离散化误差:

966eb1d4-68e0-11ed-8abf-dac502259ad0.png

此外,基于该推导,我们可以得到 DDIM 本质上是 DPM-Solver 的一阶形式,这也能解释为什么 DDIM 在步数较少时依然可以获得很好的加速效果:

967fe9fe-68e0-11ed-8abf-dac502259ad0.png

在实验中,DPM-Solver 获得了远超其它采样算法的加速效果,仅仅在 15-20 步就几乎可以收敛:

96956df6-68e0-11ed-8abf-dac502259ad0.png

并且在论文中定量的结果显示,DPM-Solver 引入的额外计算量完全可以忽略,即对于步数的加速效果直接正比于时间上的加速效果——因此,基于 25 步的 DPM-Solver,Stable-Diffusion 模型的采样速度直接翻倍!例如,下图展示了不同采样算法在 Stable-Diffusion 上随着步数变化的效果,可见 DPM-Solver 在 10 到 15 步就可以获得非常高质量的采样:

96afc732-68e0-11ed-8abf-dac502259ad0.png

使用 DPM-Solver

DPM-Solver 的使用非常简单,既可以基于作者提供的官方代码,也可以使用主流的 Diffusers 库。例如,基于作者提供的官方代码(https://github.com/LuChengTHU/dpm-solver),只需要 3 行:

96c72aee-68e0-11ed-8abf-dac502259ad0.png

官方代码对 4 种扩散模型都进行了支持:

96d330fa-68e0-11ed-8abf-dac502259ad0.png

并且同时支持 unconditional sampling、classifier guidance 和 classifier-free guidance:

96e60f0e-68e0-11ed-8abf-dac502259ad0.png

而基于 Diffusers 库的 DPM-Solver 同样很简单,只需要定义 scheduler 即可:

96f3548e-68e0-11ed-8abf-dac502259ad0.png

此外,作者团队还提供了一个在线 Demo:https://huggingface.co/spaces/LuChengTHU/dpmsolver_sdm

下图是 15 步的例子,可以看到图像质量已经非常高:

9703f2a8-68e0-11ed-8abf-dac502259ad0.png

相信基于 DPM-Solver,扩散模型的采样速度将不再是瓶颈。

关于作者

DPM-Solver 论文一作是来自清华大学 TSAIL 团队的路橙博士,他在知乎上关于扩散模型的讨论中也写了一篇关于扩散模型原理的入门介绍,目前已有 2000 + 赞:https://www.zhihu.com/question/536012286/answer/2533146567

清华大学 TSAIL 团队长期致力于贝叶斯机器学习的理论和算法研究,是国际上最早研究深度概率生成模型的团队之一,在贝叶斯模型、高效算法和概率编程库方面取得了系统深入的研究成果。团队另一位博士生鲍凡提出Analytic-DPM [8][9],为扩散模型的最优均值和方差给出了简单、令人吃惊的解析形式,获得 ICLR 2022 Outstanding Paper Award。在概率编程方面,机器之心早在 2017 年就报道了该团队发布的 “ZhuSuan” 深度概率编程库(https://zhusuan.readthedocs.io/en/latest/)[10],是国际上最早的面向深度概率模型的编程库之一。另外,值得一提的是,扩散概率模型的两位核心作者宋飏和宋佳铭,本科时均在朱军教授的指导下做科研训练,后来都去了斯坦福大学读博士。论文的合作者周聿浩、陈键飞、李崇轩,也是TSAIL组培养的优秀博士生,周聿浩为在读,陈键飞和李崇轩分别在清华大学计算机系、人民大学高瓴人工智能学院任教。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4456

    浏览量

    90854
  • 模型
    +关注

    关注

    1

    文章

    2720

    浏览量

    47763
  • 深度学习
    +关注

    关注

    73

    文章

    5242

    浏览量

    119979

原文标题:Stable Diffusion采样速度翻倍!仅需10到25步的扩散模型采样算法

文章出处:【微信号:tyutcsplab,微信公众号:智能感知与物联网技术研究所】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    示波器实时采样与等效采样有何区别

    示波器实时采样与等效采样有何区别  示波器实时采样和等效采样是示波器在测量电信号时使用的两种不同的方法。它们在采样
    的头像 发表于 12-21 14:02 444次阅读

    奈奎斯特准则如何运用于基带采样、欠采样和过采样应用

    电子发烧友网站提供《奈奎斯特准则如何运用于基带采样、欠采样和过采样应用.pdf》资料免费下载
    发表于 11-28 09:25 0次下载
    奈奎斯特准则如何运用于基带<b class='flag-5'>采样</b>、欠<b class='flag-5'>采样</b>和过<b class='flag-5'>采样</b>应用

    PCL中基础下采样介绍

    基础下采样 1.1 点云随机下采样 点云下采样是对点云以一定的采样规则重新进行采样,目的是在保证点云整体几何特征不变的情况下,降低点云的密度
    的头像 发表于 11-21 17:03 473次阅读
    PCL中基础下<b class='flag-5'>采样</b>介绍

    什么是中频采样?什么是IQ采样?中频采样和IQ采样的比较和转换

    什么是中频采样?什么是IQ采样?中频采样和IQ采样的比较和转换  中频采样和IQ采样是数字信号处
    的头像 发表于 10-22 11:24 2787次阅读
    什么是中频<b class='flag-5'>采样</b>?什么是IQ<b class='flag-5'>采样</b>?中频<b class='flag-5'>采样</b>和IQ<b class='flag-5'>采样</b>的比较和转换

    中频采样是什么意思?中频采样与基带采样的区别

    中频采样是什么意思?中频采样与基带采样的区别  中频采样与基带采样都是数字信号处理中常用的采样
    的头像 发表于 10-22 11:24 1494次阅读

    Stable Diffusion的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    Stable Diffusion是一种扩散模型diffusion model)的变体,叫做“潜在扩散
    的头像 发表于 09-18 10:06 1634次阅读
    <b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b>的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    CLE Diffusion:可控光照增强扩散模型

    本文提出了新型的可控光照增强框架,主要采用了条件扩散模型来控制任意区域的任意亮度增强。通过亮度控制模块(Brightness Control Module)将亮度信息信息融入Diffusion网络中,并且设计了和任务适配的条件控
    的头像 发表于 09-11 17:20 505次阅读
    CLE <b class='flag-5'>Diffusion</b>:可控光照增强<b class='flag-5'>扩散</b><b class='flag-5'>模型</b>

    Stable Diffusion的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    Stable Diffusion;stable;diffusion;SD;stablediffussion;sadtalker;PC集群;PC Farm;PC农场;GPU集群;GAN
    的头像 发表于 09-07 14:12 1479次阅读
    <b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b>的完整指南:核心基础知识、制作AI数字人视频和本地部署要求

    什么叫采样率 数字信号处理时钟与采样率的关系

    对于相同的信号周期(下述圆),每隔一段时间采样点移动一次为采样率,表格为三种不同采样率。由表知采样率1采样
    发表于 08-17 10:11 2306次阅读
    什么叫<b class='flag-5'>采样</b>率 数字信号处理时钟与<b class='flag-5'>采样</b>率的关系

    树莓派能跑Stable Diffusion了?

    Stable Diffusion是一种文本到图像生成的大型深度学习模型,它可以根据文本的描述生成详细的图像,也可以用于其他任务,如图像修复、图像扩展、图像翻译等。
    的头像 发表于 07-26 11:46 1121次阅读

    美格智能高算力AI模组成功运行Stable Diffusion模型

    研发团队成功在自研高算力模组上运行文生图大模型Stable Diffusion,而这仅仅是我们将思索变为实际行动的第一步,AIGC的大时代,才刚刚开始!
    的头像 发表于 07-21 11:17 618次阅读

    iPhone两秒出图,目前已知的最快移动端Stable Diffusion模型来了

    近日,Snap 研究院推出最新高性能 Stable Diffusion 模型,通过对网络结构、训练流程、损失函数全方位进行优化,在 iPhone 14 Pro 上实现 2 秒出图(512x512
    的头像 发表于 06-12 15:25 556次阅读
    iPhone两秒出图,目前已知的最快移动端<b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b><b class='flag-5'>模型</b>来了

    基于一种移动端高性能 Stable Diffusion 模型

      Stable Diffusion (SD)是当前最热门的文本到图像(text to image)生成扩散模型。尽管其强大的图像生成能力令人震撼,一个明显的不足是需要的计算资源巨大,
    的头像 发表于 06-12 10:14 468次阅读
    基于一种移动端高性能 <b class='flag-5'>Stable</b> <b class='flag-5'>Diffusion</b> <b class='flag-5'>模型</b>

    优化 Stable Diffusion 在 GKE 上的启动体验

    Diffusion 等应运而生。Stable Diffusion 是一个文字生成图像的 Diffusion 模型,它能够根据给定任何文本输
    的头像 发表于 06-03 08:35 592次阅读

    使用OpenVINO™在算力魔方上加速stable diffusion模型

    Stable Diffusion 是 stability.ai 开源的 AI 图像生成模型,实现输入文字,生成图像的功能。Stable Diffus
    的头像 发表于 05-12 09:10 1004次阅读
    使用OpenVINO™在算力魔方上加速<b class='flag-5'>stable</b> <b class='flag-5'>diffusion</b><b class='flag-5'>模型</b>