无穹Paper | NeurIPS中稿!DiTFastAttn:减少76%注意力计算量,加速比最高可达180%

来自清华大学、无问芯穹和上海交通大学的研究团队共同开展的工作《DiTFastAttn: Attention Compression for Diffusion Transformer Models 》(简称DiTFastAttn)成功入选。这项工作中提出了DiTFastAttn:一种新的后训练压缩方法,在图像生成方面,DiTFastAttn最多可减少 76% 的 FLOPs,在高分辨率生成方面最多可实现 1.8 倍的速度提升。

图注:《DiTFastAttn: Attention Compression for DiffusionTransformer Models》

论文标题:DiTFastAttn: Attention Compression for DiffusionTransformer Models

论文链接:https://arxiv.org/pdf/2406.08552

扩散变换器(DiT)在图像和视频生成方面表现出色,但由于自注意的二次方复杂性(二次方复杂性指的是算法性能随输入规模增长呈二次方增加,会导致算法在处理大规模数据时效率极低,变得不实用。)而面临计算挑战。我们提出了一种新颖的后训练压缩方法 DiTFastAttn,以缓解 DiT 的计算瓶颈。

我们确定了 DiT 推理过程中注意力计算的三个关键冗余:

1. 空间冗余,即许多注意力集中在局部信息上;

2. 时间冗余,即相邻步骤的注意力输出之间具有高度相似性;

3. 条件冗余,即条件推断和非条件推断具有显著相似性。

为了解决这些冗余问题,我们提出了三种技术:

  1. 带有残余缓存的窗口注意,以减少空间冗余;

  2. 时间相似性减少,以利用步骤之间的相似性;

  3. 条件冗余消除,以跳过条件生成过程中的冗余计算。

为了证明 DiTFastAttn 的有效性,我们将其应用于 DiT、PixArt-Sigma(图像生成任务)和 OpenSora(视频生成任务)。评估结果表明,对于图像生成,我们的方法最多可减少 76% 的 FLOPs,并在高分辨率生成时实现高达 1.8 倍的速度提升。

01.引言

最近,扩散变换器(DiT)在图像和视频生成中越来越受欢迎。然而,DiTs 面临的一个主要挑战是其巨大的计算需求,在生成高分辨率内容时尤为明显。一方面,传统的转换器架构具有自注意力机制,对输入标记长度 L 的复杂度为 O(L2)。如图 1 所示,随着图像分辨率的提高,注意力计算成为推理过程中的主要计算瓶颈。具体来说,如果将 2K × 2K 的图像标记化为 16K 标记,即使在 Nvidia A100 等高端 GPU 上,注意力计算也需要数秒时间。另一方面,由于采用了多个去噪步骤和无分类器引导(CFG)技术,扩散推理过程需要大量的神经网络推理。以往加速注意机制的努力,如局部注意、Swin Transformer和群组查询注意(GQA),主要集中在设计注意机制或网络架构上。这些方法虽然能有效降低计算成本,但需要大量的再训练成本。由于训练 DiT 需要大量的数据和计算,因此有必要采用训练后压缩方法。在这项工作中,我们确定了 DiT 推理中注意力计算的三种冗余类型,并提出了一种训练后模型压缩方法 DiTFastAttn 来解决这些冗余问题:

图 1:左图:在 PixArt-Sigma上应用 DiTFastAttn 时,生成不同分辨率图像的效率优势。Y 轴显示了以原始模型的 #FLOPs 为标准的 #FLOPs 分数。右图 在 1024×1024 PixArt-Sigma 上应用 DiTFastAttn 的定性结果。

(1) 空间维度的冗余。许多注意力头主要捕捉局部空间信息,对远处标记的注意力值接近零。为了减少冗余,我们选择在某些层使用窗口注意力而不是完全注意力。然而,直接丢弃窗口外的所有注意力计算会导致性能显著下降。为了在无需训练的情况下保持性能,我们建议在一个步骤中缓存全注意力和窗口注意力输出之间的残差,并在随后的几个步骤中重复使用该残差。我们将这种技术称为带残差共享的窗口注意力(WA-RS)。

