【论文阅读】AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising

论文:2406.06911 (arxiv.org)

代码:czg1225/AsyncDiff: Official implementation of "AsyncDiff: Parallelizing Diffusion Models by Asynchronous Denoising" (github.com)

简介

异步去噪并行化扩散模型。提出了一种新的扩散模型分布式加速方法,该方法在对生成质量影响最小的情况下显著降低了推理延迟。

原理:用异步过程取代顺序去噪过程,允许去噪模型的每个组件在不同的设备上独立运行。

动机:扩散模型的多步顺序去噪特性导致了高累积延迟,无法并行计算。AsyncDiff是一个通用的即插即用加速方案,可以跨多个设备实现模型并行,将噪声预测模型分成多个组件,并将每个组件分配给不同的设备。为了打破组件之间的依赖链,它利用连续扩散步骤中隐藏状态之间的高度相似性,将传统的顺序去噪转换为异步过程。因此,每个组件都便于在单独的设备上并行计算。该策略显著降低了推理延迟,同时对生成质量的影响小。AsyncDiff还可以应用于视频扩散模型。

原理

先验知识

异步扩散模型

为了解决扩散模型中高延迟的局限性,利用多GPU进行分布式推理是一个有前途的解决方案。通过将顺序去噪近似为异步过程,实现了噪声预测模型的并行推理,有效地减少了延迟并打破了顺序执行的限制。

异步去噪。

对于由T步组成的去噪过程,初始w步被指定为预热阶段。在此阶段,去噪模型ϵθ使用标准顺序推理进行操作。在热身步骤之后,不再分割输入图像,而是将去噪模型ϵθ划分为N个顺序分量,表示为。每个组件被划分以处理可比较的计算负载,并分配给不同的设备。

这种划分旨在将每个组件的时间成本均衡到大约,从而减少总体最大延迟。xt的原始噪声预测可以表示为通过这些子模型的级联操作,定义为:

如图2所示,根据计算负荷,将重量级去噪模型ϵθ依次划分为多个分量,并将每个分量分配给单独的设备。核心思想在于通过利用 连续扩散步骤中隐藏状态的高相似性 来解耦 这些级联组件之间的依赖关系

每个组件将前一个组件的前一个步骤的输出作为其原始输出的近似值。这将传统的顺序去噪转换为异步过程,允许组件并行预测不同时间步长的噪声。此外,结合跨步去噪,以跳过冗余计算和减少设备之间的通信频率,进一步提高效率。

尽管每个设备都可以独立地计算其分配的组件,但依赖链仍然存在,因为每个组件的输入ϵθ,n派生自其前一个组件的输出ϵθ,n−1。因此,尽管模型组件分布在多个设备上,但完全并行化受到这些顺序依赖关系的约束。

我们的主要创新是通过利用前面步骤中的隐藏特性来打破级联组件之间的依赖关系。观察结果表明,去噪模型中每个块的隐藏状态在相邻的时间步长上总是表现出很大的相似性。利用这一点,时间步长为t的每个分量都可以将前一个分量在时间步长为t - 1的输出作为其原始输入的近似值。具体来说,第n-th个分量接收输出。对xt的噪声预测表示如下:

在这个新框架中,噪声预测ϵt是从跨N个前时间步执行的组件派生的。这将去噪过程从顺序转换为异步,因为在步骤t + 1完成去噪之前,噪声ϵt的预测已经开始。在每个时间步,N个分量作为下一个N步的噪声预测模型的一部分运行。具体来说,在时间t并行计算的n-th个分量有助于对未来时间步t - N + n的噪声预测。图3使用n设为4的U-net模型描述了这个异步过程。连续扩散步骤之间隐藏状态的强相似性使得异步过程能够很好地模拟原始顺序过程的去噪结果。

并行模型。通过转换到异步去噪策略,消除了同一时间步长内组件之间的依赖关系。这种调整允许提前准备时间步长t的每个组件的输入,从而使N个分裂组件能够跨多个设备并发处理。一旦计算出来,每个组件的输出必须被存储,然后广播到其他设备,以方便后续时间步骤的并行处理。

相比之下,在传统的顺序去噪过程中,每一步的时间成本累积如下:

图3:异步去噪过程概述。将去噪模型ϵθ分为四个分量。在预热阶段之后,提前准备好每个组件的输入,打破依赖链并促进并行处理。

使用

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档

“火火的动态”python“自动”脚本文档,又从ai学习搭子那儿“套”来,可谓良心质量👍👍。 (笔记模板由python脚本于2024年07月07日 15:15:33创建,本篇笔记适合喜欢钻研python和页面源码的coder翻阅) 【学习的细节是欢悦…

001uboot体验

1.uboot的作用: 上电->uboot启动->关闭看门狗、初始化时钟、sdram、uart等外设->把内核文件从flash读取到SDRAM->引导内核启动->挂载根文件系统->启动根文件系统的应用程序 2.uboot编译 uboot是一个通用的裸机程序,为了适应各种芯片&…

盘点8款国内顶尖局域网监控软件(2024年国产局域网监控软件排名)

局域网监控软件对于企业网络管理至关重要,它们可以帮助IT部门维护网络安全,优化网络性能,同时监控和控制内部员工的网络使用行为。以下是八款备受推崇的局域网监控软件,每一款都有其独特的优势和适用场景。 1.安企神软件 试用版领…

【数据结构】(C语言):二叉搜索树(不使用递归)

二叉搜索树: 非线性的,树是层级结构。基本单位是节点,每个节点最多2个子节点。有序。每个节点,其左子节点都比它小,其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。 …

Report Design Analysis报告之logic level详解

目录 一、前言 二、Logic Level distribution 2.1 logic level配置 2.2 Logic Level Distribution报告 2.3 Logic Level 报告详情查看 2.4 Route Distributions 报告详情查看 2.5 示例代码 一、前言 ​在工程设计中,如果需要了解路径的逻辑级数,可…

赚钱小思路,送给没有背景的辛辛苦苦努力的我们!

我是一个没有背景的普通人,主要靠勤奋和一股钻劲,这十几年来我的日常作息铁打不变,除了睡觉,不是在搞钱,就是在琢磨怎么搞钱。 ​ 可以说打拼了十几年,各种小生意都做过,以前一直是很乐观的&…

绘唐3最新版本哪里下载

绘唐3最新版本哪里下载 绘唐最新版本下载地址 推文视频创作设计是一种通过视频和文字的形式来进行推广的方式,可以通过一些专业的工具来进行制作。 以下是一些常用的小说推文视频创作设计工具: 视频剪辑软件:如Adobe Premiere Pro、Fina…

人工智能系列-Pandas基础

🌈个人主页:羽晨同学 💫个人格言:“成为自己未来的主人~” Pandas简介 Pandas是Python语言的拓展程序库,用于数据分析。 Pandas是一个开放源码,BSD许可的库,提供高性能,易于使用的数据结…

SSM养老院管理系统-计算机毕业设计源码02221

摘要 本篇论文旨在设计和实现一个基于SSM的养老院管理系统,旨在提供高效、便捷的养老院管理服务。该系统将包括老人档案信息管理、护工人员管理、房间信息管理、费用管理等功能模块,以满足养老院管理者和居民的不同需求。 通过引入SSM框架&#x…

ChatGPT对话:Scratch编程中一个单词,如balloon,每个字母行为一致,如何优化编程

【编者按】balloon 7个字母具有相同的行为,根据ChatGPT提供的方法,优化了代码,方便代码维护与复用。初学者可以使用7个字母精灵,复制代码到不同精灵,也能完成这个功能,但不是优化方法,也没有提高…

微信小程序毕业设计-医院挂号预约系统项目开发实战(附源码+论文)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

高考志愿填报,选专业是看兴趣还是看就业?

对于结束高考的学生来说,选择专业的确是一个非常让人头疼的事情。因为很多人都不知道,选专业的时候究竟是应该看一下个人兴趣,还是看未来的就业方向,这也是让不少人都相当纠结的问题。这里分析一下关于专业选择的问题,…

动手学深度学习(Pytorch版)代码实践 -循环神经网络-54循环神经网络概述

54循环神经网络概述 1.潜变量自回归模型 使用潜变量h_t总结过去信息 2.循环神经网络概述 ​ 循环神经网络(recurrent neural network,简称RNN)源自于1982年由Saratha Sathasivam 提出的霍普菲尔德网络。循环神经网络,是指在全…

字符串——string类的常用接口

一、string类对象的常见构造 二、string类对象的容量操作 三、string类对象的访问及遍历操作 四、string类对象的修改操作 一、string类对象的常见构造 1.string() ——构造空的string类对象,也就是空字符串 2.string(const char* s) ——用字符串来初始化stri…

【微服务】springboot对接Prometheus指标监控使用详解

目录 一、前言 二、微服务监控概述 2.1 微服务常用监控指标 2.2 微服务常用指标监控工具 2.3 微服务使用Prometheus监控优势 三、环境准备 3.1 部署Prometheus服务 3.2 部署Grafana 服务 3.3 提前搭建springboot工程 3.3.1 引入基础依赖 3.3.2 配置Actuator 端点 3.…

代码随想录算法训练营第14天|226.翻转二叉树、101. 对称二叉树、104. 二叉树的最大深度、111.二叉树的最小深度

打卡Day14 1.226.翻转二叉树2.101. 对称二叉树扩展100. 相同的树572. 另一棵树的子树 3.104. 二叉树的最大深度扩展559.n叉树的最大深度 3.111.二叉树的最小深度 1.226.翻转二叉树 题目链接:226.翻转二叉树 文档讲解: 代码随想录 (1&#x…

博客的部署方法论

有了域名后,可以方便其他人记住并访问,历史上不乏大企业花大价钱购买域名的: 京东域名换成 JD.com,并且说是为了防止百度吸引流量,为什么?唯品会买下域名 VIP.COM 或花费千万 ‍ 域名提供商 如果想要域…

Xilinx FPGA:vivado关于真双端口的串口传输数据的实验

一、实验内容 用一个真双端RAM,端口A和端口B同时向RAM里写入数据0-99,A端口读出单数并存入单端口RAM1中,B端口读出双数并存入但端口RAM2中,当检测到按键1到来时将RAM1中的单数读出显示到PC端,当检测到按键2到来时&…

普通Java工程如何在代码中引用docker-compose.yml中的environment值

文章目录 一、概述二、常规做法1. 数据库配置分离2. 代码引用配置3. 编写启动类4. 支持打包成可执行包5. 支持可执行包打包成docker镜像6. docker运行 三、存在问题分析四、改进措施1. 包含environment 变量的编排文件2. 修改读取配置文件方式3. 为什么可以这样做 五、运行效果…

股票Level-2行情是什么,应该怎么使用,从哪里获取数据

行情接入方法 level2行情websocket接入方法-CSDN博客 相比传统的股票行情,Level-2行情为投资者打开了更广阔的视野,不仅限于买一卖一的表面数据,而是深入到市场的核心,提供了十档乃至千档的行情信息(沪市十档&#…