阅读论文1_c

DistriFusion: Distributed Parallel Inference for High-Resolution Diffusion Models

前两篇进行论文的相关信息进行解读,现在读论文的大头,如果看不懂很正常,慢慢学,加油


Method

DistriFusion 的关键思想是通过将图像分割成块来实现跨设备的并行计算。 简单来说,这可以通过 (1) 独立计算块并将它们拼接在一起,或 (2) 在块之间同步通信中间激活来实现。 然而,第一种方法会导致每个块的边界出现可见的差异,因为它们之间没有交互(见图 1 和图 2(b))。另一方面,第二种方法会产生过多的通信开销,从而抵消并行处理的好处。 为了应对这些挑战,我们提出了一种新颖的并行范式,即位移块并行,它利用扩散模型的顺序性质来重叠通信和计算。我们的关键见解是重用上一个扩散步骤中略微过时或“陈旧”的激活来促进块之间的交互,我们将其描述为激活位移。这是基于连续去噪步骤的输入相对相似的观察。因此,计算某一层中每个补丁的激活不依赖于其他补丁的新鲜激活,从而允许通信隐藏在后续层的计算中。接下来,我们将详细分析我们的算法和系统设计的各个方面。
什么是扩散模型的顺序性质,新提出的方法,利用前一步的激活实现交互,降低块并行产生 边界的明显差异
Consequently, computing each patch’s activation at a layer does not rely on other patches’ fresh activations, allowing communication to be hidden within subsequent layers’ computation. 这一句是完全没懂想表达什么

Displaced patch parallelism,位移块并行

如图 3 所示,在预测 ϵθ(xt) 时(为简单起见,我们在此省略了时间步 t 和条件 c 的输入),我们首先将 xt 拆分为多个补丁 x(1) t 、x(2) t 、…、x(N) t ,其中 N 是设备数量。例如,我们在图 3 中使用 N = 2。每个设备都有模型 ϵθ 的副本,并将并行独立处理单个补丁**(每个设备有模型副本理解为模型并行,对xt切块可以理解为数据并行,但是数据并行是只切数据,不对模型进行切分的)**。 对于给定的 l 层,让我们考虑第 i 个设备上的输入激活补丁,表示为 Al,(i) t 。此补丁首先分散到上一步 Alt+1 中的陈旧激活中,位于其相应的空间位置(获取 Alt+1 的方法将在后面讨论)。这里,Alt+1 处于完整的空间形状。在 Scatter 输出中,只有 1/N 个区域Al,(i) t 所在的位置是新鲜的,需要重新计算。 然后,我们选择性地将层操作 Fl(线性、卷积或注意力)应用于这些新鲜区域,从而生成相应区域的输出。对每一层重复此过程。最后,所有层的输出同步在一起以近似 ϵθ(xt)。通过这种方法,每个设备只负责总计算量的 1 N,从而实现高效的并行化。
仍然存在 如何从上一步获取陈旧激活 的问题。如图 3 所示,在每个时间步 t,当设备 i 获取 Al,(i) t 时,它将向所有其他设备广播激活并执行 AllGather 操作。现代 GPU 通常支持异步通信和计算,这意味着这个 AllGather 过程不会阻止正在进行的计算。当我们在下一个时间步到达层 l 时,每个设备应该已经收到了 Alt 的副本。 这种方法有效地隐藏了计算阶段的通信开销,如图 4 所示。 但是,有一个例外:第一步(即 xT)。 在这种情况下,每个设备仅执行标准同步通信并缓存下一步的中间激活。
在这里插入图片描述
将图片拆分为N块,N为设备数量(也可以理解为GPU数量),在每个时间t上,是说明一共有t步,t–t-1–t-2-----1–0,这么个流程
图3中形容了两步,第一步把A_t+1,(l),传给第t步的第l层,然后利用当前的A_t,l(i)scatter在A_t+1,(l)中,输出的结果作为FI操作的输入,该稀疏运算符专门对新区域执行计算并生成相应的输出 这个FI的算子是卷积、线性、注意力等,这些是原本就只会对新区域计算,还说这个底层被修改过,实现只对新区域进行计算的功能,就这么逐层,计算得到模型。与此同时,在每个A_t,l(i)得到后,进行allgather操作,得到A_t(l),直接传给下一步t-1,这就是 原话:当我们在下一个时间步到达层 l 时,每个设备应该已经收到了 Alt 的副本。 层是从第1层到第L层

1.什么是空间形状、空间位置
	空间位置:又称为空间维度,是指一个图的高度和宽度
2.什么是Scaatter
3.什么是all gather操作
	各种通信操作介绍见 https://blog.csdn.net/u011983997/article/details/123090284

Sparse operations 稀疏操作

对于每个层 l,我们修改原始运算符 Fl,以选择性地在新鲜区域上启用稀疏计算。具体来说,如果 Fl 是卷积、线性或交叉注意层,我们将运算符专门应用于新刷新的区域,而不是整个特征图这可以通过从散射输出中提取新鲜部分并将其输入到 Fl 来实现。对于 Fl 是自注意层的层,我们将其转换为交叉注意层,类似于 SIGE [23]。在这种情况下,只有来自新鲜区域的查询标记会保留在设备上,而键和值标记仍然包含整个特征图(散射输出)。因此,Fl 的计算成本与新鲜区域的大小完全成正比
对于上一步的问题,从这一小节可以知道, Fl稀疏运算符是被修改,对于这么实现。还是没太明白

