CN117707791B - 用于进行注意力运算的方法、设备和存储介质 - Google Patents
用于进行注意力运算的方法、设备和存储介质 Download PDFInfo
- Publication number
- CN117707791B CN117707791B CN202410155290.0A CN202410155290A CN117707791B CN 117707791 B CN117707791 B CN 117707791B CN 202410155290 A CN202410155290 A CN 202410155290A CN 117707791 B CN117707791 B CN 117707791B
- Authority
- CN
- China
- Prior art keywords
- tensor
- value
- dimension
- determining
- chunks
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 62
- 238000004364 calculation method Methods 0.000 title claims abstract description 30
- 239000011159 matrix material Substances 0.000 claims description 57
- 239000013598 vector Substances 0.000 claims description 33
- 238000000638 solvent extraction Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 230000004044 response Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 18
- 230000000873 masking effect Effects 0.000 description 11
- 230000006870 function Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 241001522296 Erithacus rubecula Species 0.000 description 6
- 230000004927 fusion Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 4
- 101100257467 Dictyostelium discoideum spcs1 gene Proteins 0.000 description 3
- 101100533972 Dictyostelium discoideum spcs2 gene Proteins 0.000 description 3
- 101100395426 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sty1 gene Proteins 0.000 description 3
- 101100373124 Schizosaccharomyces pombe (strain 972 / ATCC 24843) wis1 gene Proteins 0.000 description 3
- 101100476569 Staphylococcus aureus (strain Mu50 / ATCC 700699) ant2 gene Proteins 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Machine Translation (AREA)
Abstract
本公开提供一种用于进行注意力运算的方法、设备和存储介质。其中方法包括确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值;根据第一数值以及第二数值,确定目标维度;以及基于目标维度,将查询张量划分为多个第一子张量,以便多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算。本公开的方案能够显著提高注意力运算的效率。
Description
技术领域
本公开的实施例总体涉及注意力运算领域,并且更具体地涉及一种用于进行注意力运算的方法、设备和存储介质。
背景技术
注意力(attention)运算越来越广泛地应用于深度神经网络中。传统的注意力运算方案中,存在运算性能较低,或者是用于运算的存储器资源利用率较低,导致运算性能下降等问题。
发明内容
针对上述问题,本公开提供了一种用于进行注意力运算的方法、设备和存储介质,能够显著提高注意力运算的效率。
根据本公开的第一方面,提供一种用于进行注意力运算的方法。该方法包括:确定查询张量的关于序列长度(sequence length)的第一维度的第一数值、以及关于批量大小(batch size)的第二维度的第二数值;根据第一数值以及第二数值,确定目标维度;以及基于目标维度,将查询张量划分为多个第一子张量,以便多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算。
在一些实施例中,确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值包括:基于查询张量的序列长度与处理器核的关于数据对齐的最小数据粒度的比值,确定第一数值;以及基于查询张量的批量大小与查询张量的注意力头的数量(head number)的乘积,确定第二数值。
在一些实施例中,根据第一数值以及第二数值确定目标维度包括:确定第一数值以及第二数值是否均小于处理器核的数量;以及响应于确定第一数值以及第二数值均小于处理器核的数量,确定目标维度为第一维度和第二维度。
在一些实施例中,根据第一数值以及第二数值确定目标维度还包括:响应于确定第一数值以及第二数值不均小于处理器核的数量,确定第一数值以及第二数值中较大的一个所对应的维度为目标维度。
在一些实施例中,多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算包括:根据处理器核的共享存储器的大小,针对第一子张量的目标划分维度将第一子张量划分为多个第一组块;针对键张量的目标划分维度,将键张量划分为多个第二组块;以及针对值张量的目标划分维度将值张量划分为多个第三组块;以及基于多个第一组块、多个第二组块以及多个第三组块进行注意力计算。
在一些实施例中,第二组块在键张量的目标划分维度上所对应的维度值与第三组块在值张量的目标划分维度上所对应的维度值相等。
在一些实施例中,基于多个第一组块、多个第二组块以及多个第三组块进行注意力计算包括:将多个第一组块中的每一个第一组块分别与多个第二组块中的对应第二组块依次进行矩阵乘运算,以便得到与多个第二组块对应的多个第一中间张量;以及根据多个第一中间张量以及多个第三组块,确定用于进行softmax运算的分子以及分母,以便根据该分子以及该分母确定softmax运算的结果。
在一些实施例中,根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母包括:依次针对多个第一中间张量中的每一个第一中间张量执行以下操作:确定当前最大值张量,当前最大值张量为当前第一中间张量以及当前第一中间张量之前的第一中间张量中最大的第一中间张量;针对当前第一中间张量与当前最大值张量之间的差值进行指数运算,以确定第二中间张量;以及根据前一个第一中间张量对应的s向量、当前最大值张量、第二中间张量以及当前第一中间张量的前一个第一中间张量,确定当前第一中间张量对应的s向量,以便确定用于进行softmax运算的分母。
在一些实施例中,根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母包括:针对多个第一中间张量中的最后一个第一中间张量,更新s向量;以及输出更新后的s向量,以便作为用于进行softmax运算的分母。
在一些实施例中,根据前一个第一中间张量对应的s向量、当前最大值张量、第二中间张量以及当前第一中间张量的前一个第一中间张量,确定当前第一中间张量对应的s向量包括:针对前一个最大张量与当前最大值张量之间的差值进行指数运算,以便得到第三中间张量;以及将当前的第二中间张量以及当前第二中间张量之前的第二中间张量的累加和,以及前一个第一中间张量对应的s向量与第三中间张量的乘积进行加和,以作为当前第一中间张量对应的s向量。
在一些实施例中,根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母还包括:依次针对多个第一中间张量中的每一个第一中间张量执行以下操作:根据前一个第一中间张量所对应的第四中间张量与第三中间张量的乘积,确定第五中间张量;将第二中间张量与对应的第三组块进行矩阵乘操作,以便得到第六中间张量;以及根据第五中间张量与第六中间张量的和,确定当前第一中间张量对应的第四中间张量,以便确定用于进行softmax运算的分子。
在一些实施例中,根据该分子以及该分母确定softmax运算的结果包括:在确定多个第一中间张量中的最后一个第一中间张量对应的第四中间张量之后,根据第四中间张量与更新后的s向量的商确定softmax运算的结果。
在一些实施例中,该方法还包括:将第一中间张量存储至共享存储器;以及将第二中间张量存储至共享存储器。
根据本公开的第二方面,提供一种电子设备,该电子设备包括:至少一个处理器;以及与该至少一个处理器通信连接的存储器;该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行根据本公开的第一方面的方法。
根据本公开的第三方面,提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被机器执行时实现根据本公开的第一方面的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示出了本公开的实施例的用于进行注意力运算的方法的流程图。
图2示出了本公开的实施例的用于进行注意力运算的方法的查询张量Q、键张量K和值张量V的示意图。
图3示出了本公开的实施例的用于进行注意力运算的方法的Q'、K'和V'的示意图。
图4示出了本公开的实施例的用于进行注意力运算的方法的示意图。
图5示出了多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算的方法的流程图。
图6示出了本公开的实施例的用于进行注意力运算的方法与现有方案的性能对比表。
图7示出了可以用来实施本公开内容的实施例的方法的示例电子设备的示意性框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如前文所描述,传统的注意力运算方案中,存在运算性能较低,或者是用于运算的存储器资源利用率较低,导致运算性能下降等问题。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,提供一种用于进行注意力运算的方案,在该方案中,确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值;根据第一数值以及第二数值,确定目标维度;以及基于目标维度,将查询张量划分为多个第一子张量,以便多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算。也即,在该方案中,查询张量被基于目标维度划分为多个第一子张量,相应地,注意力运算被分配给多个处理器核进行处理,可以显著提高运算效率。并且,划分查询张量的维度为根据查询张量的关于序列长度所确定的第一数值、以及关于批量大小所确定的第二数值而确定的,因此,在针对查询张量进行划分的过程中,可以实现最优的划分方式,有效提高运算效率、提高运算性能。
以下对本公开的实施例的方法进行详细说明。
图1示出了本公开的实施例的用于进行注意力运算的方法100的流程图。应当理解的是,方法100还可以包括未示出的附加步骤和/或可以省略所示出的步骤,本公开的范围在此方面不受限制。方法100可以基于处理器实现,也可以在图7所示的电子设备700处实现。其中,该处理器采用MCU(Micro Controller Unit,微控制单元)、CPU(CentralProcessing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、GPGPU(General-purpose Computing on Graphics Processing Units,通用图形处理器)、FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)或者其它可编程逻辑器件、ASIC(Application Specific Integrated Circuit,专用集成电路)、分立门或者晶体管逻辑器件、分立硬件组件等实现。该处理器例如可以包含多个处理器核(processer core),在运行的过程中,多个处理器核可以并行运算。
参照图1,方法100包括:
在步骤102处,确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值。其中,第一维度例如为查询张量的序列长度所对应的维度,第二维度为查询张量的批量大小所对应的维度。
在步骤104处,根据第一数值以及第二数值,确定目标维度。
在步骤106处,基于目标维度,将查询张量划分为多个第一子张量,以便多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算。应当理解,该目标维度为将查询张量划分为多个第一子张量时所针对的维度。
在一些实施例中,确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值包括:基于查询张量的序列长度与处理器核的关于数据对齐的最小数据粒度的比值,确定第一数值;以及基于查询张量的批量大小与查询张量的注意力头的数量的乘积,确定第二数值。
在一些实施例中,根据第一数值以及第二数值确定目标维度包括:确定第一数值以及第二数值是否均小于处理器核的数量;以及响应于确定第一数值以及第二数值均小于处理器核的数量,确定目标维度为第一维度和第二维度。
在一些实施例中,根据第一数值以及第二数值确定目标维度还包括:响应于确定第一数值以及第二数值不均小于处理器核的数量,确定第一数值以及第二数值中较大的一个所对应的维度为目标维度。
应当理解,注意力运算中涉及三个输入张量,分别为查询张量Q(Tensor Q)、键张量K(Tensor K)和值张量V(Tensor V);注意力运算的输出结果例如为一个张量(例如以“tensor(output)”表征)。查询张量Q、键张量K、值张量V以及输出张量tensor(output)例如为形状为[batch_size * head_num, sequence_length, head_size]的张量。其中,batch_size表征张量的批量大小,head_num表征张量的注意力头的数量,sequence_length表征张量的序列长度,head_size表征张量的注意力头的大小。
图2示出了本公开的实施例的用于进行注意力运算的方法的查询张量Q、键张量K和值张量V的示意图。为了便于说明,图中示出了查询张量Q、键张量K和值张量V的关于序列长度的第一维度以及关于注意力头的大小的第三维度,省略了查询张量Q、键张量K和值张量V的关于批量大小的第二维度未予示出。
例如,查询张量Q、键张量K和值张量V的关于序列长度的第一维度的第一维度值例如为1024,即,序列长度(sequence_length)为1024;查询张量Q、键张量K和值张量V的关于注意力头的大小的第三维度的第三维度值例如为768,即,注意力头的大小(head_size)为768。
为了便于说明,以查询张量Q的一个注意力头(head)Q'、 键张量K的一个注意力头K'以及值张量V的一个注意力头V'为例进行说明。图3示出了本公开的实施例的用于进行注意力运算的方法的Q'、K'和V'的示意图。Q'、K'和V'例如均为形状为[1024,64]的矩阵。
在进行注意力运算时,在步骤102处,确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值。第一数值例如为查询张量的序列长度与处理器核的关于数据对齐的最小数据粒度(例如以“block_size”表征)的比值,即,第一数值为sequence_length/block_size。第二数值例如为查询张量的批量大小与查询张量的注意力头的数量的乘积,即,第二数值为batch_size * head_num。
然后,根据步骤104,根据第一数值以及第二数值,确定目标维度。
其中,如果第一数值以及第二数值均小于处理器核的数量,则确定关于序列长度的第一维度以及关于批量大小的第二维度两者为目标维度,以便在步骤106中,针对第一维度以及第二维度两个维度对查询张量Q进行划分,以便得到多个第一子张量。值得说明的是,当第一数值以及第二数值均小于处理器核的数量时,单独基于第一维度以及第二维度中的其中一个维度对查询张量Q进行划分,则得到的第一子张量的数量小于处理器核的数量,此时,多个处理器核不能得到充分利用,存在部分处理器核未参与并行运算的情况,不利于处理器的运算性能的最大发挥。
如果第一数值以及第二数值不均小于处理器核的数量,则确定第一数值以及第二数值中较大的一个所对应的维度为目标维度。也即,以sequence_length/block_size和batch_size * head_num两者中较大的一个所对应的维度为目标维度,以便在步骤106中,基于该目标维度针对查询张量Q进行划分,以便得到多个第一子张量。值得说明的是,当sequence_length/block_size较大时,基于第一维度对查询张量Q进行划分,有利于保证在数据运算过程中,处理器核将数据加载至数据缓冲区所需重复加载的次数,并使得多个处理器核能够得到充分利用。当batch_size * head_num较大时,基于第二维度对查询张量Q进行划分,可以使得数据自然符合数据对齐要求,每次加载数据无需按关于数据对齐的最小数据粒度补齐,并且每次加载数据可以充分占满数据缓冲区。
图4示出了本公开的实施例的用于进行注意力运算的方法的示意图。为了便于说明,图中以一个注意力头为例进行了示意。例如,查询张量Q被划分为多个第一子张量,例如,查询张量Q被划分为分别与多个处理器核(例如包括处理器核spc0、处理器核spc1、处理器核spc2等)对应的多个第一子张量。其中,处理器核spc0针对查询张量Q的其中一个第一子张量(例如与子矩阵Q1对应的第一子张量)以及键张量K和值张量V进行注意力运算。处理器核spc1针对查询张量Q的其中一个第一子张量(例如与子矩阵Q2对应的第一子张量)以及键张量K和值张量V进行注意力运算。处理器核spc2针对查询张量Q的其中一个第一子张量(例如与子矩阵Q3对应的第一子张量)以及键张量K和值张量V进行注意力运算。关于其他处理器核,此处不再赘述。其中,子矩阵Q1等例如为形状为[64,64]的矩阵。
图5示出了多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算的方法500的流程图。应当理解的是,方法500还可以包括未示出的附加步骤和/或可以省略所示出的步骤,本公开的范围在此方面不受限制。方法500可以基于处理器实现,也可以在图7所示的电子设备700处实现。
其中,多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算包括:
在步骤502处,根据处理器核的共享存储器的大小,针对第一子张量的目标划分维度将第一子张量划分为多个第一组块。
具体而言,在在步骤502处,根据处理器核的共享存储器的大小,针对第一子张量的目标划分维度将第一子张量划分为多个第一组块。例如,经由划分后,查询张量Q的其中第一子张量的其中一个第一组块为子矩阵Q1。在一些实施例中,第一子张量的目标划分维度例如可以为第一子张量的高度维度。应当理解,第一子张量的目标划分维度为将第一子张量划分为多个第一组块时所针对的维度。
在步骤504处,针对键张量的目标划分维度,将键张量划分为多个第二组块;以及针对值张量的目标划分维度将值张量划分为多个第三组块。例如,在一种划分方式中,子矩阵K1为键张量K划分形成的多个第二组块中的一个第二组块;子矩阵V1为值张量V划分形成的多个第三组块中的一个第三组块。在一些实施例中,键张量K的目标划分维度例如为键矩阵K的宽度维度;在一些实施例中,值张量V的目标划分维度例如为值矩阵V的高度维度。多个第二组块例如包括K1、K2、K3、K4等。多个第三组块例如包括V1、V2、V3、V4等。应当理解,为了进行后续的矩阵乘运算,第二组块在键张量K的目标划分维度(例如为键矩阵K的宽度维度)上所对应的维度值与第三组块在值张量V的目标划分维度(例如为值矩阵V的高度维度)上所对应的维度值相等。应当理解,维度值是指该组块(张量)在该维度上所具有的数据元素的个数。应当理解,键张量的目标划分维度为将键张量划分为多个第二组块时所针对的维度;值张量的目标划分维度为将值张量划分为多个第三组块时所针对的维度。
在步骤506处,基于多个第一组块、多个第二组块以及多个第三组块进行注意力计算。
在一些实施例中,在步骤506处,处理器核依次基于多个第一组块中的每一个组块,分别与多个第二组块以及多个第三组块进行注意力计算,以便依次确定对应的局部注意力运算结果(partial attention),以及根据各个局部注意力运算结果,确定整体的注意力运算结果。
例如,处理器核spc0针对查询张量Q的其中一个第一子张量(例如与子矩阵Q1对应的第一子张量)以及键张量K和值张量V进行注意力运算。其中,该第一子张量被划分为包括子矩阵Q1在内的多个第一组块,每一个组块例如为形状为[64,64]的矩阵。
具体实现时,处理器核spc0首先针对该第一子张量中的第一个第一组块(例如子矩阵Q1)分别与多个第二组块以及多个第三组块进行注意力计算,以便依次确定对应的局部注意力运算结果。例如,处理器核将多个第一组块中的每一个第一组块分别与多个第二组块中的对应第二组块依次进行矩阵乘运算,以便得到与多个第二组块对应的多个第一中间张量;以及根据多个第一中间张量以及多个第三组块,确定用于进行softmax运算的分子以及分母,以便根据该分子以及该分母确定softmax运算的结果。
该过程可以称为“第一层循环”,也即,针对该第一子张量中的第一个第一组块(例如子矩阵Q1),基于键张量K的目标划分维度,以及值张量V的目标划分维度,使得子矩阵Q1依次与对应的第二组块以及对应的第三组块进行注意力运算,以便依次遍历每一个对应的第二组块以及对应的第三组块,以便确定对应的局部注意力运算结果。
在一些实施例中,处理器核spc0首先基于矩阵乘(MMA)算子(例如称为“第一算子”)对第一子张量中的第一个第一组块(例如子矩阵Q1)以及键张量K的第一个第二组块(例如子矩阵K1)进行矩阵乘运算,以便得到对应的第一中间张量(例如子矩阵QK1)。
在一些实施例中,处理器核spc0经由第一算子得到子矩阵QK1之后,可以将计算得到的结果(即子矩阵QK1)存储至处理器的共享存储器(shared memory)中。
在一些实施例中,处理器核spc0经由第一算子得到子矩阵QK1之后,可以继续利用第一算子针对该第一子张量中的第一个第一组块(例如子矩阵Q1)以及键张量K的第二个第二组块(例如子矩阵K2)进行矩阵乘运算,以便得到对应的第一中间张量(例如子矩阵QK2);利用第一算子针对该第一子张量中的第一个第一组块(例如子矩阵Q1)以及键张量K的第三个第二组块(例如子矩阵K3)进行矩阵乘运算,以便得到对应的第一中间张量(例如子矩阵QK3);利用第一算子针对该第一子张量中的第一个第一组块(例如子矩阵Q1)以及键张量K的第四个第二组块(例如子矩阵K4)进行矩阵乘运算,以便得到对应的第一中间张量(例如子矩阵QK4)……
然后,处理器核spc0根据第一中间张量(例如子矩阵QK1)以及值张量V的第一个第三组块(例如子矩阵V1)确定用于进行softmax运算的分子以及分母,以便根据该分子以及该分母确定softmax运算的结果。该过程可以利用第二算子实现。
在一些实施例中,在经由第一算子得到第一中间张量后,还可以根据具体运算需求,针对第一中间张量进行掩码操作,以便得到掩码操作后的第一中间张量。掩码操作例如可以基于maskfill(填充掩码)或者maskadd(添加掩码)运算实现。在一些实施例中,掩码操作后的第一中间张量为针对第一中间张量进行点对点操作,因此,在针对第一中间张量进行掩码操作的过程中,可以将掩码操作后的第一中间张量存储至原始第一中间张量对应的存储区(即替换原始第一中间张量),以便实现共享存储器的复用,提高存储资源利用率,降低存储资源对处理器面积资源的占用。值得说明的是,在进行掩码操作得到掩码操作后的第一中间张量之后,后续操作则以掩码操作后的第一中间张量作为输入数据进行操作。
在一些实施例中,在经由第一算子得到子矩阵QK1后,即可由第二算子进行计算,以便实现流水线操作,提高运算效率。
值得说明的是,第二算子根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母包括:
依次针对多个第一中间张量中的每一个第一中间张量执行以下操作:确定当前最大值张量,当前最大值张量为当前第一中间张量以及当前第一中间张量之前的第一中间张量中最大的第一中间张量;针对当前第一中间张量与当前最大值张量之间的差值进行指数运算,以确定第二中间张量;以及根据前一个第一中间张量对应的s向量、当前最大值张量、第二中间张量以及当前第一中间张量的前一个第一中间张量,确定当前第一中间张量对应的s向量,以便确定用于进行softmax运算的分母。
具体实施时,第二算子首先确定当前最大值张量。确定当前最大值张量的方式例如可以参照以下公式(1)实现:
mi = max(QK, m)(1)
其中,max()表征确定两个变量中较大的一个作为输出结果,mi表征当前最大值张量,QK表征当前第一中间张量,m表征前一个最大张量,m的初始值为-inf。也即,对于第一个第一中间张量(例如子矩阵QK1),QK的取值为“QK1”,m的取值为“-inf”,相应地,输出结果mi则为“QK1”。
对于第二个第一中间张量(例如子矩阵QK2),QK的取值为“QK2”,m的取值为“QK1”,相应地,输出结果mi则为“QK1”以及“QK2”两者中较大的一个。以此类推,不再赘述。因此,当前最大值张量为当前第一中间张量以及当前第一中间张量之前的第一中间张量中最大的第一中间张量。
第二算子针对当前第一中间张量与当前最大值张量之间的差值进行指数运算,以确定第二中间张量。第二算子进行指数运算以确定第二中间张量的方式可以参照以下公式(2)实现:
QK' = exp(QK - mi)(2)
其中,QK表征当前第一中间张量,mi表征当前最大值张量,exp(x)表征e的x次方运算,其中 e 是自然对数的底数,QK'表征第二中间张量。
第二算子根据前一个第一中间张量对应的s向量、当前最大值张量、第二中间张量以及当前第一中间张量的前一个第一中间张量,确定当前第一中间张量对应的s向量,以便确定用于进行softmax运算的分母。第二算子确定当前第一中间张量对应的s向量例如可以参照以下公式(3)实现:
s = s1 * exp(m - mi)+ sum(QK')(3)
其中,s1表征前一个第一中间张量对应的s向量,s表征当前第一中间张量对应的s向量,mi表征当前最大值张量,m表征前一个最大张量,QK'表征当前第二中间张量。其中,s向量的初始值为0。sum(QK')表征获取当前的第二中间张量以及当前第二中间张量之前的第二中间张量的累加和的运算。也即,处理器核针对前一个最大张量与当前最大值张量之间的差值进行指数运算(即,exp(m - mi)),以便得到第三中间张量;以及将当前的第二中间张量以及当前第二中间张量之前的所有第二中间张量的累加和(即,sum(QK')),以及前一个第一中间张量对应的s向量(即s1)与第三中间张量(即exp(m - mi))的乘积(即s1*exp(m - mi))进行加和,以作为当前第一中间张量对应的s向量。
在一些实施例中,第二算子还根据前一个第一中间张量所对应的第四中间张量与第三中间张量的乘积,确定第五中间张量。第二算子确定第五中间张量可以参照以下公式(4)实现:
Vi' = Vi * exp(m - mi)(4)
其中,exp(m - mi)为第三中间张量,Vi表征第四中间张量,Vi'表征第五中间张量。
处理器核的第三算子将第二中间张量与对应的第三组块进行矩阵乘操作,以便得到第六中间张量。第三算子例如为矩阵乘(MMA)算子。第三算子确定第六中间张量的方式例如可以参照以下公式(5)实现:
QK'V = QK' * Vx(5)
其中,QK'V表征第六中间张量,QK'表征第二中间张量,Vx表征值张量V中的对应第三组块。
参照图4,与第一个第一中间张量(例如子矩阵QK1)对应的第六中间张量例如为子矩阵QK'V1,与第二个第一中间张量(例如子矩阵QK2)对应的第六中间张量例如为子矩阵QK'V2,与第三个第一中间张量(例如子矩阵QK3)对应的第六中间张量例如为子矩阵QK'V3,与第四个第一中间张量(例如子矩阵QK4)对应的第六中间张量例如为子矩阵QK'V4。
处理器核的第四算子根据第五中间张量与第六中间张量的和,确定当前第一中间张量对应的第四中间张量。第四算子例如为加法(ADD)算子。第四算子确定当前第一中间张量对应的第四中间张量的方式例如参照以下公式(6)实现:
Vi = Vi' + QK'V(6)
其中,Vi表征第四中间张量,Vi'表征第五中间张量,QK'V表征第六中间张量。
值得说明的是,在确定多个第一中间张量中的最后一个第一中间张量对应的第四中间张量之后,处理器核的第五算子根据第四中间张量与更新后的s向量的商确定softmax运算的结果。第五算子例如为除法(DIV)算子。第五算子确定softmax运算的结果的方式可以参照以下公式(7)实现:
Softmax=Vi/s(7)
其中,Softmax表征softmax运算的结果,Vi表征第四中间张量,s表征最后一个第一中间张量对应的s向量。
也即,在处理器核spc0针对查询张量Q的第一个第一子张量的第一个第一组块(例如子矩阵Q1)完成“第一层循环”后,第五算子根据此时所得到的第四中间张量Vi以及s向量确定softmax运算的结果。该softmax运算的结果可以作为局部注意力运算结果。
值得说明的是,第三算子(MMA算子)、第四算子(ADD算子)以及第五算子(DIV算子)之间可以适用寄存器同步以便进行流水线操作,提高数据吞吐率、提高运算效率。
然后,处理器核spc0针对查询张量Q的第一个第一子张量的第二个第一组块执行以上操作,以便得到与查询张量Q的第一个第一子张量的第二个第一组块对应的局部注意力运算结果。以此类推,处理器核spc0遍历第一个第一子张量的所有第一组块,即完成“第二层循环”操作。
然后,处理器核spc0针对查询张量Q的第二维度(即批量大小所对应的维度),针对查询张量Q的第一个第一子张量执行以上“第一层循环”操作以及“第二层循环”操作,则可完成“第三层循环”操作。
类似地,处理器核spc1针对查询张量Q的第二个第一子张量执行上述“第一层循环”操作、“第二层循环”操作以及“第三层循环”操作;处理器核spc2针对查询张量Q的第三个第一子张量执行上述“第一层循环”操作、“第二层循环”操作以及“第三层循环”操作……具体不再赘述。
值得说明的是,根据以上操作所得到的全部局部注意力运算结果,可以形成整体注意力运算结果。
值得说明的是,在一些实施例中,结合处理器所具备的共享存储器的大小以及第二算子所涉及的关于softmax的运算所需占用的寄存器的数量,例如可以将查询张量Q的第一组块所对应的粒度(例如以Q_chunk表征)配置为dedicate_register_size/w_block_size /data_element_size,其中,data_element_size表征数据元素尺寸,w_block_size表征硬件(例如处理器)对matrix tensor在w维度(例如宽度维度)上的对齐粒度要求,dedicate_register_size表征分配给s向量以及前一个最大张量m,以便进行更新操作的寄存器空间的大小。例如,分配给用于对前一个最大张量m以及s向量进行更新的寄存器空间为dedicate_register_size,根据处理器核的列块(col block)对齐粒度,可以计算得到第一组块所对应的粒度。
例如,可以将键张量K的第二组块的粒度,以及值张量V的第三组块的粒度(例如以KV_chunk表征)配置为input_register_size/h_block_size / /data_element_size。其中,input_register_size表征用于第二算子加载输入数据的寄存器空间的大小,h_block_size表征硬件对matrix tensor在h维度(例如高度维度)上的对齐粒度要求。例如,分配给第二算子所涉及的关于softmax的运算的按行(row)方向加载数据的寄存器空间的大小为input_register_size,根据处理器核的行块(row block)对齐粒度,可以计算的到键张量K的第二组块的粒度,以及值张量V的第三组块的粒度。并且,对于此情况下的查询张量Q的第一组块所对应的粒度、键张量K的第二组块的粒度,以及值张量V的第三组块的粒度,可以保证需要存储至共享存储器的张量的大小不大于共享存储器的大小。同时,对于需要分配共享存储器的第一中间张量、掩码操作后的第一中间张量与第二中间张量,可以复用相同的共享存储器空间。
应当理解,dedicate_register_size +input_register_size < size1,其中,size1表征寄存器堆(register file)的大小。
并且,Q_chunk * KV_chunk * data_element_size <= size2。其中,size2表征共享存储器的大小。
而寄存器堆的大小和共享存储器的大小由硬件规格(例如每个处理器核内部的寄存器堆的大小和共享存储器的大小)确定。其可以通过以下公式(8)-(11)所组成的约束方程组进行约束:
Q_chunk = dedicate_register_size / w_block_size / data_element_size(8)
KV_chunk = input_register_size / h_block_size / data_element_size(9)
Q_chunk * KV_chunk * data_element_size <= size2(10)
dedicate_register_size + input_register_size < size1(11)
例如,查询张量Q、键张量K和值张量V均为形状为[20,4096,64]的张量。则查询张量Q所对的第二数值(即batch size*head num)为20;查询张量Q所对的第一数值(即sequence length/block size)为64(即4096/64)。
因为第二数值20小于第一数值64,因此针对第一维度将查询张量Q进行划分,以便分配给多个处理器核分别运算。例如,处理器核的数量(例如以spc num表征)为16,则分别分配给每个处理器核以便用于运算的第一子张量的形状为[20,256,64],键张量K 的形状为[20,4096,64],值张量V的形状为[20,4096,64]。
在一些实施例中,查询张量Q的第一组块所对应的粒度Q_chunk = dedicate_register_size / w_block_size / data_element_size。例如,dedicate_register_size为128*1024,w_block_size为64,data_element_size为2,则Q_chunk为1024。
在一些实施例中,键张量K的第二组块的粒度,以及值张量V的第三组块的粒度KV_chunk = input_register_size / h_block_size / data_element_size。例如,input_register_size为128*1024,h_block_size为32,data_element_size为2,则KV_chunk为2048。
图6示出了本公开的实施例的用于进行注意力运算的方法100与现有方案的性能对比表。其中,“性能倍数”为现有方案的运行时间与本公开的方法的运行时间的比值。能够看出,本公开的方法的性能相比于现有方案有显著的提升。
在一些实施例中,以上所采用的多种算子可以采用融合算子实现。例如,第一算子(MMA算子)采用一个融合算子实现,或者,第一算子(MMA算子)以及用于进行掩码操作的算子采用一个融合算子实现。第二算子采用一个融合算子实现。第三算子(MMA算子)、第四算子(ADD算子)以及第五算子(DIV算子)采用一个融合算子实现。
图7示出了可以用来实施本公开内容的实施例的方法的示例电子设备700的示意性框图。如图所示,电子设备700包括中央处理单元(即,CPU 701),其可以根据存储在只读存储器(即,ROM 702)中的计算机程序指令或者从存储单元708加载到随机存取存储器(即,RAM 703)中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储电子设备700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出接口(即,I/O接口705)也连接至总线704。
电子设备700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标、麦克风等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许电子设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法100、方法500,可由CPU 701执行。例如,在一些实施例中,方法100、方法500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到电子设备700上。当计算机程序被加载到RAM 703并由CPU 701执行时,可以执行上文描述的方法100、方法500的一个或多个动作。
本公开涉及方法、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘电子设备。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的设备、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
以上仅为本公开的可选实施例,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本公开的保护范围之内。
Claims (13)
1.一种用于进行注意力运算的方法,其特征在于,包括:
确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值;
根据第一数值以及第二数值,确定目标维度;以及
基于目标维度,将查询张量划分为多个第一子张量,以便多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算;目标维度为将查询张量划分为多个第一子张量时所针对的维度;
确定查询张量的关于序列长度的第一维度的第一数值、以及关于批量大小的第二维度的第二数值包括:
基于查询张量的序列长度与处理器核的关于数据对齐的最小数据粒度的比值,确定第一数值;以及基于查询张量的批量大小与查询张量的注意力头的数量的乘积,确定第二数值。
2.如权利要求1所述的方法,其特征在于,根据第一数值以及第二数值确定目标维度包括:
确定第一数值以及第二数值是否均小于处理器核的数量;以及
响应于确定第一数值以及第二数值均小于处理器核的数量,确定目标维度为第一维度和第二维度。
3.如权利要求2所述的方法,其特征在于,根据第一数值以及第二数值确定目标维度还包括:
响应于确定第一数值以及第二数值不均小于处理器核的数量,确定第一数值以及第二数值中较大的一个所对应的维度为目标维度。
4.如权利要求1所述的方法,其特征在于,多个处理器核中的每一个处理器核分别针对多个第一子张量中的一个第一子张量进行注意力计算包括:
根据处理器核的共享存储器的大小,针对第一子张量的目标划分维度将第一子张量划分为多个第一组块;
针对键张量的目标划分维度,将键张量划分为多个第二组块;
针对值张量的目标划分维度将值张量划分为多个第三组块;以及
基于多个第一组块、多个第二组块以及多个第三组块进行注意力计算。
5.如权利要求4所述的方法,其特征在于,基于多个第一组块、多个第二组块以及多个第三组块进行注意力计算包括:
将多个第一组块中的每一个第一组块分别与多个第二组块中的对应第二组块依次进行矩阵乘运算,以便得到与多个第二组块对应的多个第一中间张量;以及
根据多个第一中间张量以及多个第三组块,确定用于进行softmax运算的分子以及分母,以便根据所述分子以及所述分母确定softmax运算的结果。
6.如权利要求5所述的方法,其特征在于,根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母包括:
依次针对多个第一中间张量中的每一个第一中间张量执行以下操作:
确定当前最大值张量,当前最大值张量为当前第一中间张量以及当前第一中间张量之前的第一中间张量中最大的第一中间张量;
针对当前第一中间张量与当前最大值张量之间的差值进行指数运算,以确定第二中间张量;以及
根据前一个第一中间张量对应的s向量、当前最大值张量、第二中间张量以及当前第一中间张量的前一个第一中间张量,确定当前第一中间张量对应的s向量,以便确定用于进行softmax运算的分母;
根据前一个第一中间张量对应的s向量、当前最大值张量、第二中间张量以及当前第一中间张量的前一个第一中间张量,确定当前第一中间张量对应的s向量包括:
针对前一个最大张量与当前最大值张量之间的差值进行指数运算,以便得到第三中间张量;以及
将当前的第二中间张量以及当前第二中间张量之前的第二中间张量的累加和,以及前一个第一中间张量对应的s向量与第三中间张量的乘积进行加和,以作为当前第一中间张量对应的s向量,其中,s向量的初始值为0。
7.如权利要求6所述的方法,其特征在于,根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母还包括:
针对多个第一中间张量中的最后一个第一中间张量,更新s向量;以及
输出更新后的s向量,以便作为用于进行softmax运算的分母。
8.如权利要求6所述的方法,其特征在于,根据多个第一中间张量以及多个第三组块确定用于进行softmax运算的分子以及分母还包括:
依次针对多个第一中间张量中的每一个第一中间张量执行以下操作:
根据前一个第一中间张量所对应的第四中间张量与第三中间张量的乘积,确定第五中间张量;
将第二中间张量与对应的第三组块进行矩阵乘操作,以便得到第六中间张量;以及
根据第五中间张量与第六中间张量的和,确定当前第一中间张量对应的第四中间张量,以便确定用于进行softmax运算的分子。
9.如权利要求8所述的方法,其特征在于,根据所述分子以及所述分母确定softmax运算的结果包括:
在确定多个第一中间张量中的最后一个第一中间张量对应的第四中间张量之后,根据第四中间张量与更新后的s向量的商确定softmax运算的结果。
10.如权利要求9所述的方法,其特征在于,还包括:
将第一中间张量存储至共享存储器;以及
将第二中间张量存储至共享存储器。
11.如权利要求4所述的方法,其特征在于,第二组块在键张量的目标划分维度上所对应的维度值与第三组块在值张量的目标划分维度上所对应的维度值相等。
12.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至11中任一项所述的方法。
13.一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被机器执行时实现根据权利要求1至11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410155290.0A CN117707791B (zh) | 2024-02-02 | 2024-02-02 | 用于进行注意力运算的方法、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410155290.0A CN117707791B (zh) | 2024-02-02 | 2024-02-02 | 用于进行注意力运算的方法、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117707791A CN117707791A (zh) | 2024-03-15 |
CN117707791B true CN117707791B (zh) | 2024-05-14 |
Family
ID=90155629
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410155290.0A Active CN117707791B (zh) | 2024-02-02 | 2024-02-02 | 用于进行注意力运算的方法、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117707791B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN111562977A (zh) * | 2019-02-14 | 2020-08-21 | 上海寒武纪信息科技有限公司 | 神经网络模型拆分方法、装置、存储介质和计算机系统 |
CN117391225A (zh) * | 2022-06-30 | 2024-01-12 | 华为技术有限公司 | 数据处理方法、设备及介质 |
CN117472591A (zh) * | 2023-12-27 | 2024-01-30 | 北京壁仞科技开发有限公司 | 用于数据计算的方法、电子设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230259758A1 (en) * | 2022-02-16 | 2023-08-17 | Moffett International Co., Limited | Adaptive tensor compute kernel for sparse neural network |
-
2024
- 2024-02-02 CN CN202410155290.0A patent/CN117707791B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111562977A (zh) * | 2019-02-14 | 2020-08-21 | 上海寒武纪信息科技有限公司 | 神经网络模型拆分方法、装置、存储介质和计算机系统 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
CN117391225A (zh) * | 2022-06-30 | 2024-01-12 | 华为技术有限公司 | 数据处理方法、设备及介质 |
CN117472591A (zh) * | 2023-12-27 | 2024-01-30 | 北京壁仞科技开发有限公司 | 用于数据计算的方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117707791A (zh) | 2024-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442779B2 (en) | Method, device and computer program product for determining resource amount for dedicated processing resources | |
Brandfass et al. | Rank reordering for MPI communication optimization | |
CN117827463A (zh) | 用于进行注意力运算的方法、设备和存储介质 | |
US20220101194A1 (en) | Method, electronic device, and computer program product for processing machine learning model | |
US20170262500A1 (en) | Processing a database query in a database system | |
CN115034358A (zh) | 神经网络计算图的处理方法及处理装置 | |
CN117435855B (zh) | 用于进行卷积运算的方法、电子设备和存储介质 | |
CN110163255B (zh) | 一种基于密度峰值的数据流聚类方法及装置 | |
CN114020469A (zh) | 基于边缘节点的多任务学习方法、装置、介质与设备 | |
CN117707791B (zh) | 用于进行注意力运算的方法、设备和存储介质 | |
CN111158907B (zh) | 数据处理方法及装置、电子设备和存储介质 | |
US20200233580A1 (en) | Method, apparatus, and computer program product for managing storage system | |
CN115346099A (zh) | 基于加速器芯片的图像卷积方法、芯片、设备及介质 | |
CN114546329B (zh) | 用于实现数据奇偶重排的方法、设备和介质 | |
CN115965070B (zh) | 计算图处理方法、装置、设备、存储介质以及程序产品 | |
JP6961950B2 (ja) | 格納方法、格納装置および格納プログラム | |
CN113836481B (zh) | 矩阵计算电路、方法、电子设备及计算机可读存储介质 | |
US20240134694A1 (en) | Method, electronic device, and computer program product for allocating workload | |
CN116805155B (zh) | 一种lstm网络处理方法、装置、设备及可读存储介质 | |
CN111177482B (zh) | 一种图数据并行处理的方法、装置、设备及可读存储介质 | |
CN116737390B (zh) | 原子操作的处理方法、装置、电子设备和存储介质 | |
CN114047876B (zh) | 基于列式存储的数据排序方法、设备及存储介质 | |
CN116881090B (zh) | 计算装置以及控制计算装置中的计算核的能耗的方法 | |
CN117934323B (zh) | 图像生成方法、装置、电子设备及存储介质 | |
CN114546328A (zh) | 用于实现数据排列的方法、设备和介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |