CN117609952A - 一种Transformer网络的算子融合方法、装置及板卡 - Google Patents
一种Transformer网络的算子融合方法、装置及板卡 Download PDFInfo
- Publication number
- CN117609952A CN117609952A CN202311800886.3A CN202311800886A CN117609952A CN 117609952 A CN117609952 A CN 117609952A CN 202311800886 A CN202311800886 A CN 202311800886A CN 117609952 A CN117609952 A CN 117609952A
- Authority
- CN
- China
- Prior art keywords
- nodes
- network
- operator
- node
- intensive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007500 overflow downdraw method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 36
- 230000004927 fusion Effects 0.000 claims abstract description 35
- 230000005540 biological transmission Effects 0.000 claims description 16
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000010606 normalization Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 claims description 8
- 239000011159 matrix material Substances 0.000 claims description 7
- 230000004913 activation Effects 0.000 claims description 6
- 239000000758 substrate Substances 0.000 claims 1
- 230000006870 function Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 10
- 230000015654 memory Effects 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 238000013528 artificial neural network Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 238000013135 deep learning Methods 0.000 description 3
- IZUPBVBPLAPZRR-UHFFFAOYSA-N pentachlorophenol Chemical compound OC1=C(Cl)C(Cl)=C(Cl)C(Cl)=C1Cl IZUPBVBPLAPZRR-UHFFFAOYSA-N 0.000 description 3
- 238000010801 machine learning Methods 0.000 description 2
- 238000003058 natural language processing Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/25—Fusion techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7803—System on board, i.e. computer system on one or more PCB, e.g. motherboards, daughterboards or blades
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Neurology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Computational Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Supply And Distribution Of Alternating Current (AREA)
Abstract
本发明公开了一种Transformer网络的算子融合方法、装置及板卡,该方法包括:获取包含N个算子节点的Transformer网络,在N个算子节点中确定M1个计算密集节点和M2个IO密集节点;以每个计算密集节点为中心查找与其位置相邻的IO密集节点;将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络;将包含M1个层级结构的Transformer网络替换N个算子节点的Transformer网络,并利用替换后的Transformer网络处理特征数据。本方案减少了Transformer网络中算子的个数,进而减少IO数据量,提升了网络性能。
Description
技术领域
本发明涉及人工智能技术领域,尤其是涉及一种Transformer网络的算子融合方法、装置及板卡。
背景技术
Transformer(硬件加速器)是一种用于序列到序列任务的神经网络架构,由Google于2017年提出。它完全基于自注意力机制(self-attention mechanism),而不使用传统的递归或卷积结构。Bert(Bidirectional Encoder Representations fromTransformers,双向编码器转换器中的编码器)是Transformer的一个具体应用,由Google于2018年提出。它是一个预训练的语言模型,通过在大规模的无标签数据上进行无监督的训练,得到了丰富的句子表示。
Transformer和Bert网络都采用了自注意力机制,这使得网络能够充分考虑序列中不同位置之间的依赖关系,从而能够更好地捕捉序列中的语义信息。通过预训练和微调的方式,Transformer和BERT网络可以适应不同的下游任务,提供更强大和泛化能力的自然语言处理模型。
在Transformer和Bert网络中,编码和解码网络均由多头注意力(Multi-headAttention,MHA)层和前馈神经网络(Feed Forward Network)层组成,如图1所示,因此对这两种结构的性能优化对整体网络性能最为重要。参见图2,是Bert网络的一个编码层的计算过程示意图,该Bert网络包含15个算子步骤。其中算子步骤1~9属于多头注意力层MHA的处理过程,算子步骤10~15属于前馈神经网络层FFN的处理过程。
为了优化Transformer性能,可以将15个算子步骤进行融合,算子融合的好处主要是为了减少片上与片下之间输入输出(I/O)量,因此如何对网络结构中的算子进行融合是本领域人员亟待解决的问题。
发明内容
有鉴于此,本发明提供一种Transformer网络的算子融合方法、装置及板卡,以减少片上、片下之间IO量,提高Transformer网络的整体性能。
第一方面,本发明提供了一种Transformer网络的算子融合方法,方法包括:
获取Transformer网络,该Transformer网络中包含N个算子节点组成;
在N个算子节点中确定M1个计算密集节点和M2个IO密集节点,且M1+M2=N;
以每个计算密集节点为中心查找与其位置相邻的IO密集节点;
将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络;
将包含M1个层级结构的Transformer网络替换N个算子节点的Transformer网络,并利用替换后的Transformer网络处理特征数据。
结合第一方面,在一种可能的实施方式中,生成包含M1个层级结构的Transformer网络之后,还包括:判断在M1个层级结构中是否存在结构相对固定的一个或多个层级;如果是,则确定结构相对固定的P个层级,并将P个层级融合为一个层级结构,得到M1-P+1个层级结构的Transformer网络,1≤P<M1;将M1-P+1个层级结构的Transformer网络替换N个算子节点的Transformer网络,并利用替换后的Transformer网络处理特征数据。
本实施方式将结构相对固定的若干个层级再融合,进一步减少Transformer网络中层级的数量,从而片上和片下的IO量,提升了网络性能。
结合第一方面,在另一种可能的实施方式中,结构相对固定的一个或多个层级是指:在以注意力机制为算法核心的多个网络中,每个网络都包含P个层级组成的网络片段,且网络片段的拓扑结构不变。
结合第一方面,在又一种可能的实施方式中,N个算子节点中每个算子节点包括计算装置和存储装置,其中计算装置和存储装置之间发生IO数据传输。
在N个算子节点中确定M1个计算密集节点和M2个IO密集节点,包括:计算N个算子节点的每个算子节点上的计算时间和数据传输时间;根据每个算子节点上的计算时间和数据传输时间的比较结果,确定当前节点是计算密集节点,还是IO密集节点;统计比较后的确定结果,得到M1个计算密集节点和M2个IO密集节点。
结合第一方面,在又一种可能的实施方式中,将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,包括:判断每个计算密集节点是否存在一个或多个邻居IO密集节点;如果是,则将一个或多个邻居IO密集节点与计算密集节点相融合;如果否,则将当前计算密集节点单独形成一层结构。
可选的,M1个计算密集节点中包括:矩阵乘节点、softmax节点;M2个IO密集节点中包括:对位操作节点、激活函数节点和归一化节点。
结合第一方面,在又一种可能的实施方式中,当N为15,M1为7,P为3时,将P个层级融合为一个层级结构,得到M1-P+1个层级结构的Transformer网络,包括:将3个层级融合为一个层级结构,得到包含5个层级结构的Transformer网络。
第二方面,本发明提供了一种Transformer网络的算子融合装置,所述装置包括:
获取模块,用于获取Transformer网络,所述Transformer网络中包含N个算子节点组成;
确定模块,用于在所述N个算子节点中确定M1个计算密集节点和M2个IO密集节点,且M1+M2=N;
查找模块,用于以每个所述计算密集节点为中心查找与其位置相邻的IO密集节点;
生成模块,用于将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络;
替换模块,用于将包含所述M1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
第三方面,本发明提供了一种板卡,其特征在于,包括至少一个芯片、对外接口装置、控制器件和存储器件,芯片通过对外接口装置与外部设备连接;存储器件通过总线与控制器件和至少一个芯片进行连接和数据传输;控制器件配置用于对至少一个芯片的状态进行调控;
其中,每个芯片中包括:处理装置和存储装置;存储装置中存储有计算机指令;处理装置通过执行计算机指令,从而执行前述第一方面或第一方面任一实施方式中的Transformer网络的算子融合方法。
第四方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行前述第一方面或第一方面任一实施方式中的Transformer网络的算子融合方法。
本实施例提供的方法和装置,先将Transformer网络中的N个算子节点划分成计算密集节点和IO密集节点,然后再对以每个计算密集节点为中心查找与其位置相邻的IO密集节点;并将所有相邻IO密集节点与对应的计算密集节点相融合,生成包含多个层级结构的Transformer网络,相比于N个算子节点的Transformer网络,融合后的网络中减少了Transformer网络中算子的个数,从而减少了片上和片下的IO数据量,提升了网络性能。
另外,本方法灵活性高、对Transformer网络进行修改的幅度小。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是现有的一种硬件加速器Transformer的结构示意图;
图2是本发明实施例提供的一种典型的Bert网络中各层级算子的结构示意图;
图3是本发明实施例提供的一种Transformer网络的算子融合方法的流程图;
图4是本发明实施例提供的另一种Transformer网络的算子融合方法的流程图;
图5是本发明实施例提供的一种算子融合后的Transformer网络结构的示意图;
图6是本发明实施例提供的一种Transformer网络的算子融合装置的结构框图;
图7是本发明实施例提供的一种板卡的结构示意图;
图8是本发明实施例提供的一种芯片中的组合处理装置的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请技术方案涉及神经网络结构,尤其是基于一种Transformer硬件加速器的神经网络架构。
如图2所示,为典型的Bert网络中各层级算子的结构示意图,其中从特征数据输入(input)到输出(output)结束,该网络中一共经历15个算子运算。具体地,这15种算子包括依次如下:层归一化运算(layer normalization,LN)、FC(Feed Forward,前馈)、add bias(连接和偏置)、Batched matmul(批量矩阵乘法操作)、Softmax函数运算、Batched matmul、permute运算、FC、连接偏置Add bias&残差residual运算、layer normalization、FC、addbias、GeLU函数、FC和Add bias&residual运算。
其中,算子融合是重要的性能优化手段之一。在典型的异构计算系统中,算子融合的收益主要来自于片上与片下之间IO量的减少。融合策略可大体分为细粒度融合和粗粒度融合。
细粒度融合,通常不会融合全连接和矩阵乘的操作。以图2为例,细粒度融合通常只会将算子9和算子10,算子12和算子13,算子15和下一层的算子1两两融合。另外,在一些可能的实施方式中,算子4~算子7之间的功能也会融合为一个算子。因此,采用细粒度融合算子的方法可以将15个算子缩减到9~12个算子。这种方法仍旧会存在有大量的中间结果的输入输出IO量,大幅影响了Transformer网络的整体性能。
粗粒度融合,该方法更加激进,将算子1~9和算子10~15分别融合成单个算子,从而整个编码层融合后生成只有两个融合算子,这种方法虽然能够减少IO量,但其实现难度高,并且难以适应其他的变体网络。
为了解决上述对Transformer网络的算子在做融合过程中,细粒度融合和粗粒度融合引起的问题,本发明实施例在高性能和灵活性之间取得一个平衡,既通过算子融合大幅提升了性能,又保留了常见的网络修改和定制的空间。
下面对本发明实施例提供的技术方案做详细说明。
本发明实施例提供了一种Transformer网络的算子融合方法,该可用于一种电子设备,如板卡,如图3所示,该流程包括:
步骤S101:获取Transformer网络,该Transformer网络中包含N个算子节点组成。
其中,Transformer网络是做算子节点融合前的网络。如图2所示,典型的Bert网络结构中包含15个算子节点,即N=15,N为正整数。该15个算子中各个算子节点的位置和内容可与图2所示的结构相同。参见前述对图2的描述,本实施例此处不再赘述。
需要说明的是,上述Transformer网络结构中的各个算子节点也可以简称为“节点”。每个节点代表一层运算,或者一步处理过程。
步骤S102:在所述N个算子节点中确定M1个计算密集节点和M2个IO密集节点。
本步骤,先将Transformer网络中的所有结点划分成计算密集节点和IO密集节点两类。其中,所述计算密集节点是指在该节点包含的计算装置和存储装置中,计算装置工作处理的行为大于/超过IO传输的行为,则该装置属于计算密集节点;反之,如果计算装置的工作量小于等于IO传输量,即整个节点的行为偏IO传输,则该节点属于IO密集节点。
可选的,对Transformer网络而言,计算密集结点中包括:矩阵乘和Softmax等算子节点,IO密集结点中包括:对位操作和激活函数等算子节点。即步骤S102中,M1个计算密集节点中包括:矩阵乘节点、Softmax节点;M2个IO密集节点中包括:对位操作节点、激活函数节点和归一化节点。且M1+M2=N,M1和M2均为正整数,且M1和M2≥1。
步骤S103:以每个所述计算密集节点为中心查找与其位置相邻的IO密集节点。
经过上述步骤S102的查找,可以确定N个算子节点中所有FC节点都属于计算密集节点,即第2、第8、第11、第14个算子节点都是计算密集节点,此外,经过步骤S102的筛选,还确定Batched matmul节点、Softmax节点,所以Transformer网络中第4、第5和第6个算子节点也都是计算密集节点,进而得到共7个计算密集节点,M1=7。
上述之外的其他节点为IO密集节点,比如LN节点、add bias节点、permute、Addbias&residual节点、add bias节点、GeLU函数、Add bias&residual节点。
本示例中,对于第2个算子节点FC而言,其位置相邻IO密集节点有layernormalization和add bias节点;对于第8个算子节点FC而言,其位置相邻的IO密集节点有Add bias&residual节点;对于第11个FC节点而言,其位置相邻IO密集节点有第10个节点(layer normalization节点)、第12个节点(add bias)和第13个节点(GeLU函数);对于第14个FC节点而言,其相邻IO密集节点有第15个节点(Add bias&residual运算)。
步骤S104:将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络。
即将每个计算密集节点与其相邻的IO密集节点进行融合生成M1个层级结构的Transformer网络。例如按照步骤S103的查找结果,计算密集结点M1=7,融合成包含7个层级结构的Transformer网络。
所述包含7个层级结构的Transformer网络分别是:第一层包含第1~3个节点、第二层包含第4个节点、第三层包含第5~6个节点、第四层包含第7个节点、第五层包含第8~9个节点、第六层包含第10~13个节点、第七层包含第14~15个节点。
可选的,上述7个层级结构又可以称为Projection层。
步骤S105:将包含所述M1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
将算子融合后生成的包含7个层结构的Transformer网络替换原包含15个层结构的Transformer网络,并利用该融合后的Transformer网络对输入的特征数据input进行处理,输出output给下一层。
本实施例提供的方法,将IO密集结点和相邻的计算密集结点融合到一个层级,使得融合后的Transformer网络结构极大程度上减少片上和片下的IO数据量,且融合后的IO密集结点可以获得较大收益。例如,计算全连接是计算密集的任务,而计算激活、加残差是IO密集的任务;将IO密集任务其与相邻的全连接计算相融合,就可以在几乎不影响全连接计算效率的情况下省去IO密集任务的IO量,提升了Transformer网络性能。
在另一实施方式中,如图4所示,上述步骤S101至S104之后,还包括:
步骤S105’:判断在所述M1个层级结构中是否存在结构相对固定的一个或多个层级。如果是,即存在结构相对固定的算子节点,则执行步骤S106。
其中,结构相对固定的一个或多个算子节点是指:在以注意力机制为算法核心的多个网络中,每个网络都包含所述P个层级组成的网络片段,且所述网络片段的拓扑结构不变。
可选的,本示例中,所述网络片段可由前述第四、第五和第六共3个层级组成,这3个层级对应第4~7个算子节点,且该第4~7个算子节点在网络片段的拓扑结构保持不变。
另外,所述以注意力机制为算法核心的多个网络,包括但不限于:bert网络、swintransformer网络、GPT网络、conformer网络。本示例中,由第4~7个算子节点(包括Batchedmatmul、Softmax函数运算、Batched matmul、permute)组成的网络片段在上述各个网络中保持拓扑结构不变。
应理解,上述组成网络片段的算子还可以包括其他算子节点,这些算子节点可由系统预先设置添加,本实施例对此不做限制。
步骤S106:确定结构相对固定的P个层级,并将所述P个层级融合为一个层级结构,得到M1-P+1个层级结构的Transformer网络其中,1≤P<M1。
本示例中,当N=15,M1=7,P=3时,步骤S106,具体包括:将3个层级融合为一个层级结构,得到包含5(7-3+1)个层级结构的Transformer网络。融合后的网络结构如图5所示,其中,第4~第7个算子融合成的层级由于具有相对固定的特性,所以将该融合层称为“Attention Layer”。
步骤S107:将所述M1-P+1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
即将包含5个层级结构的Transformer网络替换原15个层级结构的Transformer网络。
如果否,则执行步骤S105,具体过程参见前述实施例描述,此处不再赘述。
本实施例中,考虑网络结构的灵活性。由于变体网络一般不会改变网络的主要结构,如注意力层(Attention层)中的算子节点,而是会修改或增加网络中其他算子节点,比如归一化算子、激活函数等IO密集结点,因此,做算子融合时考虑未来适配新变体的可能性,将相对固定的第4~7个算子节点融合成attention层,从而进一步减少IO数据量;而对于可能修改的层,则不做进一步融合操作。
本实施例提供的一种Transformer网络中算子的融合方案,主要是将全连接层FC(计算密集节点)与前后邻居的IO密集节点相融合,融合后的层称之为全连接层,英文:Projection层,由此将整个编码层划分为多个Projection层与一个Attention层,如图5所示。其中,Attention层的功能较为固定,因为该层算子节点结构固定,而Projection层可以支持以下功能:
第一、第一层级中的第1~3个算子节点支持全连接(FC)操作和偏置(bias)运算;
第二、在全连接之前对输入算子进行归一化,或在全连接之后对结果进行归一化LN;
第三、全连接后对结果进行激活操作,比如GeLU函数。
本实施例融合后得到网络结构,与细粒度融合相比,可进一步减少网络中算子的个数,从而减少片上和片下的IO数据量,提升了Transformer网络性能;与粗粒度融合相比,有着更好的灵活性,可以更容易地对Projection层的算子进行修改,例如:在前馈网络的第二个全连接层之前,对输入特征数据再次进行归一化操作。
融合后的Transformer网络,在高性能和灵活性之间取得平衡,既通过算子融合大幅提升了性能,又保留了常见的网络修改和定制的空间。
可选的,在另一种可能的实施方式中,上述N个算子节点中,每个算子节点均包括:计算装置和存储装置,其中所述计算装置和所述存储装置之间存在IO数据传输。
上述步骤S102,可根据Transformer网络硬件规格和算子计算方式(数学公式)确定每个算子节点是否属于计算密集节点,还是IO密集节点。
具体地,包括:计算所述N个算子节点的每个算子节点上的计算时间和数据传输时间;根据每个算子节点上的计算时间和数据传输时间的比较结果,确定当前节点是计算密集节点,还是IO密集节点;统计比较后的确定结果,得到所述M1个计算密集节点和所述M2个IO密集节点。
如果当前节点在计算处理过程的耗时时间大于IO数据传输的耗时,则确定该节点为计算密集节点;如果计算耗时的时间小于IO数据传输耗时,则确定该节点为IO密集节点。以此类推,遍历N个节点逐一判断每个节点的类型,统计后得到M1个计算密集节点和M2个IO密集节点。
可选的,在另一些实施例中,上述步骤S104之前,还包括:判断每个计算密集节点是否存在一个或多个邻居IO密集节点;如果是,则将所述一个或多个邻居IO密集节点与计算密集节点相融合;如果否,则将当前计算密集节点单独形成一层结构。
比如对于上述N个计算节点的Transformer网络,第4和第7个算子节点都是计算密集节点,且周围不存在邻居IO密集节点,则将该第4和第7个算子节点单独形成一个层结构,分别形成第二层和第四层层级结构。
在本实施例中还提供了一种算子融合装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本实施例提供一种Transformer网络的算子融合装置,如图6所示,该装置包括:获取模块610、确定模块620、查找模块630、生成模块640和替换模块650。此外,该装置中还可以包括其他模块,本实施例对此不做限制。
其中,获取模块610,用于获取Transformer网络,所述Transformer网络中包含N个算子节点组成。
确定模块620,用于在所述N个算子节点中确定M1个计算密集节点和M2个IO密集节点,且M1+M2=N。
查找模块630,用于以每个所述计算密集节点为中心查找与其位置相邻的IO密集节点;
生成模块640,用于将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络。
替换模块650,用于将包含所述M1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
可选的,在一种可能的实施方式中,所述生成模块640,还用于判断在M1个层级结构中是否存在结构相对固定的一个或多个层级;如果是,则确定结构相对固定的P个层级,并将所述P个层级融合为一个层级结构,得到M1-P+1个层级结构的Transformer网络。
替换模块650,还用于将M1-P+1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
其中,结构相对固定的一个或多个层级是指:在以注意力机制为算法核心的多个网络中,每个网络都包含所述P个层级组成的网络片段,且所述网络片段的拓扑结构不变。
可选的,在另一种可能的实施方式中,所述N个算子节点中每个所述算子节点包括计算装置和存储装置,其中所述计算装置和所述存储装置之间发生IO数据传输。
确定模块620,具体用于计算N个算子节点的每个算子节点上的计算时间和数据传输时间;根据每个算子节点上的所述计算时间和所述数据传输时间的比较结果,确定当前节点是计算密集节点,还是IO密集节点;统计比较后的确定结果,得到M1个计算密集节点和M2个IO密集节点。
可选的,在又一种可能的实施方式中,生成模块640,还用于判断每个计算密集节点是否存在一个或多个邻居IO密集节点;如果是,则将一个或多个邻居IO密集节点与计算密集节点相融合;如果否,则将当前计算密集节点单独形成一层结构。
本实施例提供的装置,先将Transformer网络中的N个算子节点划分成计算密集节点和IO密集节点,然后再对以每个计算密集节点为中心查找与其位置相邻的IO密集节点;并将所有相邻IO密集节点与对应的计算密集节点相融合,生成包含多个层级结构的Transformer网络,相比于N个算子节点的Transformer网络,融合后的网络中减少了Transformer网络中算子的个数,从而减少了片上和片下的IO数据量,提升了网络性能。另外,本装置灵活性高、对Transformer网络进行修改的幅度小。
需要说明的是,上述各个模块和单元的更进一步的功能描述与上述方法实施例相同,在此不再赘述。
在具体硬件层面,上述Transformer网络可以具体集成在一种板卡或其他电子设备。
图7示出本披露实施例的一种板卡10的结构示意图。如图7所示,板卡10包括至少一个芯片101,其是一种系统级芯片(System on Chip,SoC),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
每个芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如PCIe接口等。
板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(Micro Controller Unit,MCU)。
图8是示出此实施例的芯片101中的组合处理装置的结构图。如图8中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
其中,计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步地,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,DSP)、专用集成电路(application specificintegrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
存储装置204用以存储待处理的数据,所述存储装置204可以是动态随机存取存储器(Dynamic Random Access Memory,DRAM),为DDR(Double Data Rate双倍速率,DDRSDRAM)内存,大小通常为16G或更大,用于保存计算装置201和/或处理装置203的数据。
此外,本发明实施例还提供了一种计算机可读存储介质,上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可记录在存储介质,或者被实现通过网络下载的原始存储在远程存储介质或非暂时机器可读存储介质中并将被存储在本地存储介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件的存储介质上的这样的软件处理。
其中,存储介质可为磁碟、光盘、只读存储记忆体、随机存储记忆体、快闪存储器、硬盘或固态硬盘等;进一步地,存储介质还可以包括上述种类的存储器的组合。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件,当软件或计算机代码被计算机、处理器或硬件访问且执行时,实现上述实施例示出的Transformer网络的算子融合方法。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下做出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (10)
1.一种Transformer网络的算子融合方法,其特征在于,所述方法包括:
获取Transformer网络,所述Transformer网络中包含N个算子节点组成;
在所述N个算子节点中确定M1个计算密集节点和M2个IO密集节点,且M1+M2=N;
以每个所述计算密集节点为中心查找与其位置相邻的IO密集节点;
将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络;
将包含所述M1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
2.根据权利要求1所述的方法,其特征在于,所述生成包含M1个层级结构的Transformer网络之后,还包括:
判断在所述M1个层级结构中是否存在结构相对固定的一个或多个层级;
如果是,则确定结构相对固定的P个层级,并将所述P个层级融合为一个层级结构,得到M1-P+1个层级结构的Transformer网络,1≤P<M1;
将所述M1-P+1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
3.根据权利要求2所述的方法,其特征在于,所述结构相对固定的一个或多个层级是指:在以注意力机制为算法核心的多个网络中,每个网络都包含所述P个层级组成的网络片段,且所述网络片段的拓扑结构不变。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述N个算子节点中每个所述算子节点包括计算装置和存储装置,其中所述计算装置和所述存储装置之间发生IO数据传输;
在所述N个算子节点中确定M1个计算密集节点和M2个IO密集节点,包括:
计算所述N个算子节点的每个算子节点上的计算时间和数据传输时间;
根据每个算子节点上的所述计算时间和所述数据传输时间的比较结果,确定当前节点是计算密集节点,还是IO密集节点;
统计比较后的确定结果,得到所述M1个计算密集节点和所述M2个IO密集节点。
5.根据权利要求1-3任一项所述的方法,其特征在于,将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,包括:
判断每个所述计算密集节点是否存在一个或多个邻居IO密集节点;
如果是,则将所述一个或多个邻居IO密集节点与计算密集节点相融合;
如果否,则将当前计算密集节点单独形成一层结构。
6.根据权利要求2所述的方法,其特征在于,
所述M1个计算密集节点中包括:矩阵乘节点、softmax节点;
所述M2个IO密集节点中包括:对位操作节点、激活函数节点和归一化节点。
7.根据权利要求1-3任一项所述的方法,其特征在于,当N为15,M1为7,P为3时,
所述将所述P个层级融合为一个层级结构,得到M1-P+1个层级结构的Transformer网络,包括:
将3个层级融合为一个层级结构,得到包含5个层级结构的Transformer网络。
8.一种Transformer网络的算子融合装置,其特征在于,所述装置包括:
获取模块,用于获取Transformer网络,所述Transformer网络中包含N个算子节点组成;
确定模块,用于在所述N个算子节点中确定M1个计算密集节点和M2个IO密集节点,且M1+M2=N;
查找模块,用于以每个所述计算密集节点为中心查找与其位置相邻的IO密集节点;
生成模块,用于将查找到的所有相邻IO密集节点与对应的M1个计算密集节点相融合,生成包含M1个层级结构的Transformer网络;
替换模块,用于将包含所述M1个层级结构的Transformer网络替换所述N个算子节点的Transformer网络,并利用所述替换后的Transformer网络处理特征数据。
9.一种板卡,其特征在于,包括至少一个芯片、对外接口装置、控制器件和存储器件,
所述芯片通过所述对外接口装置与外部设备连接;
所述存储器件通过总线与所述控制器件和所述至少一个芯片进行连接和数据传输;
所述控制器件配置用于对所述至少一个芯片的状态进行调控;
其中,每个所述芯片中包括:处理装置和存储装置;
所述存储装置中存储有计算机指令;
所述处理装置通过执行所述计算机指令,从而执行如权利要求1至7中任一项所述的Transformer网络的算子融合方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至7中任一项所述的Transformer网络的算子融合方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311800886.3A CN117609952A (zh) | 2023-12-25 | 2023-12-25 | 一种Transformer网络的算子融合方法、装置及板卡 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311800886.3A CN117609952A (zh) | 2023-12-25 | 2023-12-25 | 一种Transformer网络的算子融合方法、装置及板卡 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117609952A true CN117609952A (zh) | 2024-02-27 |
Family
ID=89951730
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311800886.3A Pending CN117609952A (zh) | 2023-12-25 | 2023-12-25 | 一种Transformer网络的算子融合方法、装置及板卡 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117609952A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034660A (zh) * | 2024-04-12 | 2024-05-14 | 清华大学 | 针对大语言模型融合算子的图编译方法、装置及存储介质 |
-
2023
- 2023-12-25 CN CN202311800886.3A patent/CN117609952A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118034660A (zh) * | 2024-04-12 | 2024-05-14 | 清华大学 | 针对大语言模型融合算子的图编译方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220129177A1 (en) | Compaction via an Event Reference in an Ordered Event Stream Storage System | |
CN117609952A (zh) | 一种Transformer网络的算子融合方法、装置及板卡 | |
US11928599B2 (en) | Method and device for model compression of neural network | |
US20210373799A1 (en) | Method for storing data and method for reading data | |
KR20200145648A (ko) | 제로 스키핑 및 계층적으로 구조화된 프루닝 방법을 이용한 신경망 하드웨어 가속기 시스템 | |
CN115098412B (zh) | 外设访问控制器、数据访问装置及对应方法、介质和芯片 | |
CN116151363B (zh) | 分布式强化学习系统 | |
CN113569508B (zh) | 基于id进行数据索引与访问的数据库模型构建方法及设备 | |
CN115617520A (zh) | 资源参数配置方法及装置、电子设备和存储介质 | |
CN115412401B (zh) | 训练虚拟网络嵌入模型及虚拟网络嵌入的方法和装置 | |
CN115544033B (zh) | 查重向量库更新、数据查重方法、装置、设备和介质 | |
CN116304704A (zh) | 一种模型训练方法、装置、存储介质及电子设备 | |
CN112116081B (zh) | 一种深度学习网络的优化方法及装置 | |
CN113626650A (zh) | 业务处理方法、装置和电子设备 | |
CN111309265B (zh) | 基于神经网络的节点存储方法、系统、服务器及存储介质 | |
Li et al. | An application-oblivious memory scheduling system for DNN accelerators | |
US11431353B1 (en) | Encoding method, electronic device, and program product | |
CN111158704B (zh) | 模型建立方法、部署流程生成方法、装置和电子设备 | |
CN115759233B (zh) | 模型的训练方法、图数据处理方法、装置及电子设备 | |
CN117873789B (zh) | 一种基于分段量化的检查点写入方法及装置 | |
CN115905569B (zh) | 一种基于节点自适应的小样本知识图谱补全方法和装置 | |
CN115469931B (zh) | 一种循环程序的指令优化方法、装置、系统、设备及介质 | |
CN111861860B (zh) | 一种面向ai智能soc芯片的图像加速处理系统 | |
CN113282624B (zh) | 规则匹配方法、装置、电子设备及存储介质 | |
US20240045895A1 (en) | Information processing device, information processing method, and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |