【深度学习】Progressive Distillation for Fast Sampling of Diffusion Models

论文:https://arxiv.org/abs/2202.00512v2

这篇论文提出了一种"渐进式蒸馏"(Progressive Distillation)的方法,来大幅降低用于生成对抗网络(GAN)的扩散模型(Diffusion Model)在推理阶段的采样步数,从而提高其推理效率。主要贡献有:

  1. 提出了一种新的扩散模型参数化方式,使得模型在采样步数较少时也能保持稳定。

  2. 提出了一种渐进式的蒸馏算法,将原先需要几千步采样的扩散模型蒸馏成只需4步采样就能生成高质量样本的新模型。

  3. 证明了整个渐进式蒸馏过程的计算开销不会超过训练原始模型的开销,从而实现了在训练和推理阶段都高效的生成建模。

论文在标准的图像生成基准测试上,如CIFAR-10、ImageNet和LSUN,展示了其所提方法的有效性。通过渐进式蒸馏,论文将原始需要8192步采样的模型成功蒸馏为只需4步采样就能取得接近的生成质量的新模型,大幅提高了扩散模型的推理效率。

(1)新的扩散模型参数化方式及其稳定性:
在论文中,为了提高扩散模型在使用较少采样步骤时的稳定性,提出了几种新的参数化方式。这些参数化方式包括:

  • 直接预测去噪后的样本 ( \hat{x} )。
  • 通过神经网络的两个独立输出通道分别预测样本 ( \hat{x} ) 和噪声 ( \hat{\epsilon} ),然后根据它们合并预测,平滑地在直接预测 ( x ) 和通过 ( \epsilon ) 预测之间插值。
  • 预测一个新变量 ( v ),其定义为 ( v \equiv \alpha_t \epsilon - \sigma_t x ),从而得到 ( \hat{x} = \alpha_t z_t - \sigma_t \hat{v} \theta(z_t) )。

这些参数化方式之所以能够保持稳定,是因为它们能够在信号噪声比(SNR)变化时保持对 ( \hat{x} ) 的稳定预测。特别是预测 ( v ) 的方式,由于它使得 DDIM 步骤的大小与 SNR 无关,因此在低 SNR 条件下仍然能够保持稳定。

(2)关于采样步骤的问题:
在传统的扩散模型(如 DDPM)中,生成高质量样本通常需要大量的采样步骤,这些步骤可能达到数百或数千步。然而,通过渐进式蒸馏方法,可以将这些需要大量步骤的模型转化为只需少量步骤(例如4步)的新模型,同时保持样本质量。这种方法通过迭代地将一个需要较多步骤的模型(称为教师模型)蒸馏成一个需要较少步骤的学生模型,每次迭代都将采样步骤减半,直到达到所需的采样步骤数量。

(3)渐进式蒸馏过程的计算开销:
论文中提出,渐进式蒸馏过程的计算开销不会超过训练原始模型的开销。这是通过以下方式实现的:

  • 在每次蒸馏迭代中,学生模型的参数是从教师模型复制而来,并且使用的训练数据是从训练集中采样得到的带噪声数据。
  • 蒸馏过程中的目标设置与标准训练不同。在蒸馏中,学生模型的目标是通过教师模型进行两次 DDIM 采样步骤得到的 ( \tilde{x} ),而不是原始数据 ( x )。这意味着学生模型只需要在一个步骤中预测出与教师模型两次步骤相同的结果。
  • 蒸馏过程中,每一步的学生模型训练所需的参数更新次数是固定的,并且随着采样步骤的减少,学生模型的复杂度也在减少,这使得每次迭代的训练时间得以控制。

通过这种方式,整个蒸馏过程可以在与原始模型训练相当的时间内完成,从而实现了在训练和推理阶段都高效的生成建模。这种方法不仅减少了生成高质量样本所需的时间,而且还降低了在实际应用中运行扩散模型的计算成本。

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

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

相关文章

配置vscode用于STM32编译,Debug,github上传拉取

配置环境参考: Docs 用cubemx配置工程文件,用VScode打开工程文件。 编译的时候会有如下报错: vscode出现process_begin :CreateProcess failed 系统找不到指定文件 解决方案:在你的makefile中加上SHELLcmd.exe就可以了 参考…

java发送请求-cookie有关代码

在初始化后添加cookie的代码 用这个httpclients类调custom方法,进行代码定制化 找和cookie有关的方法,设置默认的cookie存储信息 入参是接口 将入参粘贴后找方法,用new实现这个接口 这个方法是无参空构造,可以使用 设置了cookie …

【C++】RapidJSON 设置支持 std::string,防止编译报错

问题 rapidjson 创建 json 数据,使用 std::string 字符串进行赋值,编译时,抱一堆错误 .... rapidjson/include/rapidjson/document.h:690:5: note: candidate expects 0 arguments, 1 provided [build] make[2]: *** [main/CMakeFiles/ma…

C语言:输入输出专题

本专题使用C环境代码均为Linux系统下的ubuntu&#xff0c;所有测试结果仅供参考。 标准IO&#xff0c;文件IO专题 sanf函数 #include <stdio.h> #include <stdlib.h> #define STRSIZE 3 /* 输入函数int scanf(const char *format,...); 地址表返回输出成功的个数…

Betaflight 4.5RC3 AT32F435遇到的一些“怪”现象

Betaflight 4.5RC3 AT32F435遇到的一些“怪”现象 1. 源由2. “怪”现象2.1 电机#4没有RPM转速2.2 遥控器通道10接收机测试失败2.3 OSD 异常2.4 磁力计数据无法获取 3. 参考资料 1. 源由 升级下固件&#xff0c;追下“时髦”&#xff0c;赶下“潮流”&#xff0c;本着“活着就…

MySQL学习路线一条龙

引言 在当前的IT行业&#xff0c;无论是校园招聘还是社会招聘&#xff0c;MySQL的重要性不言而喻。 面试过程中&#xff0c;MySQL相关的问题经常出现&#xff0c;这不仅因为它是最流行的关系型数据库之一&#xff0c;而且在日常的软件开发中&#xff0c;MySQL的应用广泛&#…

蚁剑修改特征性信息

前言 我们首先得知道蚁剑的流量特征&#xff1a; 编码器和解码器的特征&#xff1a;蚁剑自带的编码器和解码器具有明显的特点&#xff0c;可以通过更改配置文件来达到流量加密的目的1。例如&#xff0c;蚁剑支持多种编码方式&#xff0c;如base64、chr、rot13等&#xff0c;这…

LLM 构建Data Multi-Agents 赋能数据分析平台的实践之②:数据治理之二(自动处理)

前述 在前文的multi Agents for Data Analysis的设计说起&#xff0c;本文将继续探索和测试借助llm实现基于私有知识库的数据治理全自动化及智能化。整体设计如下&#xff1a; 整个体系设计了3个Agent以及一个Planer&Execute Agent&#xff0c;第一个Agent用于从企业数据…

【Linux系列】“dev-node1“ 运行的操作系统分析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Vue3与TypeScript中动态加载图片资源的解决之道

在前端开发中&#xff0c;Vue.js已成为一个备受欢迎的框架&#xff0c;尤其是在构建单页面应用时。Vue3的发布更是带来了许多性能优化和新特性&#xff0c;而TypeScript的加入则进一步提升了代码的可维护性和健壮性。然而&#xff0c;在实际的项目开发中&#xff0c;我们有时会…

牛客NC93 设计LRU缓存结构【hard 链表,Map Java】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/5dfded165916435d9defb053c63f1e84 思路 双向链表map最新的数据放头结点&#xff0c;尾节点放最老的数据&#xff0c;没次移除尾巴节点本地考察链表的新增&#xff0c;删除&#xff0c;移动节点参考答案Java im…

第六篇: 3.5 性能效果 (Performance)- IAB/MRC及《增强现实广告效果测量指南1.0》

​​​​​​​ 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇 广告效果测量定义和其他矩阵之- 3.1 广告印象&#xff08;AD Impression&#xff09;第三篇 广告效果测量定义和其他矩阵之- 3.2 可见性 &#xff08;Viewability…

精准备份:如何自动化单个MySQL数据库的备份过程

自动化备份对于维护数据库的完整性和安全性至关重要。本指南将向您展示如何使用Shell脚本来自动化MySQL数据库的备份过程。 备份脚本内容 首先&#xff0c;这是我们将使用的备份脚本&#xff1a; #!/bin/bash# 完成数据库的定时备份 # 备份路径 BACKUP/data/backup/db # 当前…

正确使用@Autowired

目录 一、前言二、跟着官方文档&#xff0c;学习正确使用Autowired0、实验环境1、通过构造方法进行注入1.1 问题1&#xff1a;那万一没有这个CustomerPreferenceDao对象&#xff0c;会报错吗&#xff1f; 2、通过setter方法注入3、通过方法注入&#xff08;这个方法可以是任意名…

Shell学习 - 2.26 Shell expr命令:对整数进行运算

expr 是 evaluate expressions 的缩写&#xff0c;译为“表达式求值”。Shell expr 是一个功能强大&#xff0c;并且比较复杂的命令&#xff0c;它除了可以实现整数计算&#xff0c;还可以结合一些选项对字符串进行处理&#xff0c;例如计算字符串长度、字符串比较、字符串匹配…

【Android】apk安装报错:包含病毒: a.gray.BulimiaTGen.f

​ 有时候apk安装或者更新时&#xff0c;显示&#xff1a;[高风险]包含病毒: a.gray.BulimiaTGen.f这种bug&#xff1b; 原因&#xff1a;这是手机管家误报病毒。 处理方法&#xff1a;我看网上其他资料可以进行申诉&#xff0c;也可以进行apk加固&#xff0c;我这边尝试用360…

MSsql数据库 sql注入

和mysql不同&#xff1b;每个数据库都有自己的信息总结表四个系统数据库 master sysdatabases :所有数据库信息 name &#xff1a;所有数据库名 sysobjects :数据库所有对象的信息 syscolumns :字段信息 固定字段名 name 对象名 id 对象id xtype 对象类型代码 xtypeU 用户创建的…

【Linux】 Vim:掌握高效编辑的艺术

以为光阴 一分一秒 微不足道 可以任性 无拘无束 心高气傲 放下尊严又赌上性命 千金已散尽 只换来一张空头支票 年少时候豪言壮语许下承诺 积攒半生仍没故事值得诉说 最后一天许下的心愿 是你不要再记得我 &#x1f3b5; 杨宗纬《千金散尽》 在文本编辑器的…

无参数绕过RCE

一.什么是无参数 顾名思义&#xff0c;就是只使用函数&#xff0c;且函数不能带有参数&#xff0c;这里有种种限制&#xff1a;比如我们选择的函数必须能接受其括号内函数的返回值&#xff1b;使用的函数规定必须参数为空或者为一个参数等 无参数题目特征 if(; preg_replace…

C语言中的宏MACRO的用途

1&#xff09;硬码实义化 用宏来将一个硬码数值&#xff0c;进行实义化。、 #define DEBUG_CONSOLE_DEVICE_TYPE_NONE 0U /*!< No debug console. */ #define MCU_MEM_MAP_VERSION 0x0300U#define ADC_HC_ADCH_MASK …