最新研究提出混合动态剪枝方法,升级Transformer推理效率

独角也有噬元兽 2024-07-21 11:31:06

自2017年Transformer模型问世以来,它在自然语言处理(NLP)和计算机视觉等领域取得了显著进展。Transformer模型通过其独特的自注意力机制,能够捕捉输入序列中的长程依赖关系,从而在机器翻译、文本分类、问答系统等任务中表现出色。与传统的循环神经网络(RNN)和长短期记忆网络(LSTM)相比,Transformer模型在处理长序列数据时具有更高的效率和准确性。

Transformer模型的成功也带来了新的挑战,由于其复杂的计算结构和高内存需求,Transformer模型在实际应用中,尤其是在资源受限的边缘设备上部署时,面临着巨大的困难。为了克服这些挑战,研究人员不断探索新的方法来提高Transformer模型的推理效率,同时保持其高性能。

Transformer模型的主要挑战在于其计算复杂度和内存需求。具体来说Transformer模型的自注意力机制需要计算输入序列中每个元素与其他所有元素之间的关系,这导致计算复杂度为随着输入序列长度的增加,计算成本和内存需求呈指数增长。此外Transformer模型的前馈神经网络(FFN)部分也需要大量的计算资源。FFN由两个全连接层组成,使用GELU作为激活函数,提供非线性变换。这些计算操作在实际应用中会占用大量的计算时间和内存,尤其是在处理长序列数据时。

为了在资源受限的环境中高效部署Transformer模型,研究人员提出了多种优化方法,包括模型剪枝、量化、稀疏化等。然而,这些方法在实际应用中仍然面临许多挑战,例如如何在不显著降低模型性能的情况下实现高效的剪枝和稀疏化。

7 月 20 日发表于著名国际学术交流平台arXiv的论文《Hybrid Dynamic Pruning: A Pathway to Efficient Transformer Inference》提出了一种名为混合动态剪枝(Hybrid Dynamic Pruning, HDP)的算法-架构协同设计方法,旨在通过剪枝不重要的计算单元和近似计算来提高Transformer模型的推理效率。HDP方法结合了块剪枝、头剪枝和近似计算,通过动态调整剪枝策略,实现了高效的计算和内存利用。

HDP方法包括以下几个方面的创新:

基于整数的行平衡块剪枝:通过剪除注意力矩阵中不重要的块,减少计算复杂度和内存访问。基于整数的头剪枝:在计算初期评估头的重要性,剪除不重要的注意力头。近似计算:通过生成分数部分并将其与剪枝后的整数结果相加,得到最终输出,减少计算量。ASIC 架构:以高效执行 HDP,利用仅编码器模型将关键路径减少一半,并提高吞吐量和硬件利用率。可用作协处理器,与现有的神经网络加速器兼容。通过精心设计的管道和架构优化,显著提高性能并降低能耗。

此外论文还设计并实现了两种协处理器架构(HDP-Edge和HDP-Server),用于在移动和服务器平台上加速HDP算法。这些创新方法和硬件设计显著提高了Transformer模型的推理效率,为在资源受限环境中部署高性能Transformer模型提供了新的途径。

这篇论文的研究团队由多位在电子工程和计算机科学领域具有丰富经验的学者组成,Ghadeer A. Jaradat的研究方向包括深度学习和硬件加速器设计;Mohammed F. Tolba专注于算法优化和高效计算;Ghada Alsahli在机器学习和数据处理方面有深入研究;Hani Saleh是IEEE会员,研究领域涵盖嵌入式系统和硬件设计;Mahmoud Al-Qutayri也是IEEE会员,专注于电子系统和计算架构;Thanos Stouraitis是IEEE终身会士,拥有丰富的数字信号处理和计算机架构经验;Baker Mohammad是IEEE会员,研究方向包括硬件加速器和高效计算。这个团队结合了算法优化和硬件设计的专业知识,致力于提高Transformer模型的推理效率。通过他们的共同努力,论文提出的HDP方法为高效Transformer推理提供了新的解决方案。

Transformer模型概述

Transformer模型迅速成为自然语言处理(NLP)和计算机视觉等领域的主流模型,主因是其独特的架构设计使其在处理长序列数据时表现出色。Transformer模型由编码器(Encoder)和解码器(Decoder)两部分组成,每部分又由多个Transformer块(Transformer Block)堆叠而成。

图 1:Transformer区块

每个Transformer块包含以下几个主要组件:

多头自注意力机制(Multi-Head Self-Attention):这是Transformer的核心组件,用于捕捉输入序列中各个元素之间的关系。前馈神经网络(Feed Forward Neural Network, FFN):用于对每个位置的表示进行进一步的非线性变换。归一化层(Normalization Layer):用于稳定和加速训练过程。

编码器和解码器的结构相似,但在功能上有所不同。编码器的主要任务是将输入序列转换为一组连续的表示,而解码器则根据这些表示生成输出序列。在实际应用中,编码器和解码器可以堆叠多个层,以提高模型的表达能力。

自注意力机制是Transformer模型的核心创新之一。它通过计算输入序列中每个元素与其他所有元素之间的关系,来捕捉长程依赖关系。具体来说自注意力机制包括以下几个步骤:

输入嵌入(Input Embedding):将输入序列中的每个元素转换为一个向量表示。查询、键和值(Query, Key, Value):将输入嵌入分别映射到查询(Q)、键(K)和值(V)三个向量空间。映射过程通过三个不同的权重矩阵实现。计算注意力分数(Attention Scores):通过计算查询向量与键向量的点积,得到注意力分数矩阵。点积结果再除以向量维度的平方根进行缩放,以避免点积值过大。应用Softmax函数:对注意力分数矩阵的每一行应用Softmax函数,得到注意力权重矩阵。Softmax函数将分数转换为概率分布,使得每一行的权重和为1。加权求和:将注意力权重矩阵与值向量相乘,得到加权求和结果。这个结果代表了输入序列中每个元素对其他所有元素的加权平均。

图2:BERT-Base 模型中针对 (a) 输入 1、(b) 输入 2 的注意力概率分析。红色框表示同一输入在不同层(第 9、10 和 11 层)的单个头部(Head11)的注意力概率变化。绿色框突出显示了同一头部和具有两个不同输入的层之间的注意力概率对比。第 11 层的头部 0 和头部 1 对于输入 1 显示较低的值,而同一层的头部 1 和头部 2 对于输入 2 显示明显较高的值。

多头自注意力机制通过并行计算多个不同的注意力头(Attention Heads),使模型能够捕捉到输入序列中不同层次的关系。每个注意力头独立计算注意力分数,并将结果拼接在一起,经过线性变换后得到最终的输出。

前馈神经网络(FFN)是Transformer块中的另一个重要组件。它由两个全连接层(Fully Connected Layers)组成,负责对每个位置的表示进行进一步的非线性变换。FFN的具体计算过程如下:

其中,X表示输入向量,W1和W2是权重矩阵,b1和b2是偏置向量,GELU是高斯误差线性单元(Gaussian Error Linear Unit)激活函数。

FFN的作用主要有以下几点:

非线性变换:通过GELU激活函数,FFN引入了非线性变换,使模型能够捕捉到更复杂的特征。特征提取:通过两个全连接层的线性变换,FFN能够提取输入向量中的高维特征。位置独立处理:FFN对每个位置的表示进行独立处理,不依赖于其他位置的上下文信息。这使得FFN能够并行处理输入序列中的所有位置,提高计算效率。

Transformer模型通过自注意力机制和前馈神经网络的结合,能够高效地处理长序列数据,并在多种任务中取得了优异的性能。然而Transformer模型的高计算复杂度和内存需求也带来了实际应用中的挑战。论文提出的混合动态剪枝方法,旨在通过剪枝不重要的计算单元和近似计算,显著提高Transformer模型的推理效率,为在资源受限环境中部署高性能Transformer模型提供了新的解决方案。

混合动态剪枝(HDP)方法

混合动态剪枝(Hybrid Dynamic Pruning, HDP)是一种算法-架构协同设计方法,旨在通过剪枝不重要的计算单元和近似计算来提高Transformer模型的推理效率。HDP方法结合了块剪枝、头剪枝和近似计算,通过动态调整剪枝策略,实现了高效的计算和内存利用。具体来说,HDP方法包括以下几个方面的创新。

基于整数的行平衡块剪枝:通过剪除注意力矩阵中不重要的块,减少计算复杂度和内存访问。基于整数的头剪枝:在计算初期评估头的重要性,剪除不重要的注意力头。近似计算:通过生成分数部分并将其与剪枝后的整数结果相加,得到最终输出,减少计算量。

这些方法在不显著降低模型性能的情况下,实现了高效的剪枝和稀疏化,从而显著提高了Transformer模型的推理效率。

图3:基于整数的行平衡块稀疏度中的块修剪、头部修剪和近似:根据行中每个块的重要性θ与行阈值Θ之间的比较,对IntegerQ×IntegerK的结果进行修剪。对于θHead低于预定义阈值τH的头部,进行头部修剪,图像中用红色框突出显示。近似过程由图像中的黑框突出显示,涉及生成分数分量并将其添加到修剪后的整数结果中以获得最终输出。此图像表示一个Q大小为8×4、K大小为4×8、块大小为2×2的示例。

块剪枝的核心思想是通过剪除注意力矩阵中不重要的块,减少计算复杂度和内存访问。传统的Top-K剪枝方法通过剪除整个行来实现剪枝,但这种方法需要重新训练模型以恢复准确性,并且需要专门的硬件来获取最重要的注意力权重。Energon方法避免了Top-K选择,使用均值过滤作为实际近似,但仍然需要一个单独的单元来执行此操作,并面临数据重复的开销。

为了解决这些挑战,HDP提出了基于整数的行平衡块剪枝方法。该方法通过整数部分的乘法来确定剪枝决策,使用小块大小进行剪枝,避免重新训练并确保稀疏模式的有序性和硬件兼容性。

块剪枝的具体实现过程如下:

整数部分乘法:首先,仅对查询(Q)和键(K)的整数部分进行乘法运算,得到整数注意力矩阵(Integer atten)。块重要性计算:对于每个2×2的块,计算其重要性θ,即块内所有值的绝对值之和。块剪枝比率计算:对于每一行的块,计算块剪枝比率Θ,方法类似于Energon,涉及计算最小值、最大值和均值重要性值,以及预定义的剪枝比率ρB。剪枝决策:如果块的重要性θ低于行特定的阈值Θ,则该块被剪除,掩码值设为0。否则,掩码值设为1,保留块并进行后续计算。

通过这种方法,HDP能够在不显著降低模型性能的情况下,实现高效的块剪枝。

头剪枝的核心思想是通过评估注意力头的重要性,剪除不重要的头,减少计算量。传统的方法在完成所有计算后评估头的重要性,而HDP方法在计算初期就进行评估,从而减少了不必要的计算。

头剪枝的具体实现过程如下:

头重要性计算:计算整数注意力矩阵(Integer atten)中所有值的绝对值之和,得到头的重要性θHead。

剪枝决策:如果头的重要性θHead低于预定义的阈值τH,则该头被剪除,跳过后续计算。否则,保留头并进行后续计算。

通过这种方法,HDP能够在不显著降低模型性能的情况下,实现高效的头剪枝。

近似计算的核心思想是通过生成分数部分并将其与剪枝后的整数结果相加,得到最终输出,减少计算量。具体来说近似计算包括以下几个步骤:

整数部分乘法:首先,仅对查询(Q)和键(K)的整数部分进行乘法运算,得到整数注意力矩阵(Integer atten)。分数部分乘法:计算查询的分数部分与键的整数部分的乘积(F rac1 atten),以及查询的整数部分与键的分数部分的乘积(F rac2 atten)。结果合并:将整数注意力矩阵(Integer atten)与两个分数部分的乘积相加,得到最终的注意力分数。

HDP能够在不显著降低模型性能的情况下,实现高效的近似计算。

近似计算的具体实现过程如下:

整数部分乘法:首先,仅对查询(Q)和键(K)的整数部分进行乘法运算,得到整数注意力矩阵(Integer atten)。分数部分乘法:对于保留的块,计算查询的分数部分与键的整数部分的乘积(F rac1 atten),以及查询的整数部分与键的分数部分的乘积(F rac2 atten)。结果合并:将整数注意力矩阵(Integer atten)与两个分数部分的乘积相加,得到最终的注意力分数。

HDP能够在不显著降低模型性能的情况下,实现高效的近似计算。

硬件架构设计

为了高效执行混合动态剪枝(HDP)方法,研究团队设计了一种新的HDP加速器。该加速器作为协处理器,与现有的神经网络加速器兼容,能够在移动和服务器平台上加速HDP算法。HDP加速器的设计目标是通过硬件优化,实现高效的块剪枝、头剪枝和近似计算,从而显著提高Transformer模型的推理效率。

图4:HDP架构概述。

HDP加速器的架构包括多个核心,每个核心由处理单元阵列(PE Array)、稀疏引擎(SE)、加法器和Softmax单元组成。处理单元阵列负责矩阵乘法操作,稀疏引擎负责确定剪枝模式,加法器用于结果合并,Softmax单元用于计算注意力权重。通过精心设计的流水线和架构优化,HDP加速器能够显著提升性能并降低能耗。

处理单元(Processing Element, PE)是HDP加速器中的基本计算单元,负责执行所有的矩阵乘法操作。PE的设计采用输出驻留模式,类似于脉动阵列(Systolic Array)PE。具体来说,PE接收来自第一个矩阵的行和第二个矩阵的列作为输入,一次接收一个输入值。PE将这些值相乘,并将中间结果存储在累加器中,直到第一个矩阵的整行与第二个矩阵的对应列相乘完毕。此时,累加器中保存了结果矩阵的一个块的最终结果。

在整数Q × 整数K的乘法过程中,这些结果还用于确定块的重要性,因为处理单元的输出对应于结果矩阵中的一个块。块的重要性等于累加器中所有值的绝对值之和。

稀疏引擎(Sparsity Engine, SE)负责确定块和头的稀疏模式。稀疏引擎的内部架构接收来自处理单元的重要性分数,并将其存储在内部存储器中。此外,稀疏引擎还跟踪每一行块的重要性值的最小值、最大值和总和。

在接收到END R信号(表示结果矩阵的一整行计算完成)后,稀疏引擎计算该行的块剪枝阈值Θ。该计算基于预定义的剪枝比率ρB,并使用最小值、最大值和均值重要性值。稀疏引擎生成该行的剪枝掩码,如果块的重要性低于阈值Θ,则该块被剪除。

此外,当接收到END H信号(表示整数Q × 整数K乘法完成)后,稀疏引擎使用计算得到的头重要性值θHead,并将其与预定义的头剪枝阈值τH进行比较。如果θHead低于τH,则该头被认为是不重要的,后续计算将被跳过。

图5:使用数据流进行矩阵乘法平铺。

在获得注意力分数后,Softmax模块对每一行的注意力分数应用Softmax函数。对于每个输入,Softmax模块使用二次多项式近似指数计算,并将结果存储在内部存储器中。每行结束时,计算这些指数结果的总和的倒数,并通过线性近似计算倒数。然后,将指数值乘以倒数,生成Softmax结果。

在Transformer模型中,矩阵乘法占据了大量的计算工作负载。为了优化这些操作,HDP加速器采用了平铺矩阵乘法(Tiled Matrix Multiplication)技术。平铺矩阵乘法通过将大矩阵分割成小块(Tile),并行计算这些小块,提高了资源利用率和计算效率。

平铺矩阵乘法的过程如下:

将矩阵A的第一个4×4块与矩阵B的第一个4×8块相乘,部分结果存储在矩阵C的4×8块中。继续处理矩阵A和矩阵B的下一个块,累加部分结果到矩阵C中。重复上述过程,直到所有块的计算完成。