(2) 相邻步骤之间的注意力输出相似。同一注意力头在相邻步骤中的注意力输出可能高度相似。我们提出了跨时间步注意力共享(AST)技术,利用这种步进相似性来加速注意力计算。

(3) 有条件推理与无条件推理在注意力输出上的相似性。我们观察到,在 CFG 中,条件推理和非条件推理的注意力输出在某些头部和时间步上表现出显著的相似性(SSIM ≥ 0.95)。因此,我们提出了跨 CFG 的注意力共享(ASC)技术,以跳过条件生成过程中的冗余计算。我们使用多个 DiT 模型进行了广泛的实验,以评估DiTFastAttn,包括用于图像生成的 DiT-XL 和 PixArt-Sigma,以及用于视频生成的 Open-Sora。我们的研究结果表明,DiTFastAttn 能持续降低计算成本。值得注意的是,分辨率越高,计算和延迟的节省就越大。例如,在使用 PixArt-Sigma 生成 2048×2048 图像时,DiTFastAttn 可将注意力计算量减少 20% 至 76%,加速比最高可达 1.8 倍。

02.相关工作

2.1 扩散模型

扩散模型因其优于 GAN 的生成性能而备受关注。早期的扩散模型是基于 U-Net 架构实现的。为了实现更好的可扩展性,DiT利用trnasformer架构取代了 U-Net。扩散变换器被应用于图像和视频生成领域。PixArt-Sigma展示了扩散变换器生成高达 4K 高分辨率图像的能力。OpenSora展示了扩散变换器生成视频的能力。

2.2 视觉transformer 压缩

注意力的计算开销引起了广泛关注。FlashAttention将输入标记划分成更小的块,以尽量减少冗余内存访问和优化延迟。一些研究强调了注意力计算的二次复杂性,并通过在网络的不同阶段过滤或合并标记来实现标记剪枝,从而提高效率。动态 ViT采用预测网络动态过滤标记。Adaptive Sparse ViT通过同时考虑注意力值和特征的 L2 准则来过滤 token。Lu 等人(2023 年)利用分段标签训练网络,以指导具有相似内容的区域中标记的合并操作。Huang 等人(2023 年)在对标记进行下采样后进行注意力计算,然后再进行上采样以恢复空间分辨率。Wu 等人(2023 年)证明,较深的层更适合过滤标记,而较浅的层更适合合并标记。

2.3 局部注意力

各种研究都对局部注意力模式的利用进行了深入探讨,在这种模式下,每个标记都会在一个固定的窗口大小内关注一组相邻的标记,目的是减轻处理长序列时的计算负担。Beltagy 等人最初在 Longformer 中引入了局部窗口注意的概念,提出了一种随序列长度线性扩展的注意机制。Bigbird扩展了这一概念,将窗口注意、随机注意和全局注意机制结合在一起,在降低计算成本的同时保留了长程依赖性。在计算机视觉领域,Swin Transformer采用了类似的方法,将注意力计算限制在非重叠的局部窗口,利用不同层之间的移动窗口来有效捕捉全局上下文。Twins Transformer和 FasterViT采用基于窗口的注意力来提高计算效率,利用全局子采样注意力和分层注意力等不同的模块设计来有效利用全局上下文。在我们的工作中,我们采用固定大小的窗口注意力来加速预训练的扩散变换器模型,并引入了一种名为 “残留共享窗口注意力 ”的新技术,以保留图像标记的长程依赖性。

2.4 注意力共享

GQA将查询头分为 G 组。每个查询保留自己的参数,而每组共享一个键和值,从而减少内存使用并提高效率。PSVIT表明,ViT 中不同层之间的注意力图具有显著的相似性,并建议跨层共享注意力图以减少冗余计算。Deep- cache证明了 U-Net 框架扩散模型中的高级特征在不同时间步之间具有相似性。Deepcache 建议重复使用 U-Net 的高级特征,跳过中间层的计算,以加速去噪过程。TGATE表明,文本条件扩散模型的交叉注意输出在经过几个去噪时间步后会收敛到一个固定点。一旦收敛,TGATE 就会缓存该输出,并在剩余的去噪步骤中保持固定,以降低计算成本。在 DiTFastAttn 中,我们展示了按 CFG 和按步骤的注意力输出的相似性。我们还考虑了不同层在不同步骤中的相似性差异,以共享 CFG 和分步注意力输出。

03.方法

3.1 概述

在本节中,我们将展示带有变换器的扩散模型推理过程中的冗余。在去噪过程中,我们发现了三种类型的冗余,如图 2 所示:(1) 空间维度上的冗余。(2) 注意力输出中相邻步骤之间的相似性。(3) 注意力输出中条件推理和非条件推理之间的相似性。为了解决这些冗余问题,我们提出了三种压缩技术,如图 2 所示:(1) 在第 3.2 节中,我们引入了带有残差共享的窗口注意力,以减少空间冗余。(2) 在第 3.3 节中,我们引入跨时间步的注意力共享来利用步进相似性,从而提高模型效率。(3) 在第 3.4 节中,我们引入了跨 CFG 的注意力共享,通过利用有条件生成和无条件生成之间的相似性来减少冗余。在第 3.5 节中,我们引入了一种简单的贪婪方法来决定压缩方案,即为每层和每步选择合适的压缩技术。

图 2:冗余类型和相应的压缩技术。左:空间维度的冗余、去噪步骤和 CFG。右图 DiTFastAttn 为减少每种类型的冗余而采用的技术。DiTFastAttn 采用窗口注意力来减少注意力冗余,同时利用残差保持性能。此外,按步骤和按 CFG 共享注意力输出,以减少冗余。

3.2 带有残差共享的窗口注意力(WA-RS)

我们可以在预训练 DiTs 的许多变换层中观察到注意力的空间位置性。如图 3(a)所示,注意力值集中在注意力矩阵对角线区域的一个窗口内。因此,在推理过程中,用固定大小的窗口注意力取代某些层的完全注意力,可以保留注意力矩阵中的大部分值。通过只计算指定窗口内的注意力值,可以大大降低注意力的计算成本。不过,有些标记仍然会关注一小部分空间距离较远的标记。放弃这些注意力会对模型性能产生负面影响。仅使用窗口注意力来缓解这一问题,就必须使用较大的窗口尺寸来捕捉这些依赖关系。因此,这种方法对计算成本的降低微乎其微,从而阻碍了加速工作。

缓存和重复使用窗口注意的残余信息。为了解决上述问题,我们研究了使用窗口注意力所造成的信息损失。如图 3(a)所示,与窗口注意的输出不同,完全注意和窗口注意的输出之间的残差在各步中的变化很小。这一观察结果促使我们在一个步骤中缓存窗口注意力和完全注意力的残差,并在后续步骤中重复使用。图 3(b) 展示了 WA-RS 的计算过程:在每一步,对于每个窗口注意力层,我们计算窗口注意力,并将上一步缓存的残差添加到输出中。我们将共享残差值 Rr 的步骤集合记为 K,步骤 r 的全注意力记为 Or,步骤 k 的窗口注意力记为 Wk。对于 r = min (K) 集合中的第一步,WA-RS 的计算过程如下:

3.3 跨时间步的注意力共享(AST)

扩散模型中去噪过程的顺序性是推理速度的主要瓶颈。在此,我们比较了去噪过程中不同步骤的注意力输出。我们发现,在某些层中,某些步骤的注意力输出与相邻步骤的注意力输出具有显著的相似性。图 4(a) 显示了不同步骤的注意力输出之间的余弦相似性。我们可以得出两个主要结论:(1) 注意力输出之间存在明显的时间相似性;(2) 这种相似性在不同步骤和不同层之间存在差异。