Corrected asynchronous GroupNorm

扩散模型通常在网络中采用组归一化 (GN) [38, 64] 层。这些层在空间维度上进行归一化,需要聚合激活以恢复其完整的空间形状。在第 5.3 节中,我们发现仅对新补丁进行归一化或重复使用陈旧特征都会降低图像质量。但是,由于同步通信,聚合所有归一化统计数据将产生相当大的开销。为了解决这个难题,我们另外为陈旧统计数据引入了一个校正项。具体而言,对于给定步骤 t 的每个设备 i,每个 GN 层都可以计算其新补丁 A(i) t 的组均值,表示为 E[A(i) t]。为简单起见,我们在这里省略了层索引 l。它还缓存了上一步的局部平均值 E[A(i) t+1] 和聚合全局平均值 E[At+1]。然后,设备 i 上当前步骤的近似全局平均值 E[At] 可以计算为
在这里插入图片描述
我们使用相同的技术来近似 E[(At)2],然后方差可以近似为 E[(At)2] − E[At]2。 然后我们将这些近似统计数据用于 GN 层,同时汇总局部均值和方差以使用异步通信计算精确的均值和方差。因此,通信成本也可以流水线化到计算中。我们根据经验发现这种方法产生的结果与直接同步聚合相当。 然而,在极少数情况下,近似方差为负。对于这些负方差组,我们将回退到使用新补丁的局部方差。

归一化,能让值在【-1,1】之间;恢复完整的空间形状是指空间维度的保持,不发生变化
感觉这部分就是在该扩散模型用的GN层,使其不要那么慢的进行组归一化计算,如利用公式快速计算均值和方差,从而节省计算成本,产生的通信成本也可以被隐藏

Warm-up steps.

热身步骤。正如在 eDiff-I [2] 和 FastComposer [65] 中观察到的那样,扩散合成的行为在整个去噪过程中发生了质的变化。 具体来说,采样的初始步骤主要塑造图像的低频方面,例如空间布局和整体语义。随着采样的进行,焦点转移到恢复局部高频细节 (使生成的图像变得更加真实和清晰)。 因此,为了提高图像质量,特别是在步骤数减少的采样器中**(我们知道在步骤数越多的采样器中,我们的去噪过程就会更多,生成的图像也会更清晰。然而在步骤数较少的采样器中,去噪就不会那么多,所以考虑在步骤数减少的采样器中提高图像质量,添加了热身步骤)**,我们采用了热身步骤。我们没有在*第一步(不知道说的是哪一步,前向传播过程?)*之后直接采用位移补丁并行性,而是继续对标准同步补丁并行性进行几次迭代作为初步阶段或热身。如第 5.3 节所述,这种热身步骤的集成显著提高了性能

扩散合成指的是如何将这些模型的生成能力和去噪能力应用于实际数据生成或恢复过程。模型在整个去噪过程中从噪声中逐步恢复图像的细节;
质的变化指的是扩散模型在去噪过程中的行为会发生根本性的变化;
“扩散合成的行为在整个去噪过程中会发生质的变化” 的含义是,扩散模型在从噪声恢复数据的过程中,其行为和功能会经历从粗略恢复到细致恢复的显著变化。这种变化反映了模型在不同去噪阶段所处理的任务的性质不同,从而导致其在去噪过程中表现出不同的特性和行为。

什么是扩散模型中的采样
	整理指的采样值得是以下几个过程,噪音生成(前向传播,给样本添加噪声,成为纯噪声数据),去噪(反向过程)。
	这里面的去噪又分几步
		(初始化:从随机噪声开始,也是文中说的初始步骤主要塑造图像的低频方面,例如空间布局和整体语义。通过初始化,能得到一个草图,生成大致的轮廓活形状。
		逐步去噪:通过多个步骤逐步去噪,每一步都利用神经网络模型来预测和去除噪声,从而恢复图像的细节。
		生成最终图像:经过多个去噪步骤后,最终得到的图像应尽可能接近训练数据中的真实图像。)

总结

至此,这篇论文的方法部分算是看完了,还有很多地方没理解,浅浅的按照自己的理解总结一下他干了什么.

  • 在整篇论文中引入了位移块并行技术,实现扩散模型能够让一张图片进行gpu并行,从而解决高质量图片的延迟问题

对该技术的实现,代码做了哪些修改 :

  • 修改了原始运算符 Fl,Fl 是卷积、线性或交叉注意层,以选择性地在新鲜区域上启用稀疏计算
  • 修改了扩散模型的GN层,使其不要那么慢的进行组归一化计算,如利用公式快速计算均值和方差,从而节省计算成本,产生的通信成本也可以被隐藏
  • 添加热身步骤,在第一步后继续对标准同步补丁并行性进行几次迭代作为初步阶段或热身,但是这个第一步具体指什么,不明白

下一篇就是实验部分啦,希望能看着实验,把代码运行起来,要不然,这一篇复现不出来,就换下一篇论文了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值