在这个过程中,HDP加速器采用输出驻留数据流方法,重用累加器中的部分和输出。此外,HDP加速器还采用局部A驻留策略,即在外循环中重用输出,在内循环中保留和重用矩阵A的输入。

图6:稀疏引擎(SE)的内部架构。

为了进一步优化数据流,HDP加速器采用了以下策略:

Fetch Upon Mask(FUM)策略:在块剪枝过程中,如果掩码值为0,表示该块被剪除,则不获取对应的K值,跳过该块的计算。如果掩码值为1,表示该块保留,则获取对应的Q和K值,并进行计算。流水线设计:通过精心设计的流水线,HDP加速器能够并行处理多个计算任务,提高计算效率。局部存储优化:通过优化局部存储的使用,减少数据传输的开销,提高数据访问效率。

通过这些数据流优化策略,HDP加速器能够显著提高Transformer模型的推理效率,降低能耗。

实验评估

为了验证混合动态剪枝(HDP)方法的有效性,研究团队选择了两个预训练的编码器模型:BERT-Tiny和BERT-Base。BERT-Tiny由两个编码器层组成,每层有128个隐藏单元和两个注意力头;BERT-Base则包含12个编码器层,每层有768个隐藏单元和12个注意力头。这些模型在机器翻译和语言生成等应用中表现出色,具有较高的效率和可扩展性。

实验评估使用了两个基准任务:SST-2(Stanford Sentiment Treebank)和COLA(Corpus of Linguistic Acceptability),均来自GLUE基准测试。这些数据集广泛用于评估自然语言处理模型的性能,能够全面反映模型在不同任务上的表现。

在块剪枝实验中,研究团队将HDP方法与传统的Top-K块剪枝方法进行了比较。Top-K方法通过剪除整个行来实现剪枝,但需要重新训练模型以恢复准确性。HDP方法通过基于整数的行平衡块剪枝,避免了重新训练,并确保稀疏模式的有序性和硬件兼容性。

图7:Top-k VS HDP 块修剪。

实验结果表明,HDP方法在块剪枝方面表现优异。在剪枝比率为70%时,HDP方法能够保持较高的准确性,而Top-K方法在剪枝比率超过75%时准确性显著下降。这表明HDP方法在高剪枝比率下仍能有效保持模型性能。

在头剪枝实验中,研究团队评估了HDP方法在BERT-Tiny和BERT-Base模型上的表现。实验结果显示,BERT-Tiny对头剪枝非常敏感,因为其注意力头数量较少,剪除一个头相当于剪除四分之一的头。相比之下,BERT-Base模型由于注意力头数量较多,能够在剪除13-17%的头时仅损失1%的准确性。

图8:SST2和CoLA上BERT Base和BERT Tiny的头部修剪阈值。

这表明HDP方法在头剪枝方面具有较高的灵活性和适应性,能够在不显著降低模型性能的情况下实现高效的头剪枝。

在近似计算实验中,研究团队评估了HDP方法的近似计算对模型准确性的影响。实验结果显示,对于BERT-Base模型,近似计算对模型性能影响较小,能够显著提高计算效率。而对于BERT-Tiny模型,近似计算对性能的影响较大,但仍能在一定程度上保持模型的准确性。

这表明HDP方法的近似计算能够在不显著降低模型性能的情况下,实现高效的计算优化。

在综合剪枝实验中,研究团队结合块剪枝、头剪枝和近似计算,评估了HDP方法的整体效果。实验结果显示,BERT-Base模型在SST-2数据集上实现了75%的稀疏性,在COLA数据集上实现了65%的稀疏性。相比之下,Top-K方法在相同剪枝比率下的准确性显著下降。

这表明HDP方法能够通过综合剪枝策略,在不显著降低模型性能的情况下,实现高效的稀疏化和计算优化。

为了评估HDP方法的头剪枝效果,研究团队将其与SpAtten方法进行了比较。SpAtten是目前唯一在硬件平台上动态应用头剪枝的方法。实验结果显示,HDP方法在BERT-Base模型上的头剪枝效果与SpAtten相当,能够剪除约17%的头而不损失准确性。

然而在更高的剪枝比率下,HDP方法的准确性下降较少。例如,在35%的剪枝比率下,HDP方法的准确性下降为7.5%,而SpAtten方法的准确性下降为10%。这表明HDP方法在高剪枝比率下表现更为优异。

除了与SpAtten的比较,研究团队还将HDP方法与其他Transformer加速器进行了比较。实验结果显示,HDP方法在块剪枝、头剪枝和近似计算方面均表现出色,能够显著提高Transformer模型的推理效率。

通过与其他加速器的比较,HDP方法展示了其在高效剪枝和稀疏化方面的优势,能够在不显著降低模型性能的情况下,实现高效的计算优化。

结论

论文提出了一种名为混合动态剪枝(Hybrid Dynamic Pruning, HDP)的算法-架构协同设计方法,旨在通过剪枝不重要的计算单元和近似计算来提高Transformer模型的推理效率。HDP方法结合了块剪枝、头剪枝和近似计算,通过动态调整剪枝策略,实现了高效的计算和内存利用。

实验评估结果表明,HDP方法在块剪枝、头剪枝和近似计算方面均表现出色,能够显著提高Transformer模型的推理效率。在BERT-Tiny和BERT-Base模型上进行的实验显示,HDP方法在不显著降低模型性能的情况下,实现了高效的稀疏化和计算优化。与传统的Top-K块剪枝方法和SpAtten头剪枝方法相比,HDP方法在高剪枝比率下表现更为优异。

此外,论文还设计并实现了两种协处理器架构(HDP-Edge和HDP-Server),用于在移动和服务器平台上加速HDP算法。通过精心设计的流水线和数据流优化策略,HDP加速器能够显著提升性能并降低能耗。

尽管HDP方法在提高Transformer模型推理效率方面取得了显著进展,但仍有一些方向值得进一步探索和优化:

模型泛化能力:未来研究可以进一步探索HDP方法在不同类型的Transformer模型(如GPT、T5等)上的适用性和效果。通过在更多模型上验证HDP方法的有效性,可以提高其泛化能力和应用范围。

剪枝策略优化:尽管HDP方法在块剪枝和头剪枝方面表现出色,但仍有优化空间。未来研究可以探索更精细的剪枝策略,例如基于动态稀疏性的自适应剪枝方法,以进一步提高剪枝效果和模型性能。

硬件架构优化:HDP加速器的设计已经显著提高了计算效率,但仍有进一步优化的可能。未来研究可以探索更高效的硬件架构设计,例如基于新型存储器技术和计算单元的优化设计,以进一步降低能耗和提高性能。

应用场景扩展:HDP方法在自然语言处理和计算机视觉等领域表现出色,但其应用场景可以进一步扩展。未来研究可以探索HDP方法在其他领域(如语音识别、推荐系统等)中的应用潜力,以实现更广泛的应用价值。

自动化工具开发:为了方便研究人员和工程师应用HDP方法,未来可以开发一套自动化工具,用于模型剪枝和硬件加速器设计。这些工具可以简化HDP方法的应用流程,提高研究和开发效率。

总的来说,HDP方法为高效Transformer推理提供了一条新的途径,通过结合算法优化和硬件设计,实现了计算效率和模型性能的双重提升。未来的研究和应用将进一步推动HDP方法的发展,为更多领域的高效计算提供支持。(END)

参考资料:https://arxiv.org/pdf/2407.12893

波动世界(PoppleWorld)是噬元兽数字容器的一款AI应用,是由AI技术驱动的帮助用户进行情绪管理的工具和传递情绪价值的社交产品,基于意识科学和情绪价值的理论基础。波动世界将人的意识和情绪作为研究和应用的对象,探索人的意识机制和特征,培养人的意识技能和习惯,满足人的意识体验和意义,提高人的自我意识、自我管理、自我调节、自我表达和自我实现的能力,让人获得真正的自由快乐和内在的力量。波动世界将建立一个指导我们的情绪和反应的价值体系。这是一款针对普通人的基于人类认知和行为模式的情感管理Dapp应用程序。

0 阅读:0

独角也有噬元兽

简介:感谢大家的关注