图 3:残差共享的窗口注意力。(a) 左图:显示窗口模式的注意力图例。右图 上一步和当前一步的窗口注意力输出之间的 MSE 与上一步和当前一步的窗口注意力和完全注意力输出残差之间的 MSE 比较。输出残差在各步中的变化非常小。(b) 计算带有残差共享的窗口注意力。重新计算发生重大变化的窗口注意力。变化极小的残差被缓存并在后续步骤中重复使用。

为了利用这种相似性降低计算成本,我们提出了 AST 技术。具体来说,对于一组注意力输出相似的步骤,我们缓存最早步骤的注意力输出 O 并重复使用,从而跳过后续步骤的计算。(b) 有条件生成和无条件生成的注意力输出相似性 (a) 不同层中不同时间步骤的注意力输出相似性。

图 4:DiT 中不同步长和 CFG 维度的注意力输出相似性。(a) 不同层中不同步长维度的注意力输出相似性。(b) 不同层中不同步长的有条件和无条件注意力输出的相似性

3.4 跨 CFG 的注意力共享(ASC)

无分类器引导(CFG)被广泛用于条件生成,在条件生成推理过程的每一步中,CFG 都要执行两次神经网络推理:一次有条件输入,一次无条件输入。与无条件生成相比,计算成本增加了一倍。如图 4(b)所示,在许多层和步骤中,有条件和无条件神经网络评估的注意力输出相似度很高。

基于这一观点,我们提出了 ASC 技术,即在无条件神经网络评估中重复使用条件神经网络评估的注意力输出。

3.5 决定压缩计划的方法

上述技术,包括 WA-RS、AST 和 ASC,可以在保持性能的同时有效地降低计算成本。如图 3 和图 4 所示,不同层在不同的时间步长有不同的冗余。因此,正确决定压缩方案,即在每一步对每一层应用哪种技术至关重要。我们开发了一种简单的贪婪方法,从策略列表 S =[AST、WA-RS + ASC、WA-RS、ASC]中为每一步和每一层选择合适的策略(技术组合)。如 Alg. 1 所示,我们一步一步、一层一层地确定策略。对于每个步骤和转换层,我们分别采用四种压缩策略,并计算当前步骤有压缩和无压缩的模型输出之间的损耗 L(O,O′)。然后,我们选择计算减少率最高且损失低于阈值的策略。如果四种策略都没有达到阈值,我们就不在该步骤中对该层进行压缩。

04.实验

4.1 设置

我们在三种常用的扩散变换器上对 DiTFastAttn 进行了评估:DiT 和 Pixart-Sigma 用于图像生成任务,Open-Sora 用于视频生成任务。为了证明与快速采样方法的兼容性,我们在 DiT 和 Pixart-Sigma 的 50 步 DPM-Solver 和 Open-Sora 的 100 步 IDDPM的基础上构建了我们的方法。我们使用 ImageNet 作为计算质量指标的评估数据集,并使用 MS-COCO 2017标题作为 Pixart-Sigma 模型生成图像的文本提示。对于 ImageNet,我们生成 5k 幅图像来评估生成质量。根据之前的研究,我们采用 FID、IS和 CLIP 分数作为评估指标。我们在单个 Nvidia A100 GPU 上测量每个样本的延迟。我们使用平均相对绝对误差 L(O,O′),并以 0.025 的间隔试验不同的阈值 δ。我们将这些阈值设置分别记为 D1(δ=0.025)、D2(δ=0.05)、…、D6(δ=0.15)。我们将 WA-RS 的窗口大小设置为标记大小的 1/8。

4.2 图像生成结果

评估指标和 #FLOPs 的结果。DiTFastAttn 应用于预先训练的 DiT-2-XL- 512、PixArt-Sigma-1024 和 PixArt-Sigma-2K 模型。图 5 显示了这些模型在 ImageNet-5k 验证数据集上的表现。对于 DiT-2-XL-512 和 PixArt-Sigma-1024 模型,配置 D1、D2 和 D3 在 IS 和 FID 指标方面几乎与原始模型的性能相当。配置 D4、D5 和 D6 的 IS 和 CLIP 分数略有下降,作为实现更高压缩率的权衡。对三种模型的压缩效果和评估指标进行比较后发现,随着图像分辨率的提高,DiTFastAttn 不仅实现了更大的压缩,而且更好地保持了模型的生成性能。

图 5:DiTFastAttn 在不同图像分辨率、不同压缩率下的图像生成性能。

表 1:扩散变换器中 DitFastAttn 的 FLOPs 分数和延迟分数与原始注意力的比较。延迟在 Nvidia A100 GPU 上进行评估。

DiTFastAttn 生成结果的可视化。图 6 显示了 DiTFastAttn 的图像生成样本。对于 DiT-2-XL-512 和 PixArt-Sigma-1024 模型,D1、D2 和 D3 显示的视觉生成质量与原始模型相似。虽然 D4、D5 和 D6 实现了更大的压缩,生成图像的细节也略有不同,但它们仍能生成可用的高质量图像。PixArt-Sigma-2K 模型在 D4 之前的图像质量与原始模型相当,而配置 D5 和 D6 则继续生成高质量的图像。

4.3 视频生成结果

我们在 OpenSora 上应用 DitFastAttn 生成视频,我们分别将阈值设置为0.01到0.05。结果如图 10 所示,更多分析结果见附录。

图 6:不同压缩率下不同图像分辨率的图像生成样本。

图 7:使用 OpenSora V1.1 在 240p 分辨率下生成 16 帧视频的比较。

4.4 #FLOPs 减少和加速

DiTFastAttn 对不同序列长度的压缩结果。我们基于 FlashAttention-2 实现了 DiTFastAttn(Dao,2023 年)。表 1 显示了 DiTFastAttn 在扩散变换器中与原始注意力机制相比的 FLOPs 分数和延迟分数。

图 8:不同压缩率下生成不同分辨率图像的延迟

图 9:DiT-XL-2-512 的消融研究。方法影响(左)、时间步变异(中)和残差分担(右)检查。“WA "表示无残余份额 (RS) 的窗口关注。

DiTFastAttn 的总体延迟。图 8 显示了应用 DiTFastAttn 时,随着计算量减少,图像生成和注意力的延迟。在 DiT-XL-512 模型上,在低压缩比设置下,图像生成和注意力计算的总体延迟略有增加。DiTFastAttn 在推理过程中没有带来任何开销。延迟增加的原因是我们的内核没有很好地实现,导致性能略低于 FlashAttention-2。在高压缩比设置下,延迟比原始数据有所减少,其中 D6 的延迟最低。对于 PixArt-Sigma,延迟随着 FLOPs 的减少而继续降低。随着分辨率的提高,DiTFastAttn 在减少整体注意力和图像生成的延迟方面取得了更好的性能。值得注意的是,进一步优化我们的内核实现可以更好地降低延迟。

4.5 消融研究

DiTFastAttn 优于单一方法。如图 9 左侧所示,在计算预算相同的情况下,DiTFastAttn 与单项技术相比保持了更高的质量指标。在单一技术中,AST 的生成质量最好。然而,使用 AST 进一步压缩会显著降低输出,导致搜索算法终止。DiTFastAttn 支持进一步压缩,同时保持更好的质量。

步长越大,DiTFastAttn 的性能越好。如图 9 中间所示,我们比较了 DiTFastAttn 在不同步长下的性能。很明显,随着步长的增加,DiTFastAttn 可以在保证质量的前提下压缩更多的计算量。

残差缓存技术对保持性能至关重要。如图 9 右侧所示,在压缩比相同的情况下,带有残差共享的窗口注意力比窗口注意力能保持更好的生成性能。如果没有残差,窗口注意力会导致性能大幅下降。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值