存算一体芯片及其操作方法与流程

未命名 10-19 阅读:95 评论:0


1.本发明涉及集成电路技术领域,更具体地,涉及一种存算一体芯片及其操作方法。


背景技术:

2.近年来人工智能飞速发展,在很大程度上归功于深度学习技术的发展。通过使用深度学习,在很多ai(artificial intelligence,人工智能)领域取得了长足的进展,而这些巨大的发展和变革促使业界思考ai芯片架构和计算模式。目前cpu(central processing unit,中央处理器),gpu(graphics processing unit,图形处理器)、asic(application specific integrated circuit,专用集成电路)都针对人工智能应用进行了架构优化,取得了更优的系统实时响应速度和功耗。但是,这些芯片架构层面存在难以避免的存储单元与计算单元的数据交换。由于冯诺依曼体系的“存储墙”,存在搬运数据量大、存储器的数据搬运慢、搬运能耗大等问题。为了克服内存墙的瓶颈,提出一种新的计算架构,即存算一体架构(computing in memory,cim)。cim架构在存储器内嵌入计算能力以实现二维矩阵和三维矩阵的乘加运算。在深度学习模型的训练与推理时,卷积运算是核心算法,因此cim架构非常适合深度学习,可以承担大计算量的工作,提高计算效率。
3.采用基于transformer架构的模型例如bert进行训练或者推理时,输入数据in与注意力权重进行卷积运算得到多个特征向量,多个特征向量进行卷积运算得到注意力头矩阵。然而由于输入数据in的不断变化导致多个特征向量是动态变化的。在后续的多个特征向量进行卷积运算用到的都是动态数据,导致多个特征向量进行卷积计算的步骤无法继续在cim单元上进行加速运算。而且如果直接利用向量处理器(vector processing unit,vpu)来进行卷积计算,则会花费大量时间,计算效率低。


技术实现要素:

4.鉴于上述问题,本发明的目的在于提供一种存算一体芯片,可以实现注意力机制的多头并行运算,提高计算效率,减小推理过程的延迟时间。
5.根据本发明的第一方面,提供一种存算一体芯片,所述存算一体芯片包括多个由片上网络连接的块,每个块均包括存算模块和向量处理模块,其中,所述存算一体芯片用于根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵;其中,块的数量与注意力头的数量相同。
6.优选地,所述注意力权重包括第一权重、第二权重和第三权重;所述存算一体芯片将所述第一权重、第二权重和第三权重均存储在每个块的存算模块中。
7.优选地,每个块的存算模块将输入数据与注意力权重卷积运算得到的多个特征向
量,并根据网络模型的配置参数将多个特征向量中的每一个均拆分成多个特征向量矩阵;每个块将每个特征向量对应的多个特征向量矩阵的一个发送至每个块的向量处理模块。
8.优选地,所述多个特征向量包括第一特征向量、第二特征向量和第三特征向量;其中,所述第一特征向量包括多个第一特征向量矩阵;所述第二特征向量包括多个特征向量矩阵;所述第三特征向量包括多个第三特征向量矩阵。
9.优选地,所述注意力权重包括第一权重、第二权重和第三权重,所述第一权重包括多个第一权重矩阵,所述第二权重包括多个第二权重矩阵,所述第三权重包括多个第三权重矩阵。
10.优选地,所述存算一体芯片将多个第一权重矩阵中的一个、多个第二权重矩阵中的一个以及多个第三权重矩阵中的一个存储在每个块的存算模块中。
11.优选地,每个块的存算模块将多个第一权重矩阵中的一个、多个第二权重矩阵中的一个以及多个第三权重矩阵中的一个进行卷积计算得到第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵。
12.优选地,每个块的所述向量处理模块对相应的第一特征向量矩阵和第二特征向量矩阵进行相似度计算得到相应的关联矩阵,以及将关联矩阵与相应的第三特征向量矩阵进行卷积运算得到相应的注意力头矩阵。
13.优选地,每个块还包括:内存模块,用于存储数据;控制模块,与所述存算模块和所述内存模块连接,用于从内存模块读取输入数据并将所述输入数据提供至所述存算模块,以及从所述存算模块接收多个特征向量并将每个特征向量拆分成多个相应的特征向量矩阵提供至所述内存模块。
14.优选地,所述存算模块包括存算阵列和加法树单元;其中,所述存算阵列用于存储注意力权重,并对输入数据和注意力权重进行矩阵乘运算;所述加法树单元,用于对存算阵列输出的数据进行加法计算以得到相应的特征向量。
15.优选地,所述存算一体芯片包括多个由片上网络连接的块,每个块均包括存算模块和向量处理模块,所述操作方法包括:根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到的多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵;其中,块的数量与注意力头的数量相同。
16.优选地,所述注意力权重包括第一权重、第二权重和第三权重。
17.优选地,所述操作方法包括:将所述第一权重、第二权重以及第三权重均存储在每个块的存算模块中;每个块的存算模块将输入数据与注意力权重卷积运算得到的多个特征向量,并将多个特征向量中的每一个均拆分成多个特征向量矩阵;每个块将每个特征向量对应的多个特征向量矩阵的一个发送至每个块的向量处理模块;每个块的向量处理模块根据每个特征向量相应的特征向量矩阵进行多头注意力运算得到相应的注意力头矩阵。
18.优选地,所述多个特征向量包括第一特征向量、第二特征向量和第三特征向量;其中,所述第一特征向量包括多个第一特征向量矩阵;所述第二特征向量包括多个特征向量矩阵;所述第三特征向量包括多个第三特征向量矩阵。
19.优选地,所述第一权重包括多个第一权重矩阵,所述第二权重包括多个第二权重矩阵,所述第三权重包括多个第三权重矩阵。
20.优选地,所述操作方法包括:将第一权重、第二权重和第三权重分别拆分成多个第一权重矩阵、多个第二权重矩阵、多个第三权重矩阵;将多个第一权重矩阵分别存储在多个块的存算模块中,将多个第二权重矩阵分别存储在多个块的存算模块中以及将多个第三权重矩阵分别存储在多个块的存算模块中;每个块的存算模块将输入数据分别与相应的第一权重矩阵、第二权重矩阵、第三权重矩阵进行卷积运算得到相应的第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵;每个块将相应的第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵发送至自身的向量处理模块进行多头注意力运算得到相应的注意力头矩阵。
21.本发明提供的存算一体芯片及其操作方法,根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵,可以实现注意力机制的多头并行运算,数据的传输均在块内进行,减少数据传输和通信开销,提高计算效率,减小推理过程的延迟时间。
22.进一步地,在训练阶段没有进行权重拆分,在推理阶段将注意力权重全部存储在每个块的存算模块,可以减少dma的搬运时间,进一步提高计算效率。
23.进一步地,在训练阶段已经根据网络模型配置参数进行权重拆分,则在推理阶段将每个权重拆分的多个权重矩阵分别存储在每个块的存算模块,输入数据与不同的权重矩阵进行卷积运算得到不同的特征向量矩阵,每个块的向量处理模块对不同的特征向量矩阵进行注意力运算得到相应的注意力头矩阵,无需进行任何额外的dma搬运操作,进一步地提高计算效率。
附图说明
24.通过以下参照附图对本发明实施例的描述,本发明的上述以及其他目的、特征和优点将更为清楚,在附图中:
25.图1示出现有技术中存算一体芯片的结构示意图;
26.图2示出根据本发明实施例提供的存算一体芯片的结构示意图。
27.图3示出本发明第一实施例提供的存算一体芯片的数据流示意图;
28.图4示出本发明第二实施例提供的存算一体芯片的数据流示意图;
29.图5示出根据本发明第一实施例提供的存算一体芯片的操作方法的流程示意图;
30.图6示出据本发明第二实施例提供的存算一体芯片的操作方法的流程示意图。
具体实施方式
31.以下将参照附图更详细地描述本发明的各种实施例。在各个附图中,相同的元件采用相同或类似的附图标记来表示。为了清楚起见,附图中的各个部分没有按比例绘制。
32.下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。图1示出现
有技术中存算一体芯片的结构示意图。如图1所示,该存算一体芯片包括通过片上网络连接的多个块(tile)110,每个块110包括存算模块111、内存模块112和控制模块113等。
33.当控制模块113发出计算开始信号之后,控制模块113从内存模块112读取输入数据并发送至存算模块111进行计算。其中,存算模块111包括存算阵列,该存算阵列例如为忆阻器(resistive random access memory,rram)阵列。
34.采用基于transformer架构的模型例如bert模型进行推理时,输入数据in与注意力权重(例如为查询矩阵wq、键权重wk以及值权重wv)进行卷积计算得到多个特征向量(例如为查询向量q、键向量k和值向量v),然后多个特征向量之间进行多头注意力运算得到注意力头矩阵z。由于注意力权重为静态数据,可以利用存算模块进行加速运算,而由于输入数据in的不断变化导致多个特征向量为动态数据,从而导致多个特征向量之间的卷积运算无法在存算模块上进行加速运算。如果直接利用向量处理器(vector processing unit,vpu)来进行卷积计算,则会花费大量时间,计算效率低。
35.图2示出本发明实施例提供的存算一体芯片的结构示意图;图3示出本发明第一实施例提供的存算一体芯片的数据流示意图。如图2所示,所述存算一体芯片包括多个块(tile)210,每个块210包括存算模块211、内存模块212、控制模块213以及向量处理模块214。
36.所述存算一体芯片用于根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块211中,多个块的存算模块211中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块214中进行多头注意力运算得到多个注意力头矩阵z。
37.在本实施例中,网络模型的配置参数例如为嵌入层维度。当嵌入层维度为512以及矩阵的行向量维度为64时,注意力头的数量为8。当嵌入层维度为768以及矩阵的行向量维度为64时,注意力头的数量为12。
38.存算模块211,用于存储注意力权重,以及将输入数据与注意力权重进行卷积运算以得到多个特征向量。
39.在本实施例中,所述注意力权重包括第一权重、第二权重和第三权重;所述存算一体芯片将所述第一权重、所述第二权重和所述第三权重均存储在第一块tile1至第n块tilen的存算模块,其中,n为正整数,且与注意力头的数量相同。
40.具体地,第一块tile1中存储第一权重、第二权重以及第三权重;第二块tile2中存储第一权重、第二权重以及第三权重,第三块tile3中存储第一权重、第二权重以及第三权重,
……
,第n-1块tilen-1中存储第一权重、第二权重以及第三权重,第n块tilen中存储第一权重、第二权重以及第三权重。
41.在本实施例中,所述存算模块211包括存算阵列2111和加法树单元2112;其中,所述存算阵列2111用于存储注意力权重,并对输入数据和注意力权重进行矩阵乘运算;所述加法树单元2112用于对存算阵列输出的数据进行加法计算以得到相应的特征向量。存算阵列2111例如为忆阻器阵列,但并不局限于此。
42.具体地,存算阵列对输入数据in第i行的每个元素和注意力权重第j列的每个元素
之间逐元素相乘,得到一行的数据;加法树单元对该行的数据逐个相加得到特征向量的第i行第j列对应的数值。
43.内存模块212,用于存储数据。该数据例如为输入数据in、多个特征向量、多个特征向量矩阵、注意力头矩阵等,但不局限于此。
44.在本实施例中,所述多个特征向量包括第一特征向量、第二特征向量和第三特征向量;其中,所述第一特征向量包括多个第一特征向量矩阵;所述第二特征向量包括多个特征向量矩阵;所述第三特征向量包括多个第三特征向量矩阵。每个块将第一特征向量中的其中一个第一特征向量矩阵、第二特征向量中的其中一个第二特征向量矩阵、第三特征向量中的其中一个第三特征向量矩阵发送至自身的向量处理模块214。
45.控制模块213,与所述存算模块211和内存模块212连接,用于从内存模块212读取输入数据in并将所述输入数据in提供至所述存算模块211,以及从所述存算模块211接收多个特征向量并将每个特征向量拆分成多个相应的特征向量矩阵提供至所述内存模块212。
46.在本实施例中,控制模块213将拆分后的不同特征向量对应的一个特征向量矩阵发送至自身的向量处理模块214。
47.向量处理模块214,用于对相应的第一特征向量矩阵和第二特征向量矩阵进行卷积运算得到相应的关联矩阵s,以及将关联矩阵s与相应的第三特征向量矩阵进行多头注意力运算得到多个注意力头矩阵z。
48.具体地,每个块tile的存算模块均存储有第一权重(例如为查询权重wq)、第二权重(键权重wk)和第三权重(值权重wv)。相应地,每个块tile均产生第一特征向量(例如为查询向量q),第二特征向量(例如为键向量k),第三特征向量(例如为值向量v)。每个块tile均将第一特征向量拆分成多个第一特征向量矩阵(例如为多个查询向量矩阵[q1,q2,q3,
……
,qn]),将第二特征向量拆分成多个第二特征向量矩阵(例如为多个键向量矩阵[k1,k2,k3,
……
,kn]),将第三特征向量拆分成多个第三特征向量矩阵(例如为多个值向量矩阵[v1,v2,v3,
……
,vn])。即,q=in*wq=[q1,q2,q3,
……
,qn];k=in*wk=[k1,k2,k3,
……
,kn];v=in*wv=[v1,v2,v3,
……
,vn]。
[0049]
每个块tile中均存储有查询权重wq、键权重wk和值权重wv。输入数据in与每个块tile存储的查询权重wq进行卷积运算得到查询向量q,输入数据in与每个块tile存储的键权重wk进行卷积运算得到键向量k,输入数据in与每个块tile存储的值权重wv进行卷积运算得到值向量v。每个块tile将查询向量q拆分成n个查询向量矩阵[q1,q2,q3,
……
,qn-1,qn];将键向量k拆分成n个键向量矩阵[k1,k2,k3,
……
,kn-1,kn],将值向量v拆分成n个值向量矩阵[v1,v2,v3,
……
,vn-1,vn]。
[0050]
第一块tile1将第一查询向量矩阵q1、第一键向量矩阵k1、第一值向量矩阵v1发送至第一块tile1的向量处理模块;第二块tile2将第二查询向量矩阵q2、第二键向量矩阵k2、第二值向量矩阵v2发送至第二块tile2的向量处理模块;第三块tile3将第三查询向量矩阵q3、第三键向量矩阵k3、第三值向量矩阵v3发送至第三块tile3的向量处理模块;
……
,第n块tilen将第n查询向量矩阵qn、第n键向量矩阵kn、第n值向量矩阵vn发送至第n块tilen的向量处理模块。
[0051]
第一块tile1的向量处理模块将第一查询向量矩阵q1、第一键向量矩阵k1进行卷积运算得到第一关联矩阵s1,第一关联矩阵s1与第一值向量矩阵v1进行卷积运算得到第一
注意力头矩阵z1;第二块tile2的向量处理模块将第二查询向量矩阵q2、第二键向量矩阵k2进行卷积运算得到第二关联矩阵s2,第二关联矩阵s2与第二值向量矩阵v2进行卷积运算得到第二注意力头矩阵z2;第三块tile3的向量处理模块将第三查询向量矩阵q3、第三键向量矩阵k3进行卷积运算得到第三关联矩阵s3,第三关联矩阵s3与第三值向量矩阵v3进行卷积运算得到第三注意力头矩阵z3;
……
,第n-1块tilen-1的向量处理模块将第n-1查询向量矩阵qn-1、第n-1键向量矩阵kn-1进行卷积运算得到第n-1关联矩阵sn-1,第n-1关联矩阵sn-1与第n-1值向量矩阵vn-1进行卷积运算得到第n-1注意力头矩阵zn-1;第n块tilen的向量处理模块将第n查询向量矩阵qn、第n键向量矩阵kn进行卷积运算得到第n关联矩阵sn,第n关联矩阵sn与第n值向量矩阵vn进行卷积运算得到第n注意力头矩阵zn。关联矩阵用于表征查询向量与键向量之间的相似度;注意力头矩阵z=s*v,
[0052]
其中,softmax()表示将注意力头矩阵在行向量上进行归一化操作,k
t
为k(键向量)的转置,d为矩阵的行向量维度。
[0053]
本发明提供的存算一体芯片,根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵,可以实现注意力机制的多头并行运算,数据的传输均在块内进行,减少数据传输和通信开销,提高计算效率,减小推理过程的延迟时间。
[0054]
进一步地,在训练阶段没有进行权重拆分,在推理阶段将注意力权重全部存储在每个块的存算模块,可以减少dma的搬运时间,进一步提高计算效率。
[0055]
图4示出本发明第二实施例提供的存算一体芯片的数据流示意图。与第一实施例相比,本实施例中的存算一体芯片根据网络模型配置参数将注意力权重拆分成多个权重矩阵,并将多个权重矩阵存储在每个块的存算模块中。
[0056]
在本实施例中,所述注意力权重包括第一权重、第二权重和第三权重;所述第一权重包括多个第一权重矩阵,所述第二权重包括多个第二权重矩阵,所述第三权重包括多个第三权重矩阵。
[0057]
所述存算一体芯片将多个第一权重矩阵中的一个、多个第一权重矩阵的一个和多个第三权重矩阵的一个均存储在第一块tile1至第n块tilen的存算模块,其中,n为正整数,且与注意力头的数量相同。即第一块tile1中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵;第二块tile2中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵,第三块tile3中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵,
……
,第n-1块tilen-1中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵,第n块tilen中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵。
[0058]
具体地,将第一权重(例如为查询权重wq)拆分成多个第一权重矩阵(例如为多个查询权重矩阵[w
q1
,w
q2
,w
q3
,
……
,w
qn
]),将第二权重(例如为查询权重wk)拆分成多个第二权重矩阵(例如为多个查询权重矩阵[w
k1
,w
k2
,w
k3
,
……
,w
kn
]),将第三权重(例如为查询权重
wv)拆分成多个第三权重矩阵(例如为多个查询权重矩阵[w
v1
,w
v2
,w
v3
,
……
,w
vn
])。
[0059]
存算一体芯片将第一查询权重矩阵w
q1
、第一键权重矩阵w
k1
、第一值权重矩阵w
v1
存储在第一块tile1的存算模块中,第一块tile1的存算模块将输入数据in分别与第一查询权重矩阵w
q1
、第一键权重矩阵w
k1
、第一值权重矩阵w
v1
进行卷积运算得到第一查询向量矩阵q1、第一键向量矩阵k1以及第一值向量矩阵v1。存算一体芯片将第二查询权重矩阵w
q2
、第二键权重矩阵w
k2
、第二值权重矩阵w
v2
存储在第二块tile2的存算模块中,第二块tile2的存算模块将输入数据in分别与第二查询权重矩阵w
q2
、第二键权重矩阵w
k2
、第二值权重矩阵w
v2
进行卷积运算得到第二查询向量矩阵q2、第二键向量矩阵k2以及第二值向量矩阵v2。存算一体芯片将第三查询权重矩阵w
q3
、第三键权重矩阵w
k3
、第三值权重矩阵w
v3
存储在第三块tile3的存算模块中,第三块tile3的存算模块将输入数据in分别与第三查询权重矩阵w
q3
、第三键权重矩阵w
k3
、第三值权重矩阵w
v3
进行卷积运算得到第三查询向量矩阵q3、第三键向量矩阵k3以及第三值向量矩阵v3。
……
,存算一体芯片将第n查询权重矩阵w
qn
、第n键权重矩阵w
kn
、第n值权重矩阵w
vn
存储在第n块tilen的存算模块中,第n块tilen的存算模块将输入数据in分别与第n查询权重矩阵w
qn
、第n键权重矩阵w
kn
、第n值权重矩阵w
vn
进行卷积运算得到第n查询向量矩阵qn、第n键向量矩阵kn以及第n值向量矩阵vn。
[0060]
第一块tile1将第一查询向量矩阵q1、第一键向量矩阵k1、第一值向量矩阵v1发送至第一块tile1的向量处理模块;第二块tile2将第二查询向量矩阵q2、第二键向量矩阵k2、第二值向量矩阵v2发送至第二块tile2的向量处理模块;第三块tile3将第三查询向量矩阵q3、第三键向量矩阵k3、第三值向量矩阵v3发送至第三块tile3的向量处理模块;
……
,第n块tilen将第n查询向量矩阵qn、第n键向量矩阵kn、第n值向量矩阵vn发送至第n块tilen的向量处理模块。
[0061]
本实施例的其余部分与第一实施例的其余部分相同,在此不再赘述。
[0062]
本发明提供的存算一体芯片,在训练阶段已经根据网络模型配置参数进行权重拆分,则在推理阶段将每个权重拆分的多个权重矩阵分别存储在每个块的存算模块,输入数据与不同的权重矩阵进行卷积运算得到不同的特征向量矩阵,每个块的向量处理模块对不同的特征向量矩阵进行注意力运算得到相应的注意力头矩阵,无需进行任何额外的dma搬运操作,进一步地提高计算效率。
[0063]
图5示出根据本发明第一实施例提供的存算一体芯片的操作方法的流程图。如图5所示,所述操作方法包括以下步骤。
[0064]
在步骤s110中,根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重。
[0065]
在本实施例中,网络模型的配置参数例如为嵌入层维度。当嵌入层维度为512以及矩阵的行向量维度为64时,注意力头的数量为8。当嵌入层维度为768以及矩阵的行向量维度为64时,注意力头的数量为12。
[0066]
所述注意力权重包括第一权重、第二权重和第三权重;所述存算一体芯片将所述第一权重、所述第二权重和所述第三权重均存储在第一块tile1至第n块tilen的存算模块,其中,n为正整数,且与注意力头的数量相同。
[0067]
具体地,第一块tile1中存储第一权重、第二权重以及第三权重;第二块tile2中存
储第一权重、第二权重以及第三权重,第三块tile3中存储第一权重、第二权重以及第三权重,
……
,第n-1块tilen-1中存储第一权重、第二权重以及第三权重,第n块tilen中存储第一权重、第二权重以及第三权重。
[0068]
在步骤s120中,根据所述注意力头的数量将输入数据与注意力权重卷积运算得到的多个特征向量均拆分成相应的多个特征向量矩阵。
[0069]
在本实施例中,所述多个特征向量包括第一特征向量、第二特征向量和第三特征向量;其中,所述第一特征向量包括多个第一特征向量矩阵;所述第二特征向量包括多个特征向量矩阵;所述第三特征向量包括多个第三特征向量矩阵。每个块将第一特征向量中的其中一个第一特征向量矩阵、第二特征向量中的其中一个第二特征向量矩阵、第三特征向量中的其中一个第三特征向量矩阵发送至自身的向量处理模块。
[0070]
在步骤s130中,将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵。
[0071]
在本实施例中,每个块的向量处理模块对相应的第一特征向量矩阵和第二特征向量矩阵进行卷积运算得到相应的关联矩阵s,以及将关联矩阵s与相应的第三特征向量矩阵进行多头注意力运算得到注意力头矩阵z。
[0072]
具体地,每个块tile的存算模块均存储有第一权重(例如为查询权重wq)、第二权重(键权重wk)和第三权重(值权重wv)。相应地,每个块tile均产生第一特征向量(例如为查询向量q),第二特征向量(例如为键向量k),第三特征向量(例如为值向量v)。每个块tile均将第一特征向量拆分成多个第一特征向量矩阵(例如为多个查询向量矩阵[q1,q2,q3,
……
,qn]),将第二特征向量拆分成多个第二特征向量矩阵(例如为多个键向量矩阵[k1,k2,k3,
……
,kn]),将第三特征向量拆分成多个第三特征向量矩阵(例如为多个值向量矩阵[v1,v2,v3,
……
,vn])。即,q=in*wq=[q1,q2,q3,
……
,qn];k=in*wk=[k1,k2,k3,
……
,kn];v=in*wv=[v1,v2,v3,
……
,vn]。
[0073]
每个块tile中均存储有查询权重wq、键权重wk和值权重wv。输入数据in与每个块tile存储的查询权重wq进行卷积运算得到查询向量q,输入数据in与每个块tile存储的键权重wk进行卷积运算得到键向量k,输入数据in与每个块tile存储的值权重wv进行卷积运算得到值向量v。每个块tile将查询向量q拆分成n个查询向量矩阵[q1,q2,q3,
……
,qn-1,qn];将键向量k拆分成n个键向量矩阵[k1,k2,k3,
……
,kn-1,kn],将值向量v拆分成n个值向量矩阵[v1,v2,v3,
……
,vn-1,vn]。
[0074]
第一块tile1将第一查询向量矩阵q1、第一键向量矩阵k1、第一值向量矩阵v1发送至第一块tile1的向量处理模块;第二块tile2将第二查询向量矩阵q2、第二键向量矩阵k2、第二值向量矩阵v2发送至第二块tile2的向量处理模块;第三块tile3将第三查询向量矩阵q3、第三键向量矩阵k3、第三值向量矩阵v3发送至第三块tile3的向量处理模块;
……
,第n块tilen将第n查询向量矩阵qn、第n键向量矩阵kn、第n值向量矩阵vn发送至第n块tilen的向量处理模块。
[0075]
第一块tile1的向量处理模块将第一查询向量矩阵q1、第一键向量矩阵k1进行卷积运算得到第一关联矩阵s1,第一关联矩阵s1与第一值向量矩阵v1进行卷积运算得到第一注意力头矩阵z1;第二块tile2的向量处理模块将第二查询向量矩阵q2、第二键向量矩阵k2进行卷积运算得到第二关联矩阵s2,第二关联矩阵s2与第二值向量矩阵v2进行卷积运算得
到第二注意力头矩阵z2;第三块tile3的向量处理模块将第三查询向量矩阵q3、第三键向量矩阵k3进行卷积运算得到第三关联矩阵s3,第三关联矩阵s3与第三值向量矩阵v3进行卷积运算得到第三注意力头矩阵z3;
……
,第n-1块tilen-1的向量处理模块将第n-1查询向量矩阵qn-1、第n-1键向量矩阵kn-1进行卷积运算得到第n-1关联矩阵sn-1,第n-1关联矩阵sn-1与第n-1值向量矩阵vn-1进行卷积运算得到第n-1注意力头矩阵zn-1;第n块tilen的向量处理模块将第n查询向量矩阵qn、第n键向量矩阵kn进行卷积运算得到第n关联矩阵sn,第n关联矩阵sn与第n值向量矩阵vn进行卷积运算得到第n注意力头矩阵zn。关联矩阵用于表征查询向量与键向量之间的相似度;注意力头矩阵z=s*v,
[0076]
其中,softmax()表示将注意力头矩阵在行向量上进行归一化操作,k
t
为k(键向量)的转置,d为矩阵的行向量维度。
[0077]
本发明提供的存算一体芯片的操作方法,根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵,可以实现注意力机制的多头并行运算,数据的传输均在块内进行,减少数据传输和通信开销,提高计算效率,减小推理过程的延迟时间。
[0078]
进一步地,在训练阶段没有进行权重拆分,在推理阶段将注意力权重全部存储在每个块的存算模块,可以减少dma的搬运时间,进一步提高计算效率。
[0079]
图6示出根据本发明第一实施例提供的存算一体芯片的操作方法的流程图。如图6所示,所述操作方法包括以下步骤。
[0080]
在步骤s210中,根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重将第一权重、第二权重和第三权重分别拆分成多个第一权重矩阵、多个第二权重矩阵、多个第三权重矩阵。
[0081]
在本实施例中,网络模型的配置参数例如为嵌入层维度。当嵌入层维度为512以及矩阵的行向量维度为64时,注意力头的数量为8。当嵌入层维度为768以及矩阵的行向量维度为64时,注意力头的数量为12。
[0082]
所述注意力权重包括第一权重、第二权重和第三权重。所述第一权重包括多个第一权重矩阵,所述第二权重包括多个第二权重矩阵,所述第三权重包括多个第三权重矩阵。
[0083]
所述存算一体芯片将多个第一权重矩阵中的一个、多个第一权重矩阵的一个和多个第三权重矩阵的一个均存储在第一块tile1至第n块tilen的存算模块,其中,n为正整数,且与注意力头的数量相同。
[0084]
具体地,将第一权重(例如为查询权重wq)拆分成多个第一权重矩阵(例如为多个查询权重矩阵[w
q1
,w
q2
,w
q3
,
……
,w
qn
]),将第二权重(例如为查询权重wk)拆分成多个第二权重矩阵(例如为多个查询权重矩阵[w
k1
,w
k2
,w
k3
,
……
,w
kn
]),将第三权重(例如为查询权重wv)拆分成多个第三权重矩阵(例如为多个查询权重矩阵[w
v1
,w
v2
,w
v3
,
……
,w
vn
])。
[0085]
在步骤s220中,将多个第一权重矩阵分别存储在多个块的存算模块中,将多个第二权重矩阵分别存储在多个块的存算模块中以及将多个第三权重矩阵分别存储在多个块的存算模块中。
[0086]
在本实施例中,所述存算一体芯片将多个第一权重矩阵中的一个、多个第一权重矩阵的一个和多个第三权重矩阵的一个均存储在第一块tile1至第n块tilen的存算模块,其中,n为正整数,且与注意力头的数量相同。即第一块tile1中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵;第二块tile2中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵,第三块tile3中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵,
……
,第n-1块tilen-1中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵,第n块tilen中存储第一权重矩阵、第二权重矩阵以及第三权重矩阵。
[0087]
具体地,存算一体芯片将第一查询权重矩阵w
q1
、第一键权重矩阵w
k1
、第一值权重矩阵w
v1
存储在第一块tile1的存算模块中,第一块tile1的存算模块将输入数据in分别与第一查询权重矩阵w
q1
、第一键权重矩阵w
k1
、第一值权重矩阵w
v1
进行卷积运算得到第一查询向量矩阵q1、第一键向量矩阵k1以及第一值向量矩阵v1。存算一体芯片将第二查询权重矩阵w
q2
、第二键权重矩阵w
k2
、第二值权重矩阵w
v2
存储在第二块tile2的存算模块中,第二块tile2的存算模块将输入数据in分别与第二查询权重矩阵w
q2
、第二键权重矩阵w
k2
、第二值权重矩阵w
v2
进行卷积运算得到第二查询向量矩阵q2、第二键向量矩阵k2以及第二值向量矩阵v2。存算一体芯片将第三查询权重矩阵w
q3
、第三键权重矩阵w
k3
、第三值权重矩阵w
v3
存储在第三块tile3的存算模块中,第三块tile3的存算模块将输入数据in分别与第三查询权重矩阵w
q3
、第三键权重矩阵w
k3
、第三值权重矩阵w
v3
进行卷积运算得到第三查询向量矩阵q3、第三键向量矩阵k3以及第三值向量矩阵v3。
……
,存算一体芯片将第n查询权重矩阵w
qn
、第n键权重矩阵w
kn
、第n值权重矩阵w
vn
存储在第n块tilen的存算模块中,第n块tilen的存算模块将输入数据in分别与第n查询权重矩阵w
qn
、第n键权重矩阵w
kn
、第n值权重矩阵w
vn
进行卷积运算得到第n查询向量矩阵qn、第n键向量矩阵kn以及第n值向量矩阵vn。
[0088]
在步骤s230中,每个块的存算模块将输入数据分别与相应的第一权重矩阵、第二权重矩阵、第三权重矩阵进行卷积运算得到相应的第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵。
[0089]
在本实施例中,第一块tile1将第一查询向量矩阵q1、第一键向量矩阵k1、第一值向量矩阵v1发送至第一块tile1的向量处理模块;第二块tile2将第二查询向量矩阵q2、第二键向量矩阵k2、第二值向量矩阵v2发送至第二块tile2的向量处理模块;第三块tile3将第三查询向量矩阵q3、第三键向量矩阵k3、第三值向量矩阵v3发送至第三块tile3的向量处理模块;
……
,第n块tilen将第n查询向量矩阵qn、第n键向量矩阵kn、第n值向量矩阵vn发送至第n块tilen的向量处理模块。
[0090]
在步骤s240中,将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵。
[0091]
在本实施例中,第一块tile1的向量处理模块将第一查询向量矩阵q1、第一键向量矩阵k1进行卷积运算得到第一关联矩阵s1,第一关联矩阵s1与第一值向量矩阵v1进行卷积运算得到第一注意力头矩阵z1;第二块tile2的向量处理模块将第二查询向量矩阵q2、第二键向量矩阵k2进行卷积运算得到第二关联矩阵s2,第二关联矩阵s2与第二值向量矩阵v2进
行卷积运算得到第二注意力头矩阵z2;第三块tile3的向量处理模块将第三查询向量矩阵q3、第三键向量矩阵k3进行卷积运算得到第三关联矩阵s3,第三关联矩阵s3与第三值向量矩阵v3进行卷积运算得到第三注意力头矩阵z3;
……
,第n-1块tilen-1的向量处理模块将第n-1查询向量矩阵qn-1、第n-1键向量矩阵kn-1进行卷积运算得到第n-1关联矩阵sn-1,第n-1关联矩阵sn-1与第n-1值向量矩阵vn-1进行卷积运算得到第n-1注意力头矩阵zn-1;第n块tilen的向量处理模块将第n查询向量矩阵qn、第n键向量矩阵kn进行卷积运算得到第n关联矩阵sn,第n关联矩阵sn与第n值向量矩阵vn进行卷积运算得到第n注意力头矩阵zn。关联矩阵注意力头矩阵z=s*v,
[0092]
其中,softmax()表示将注意力头矩阵在行向量上进行归一化操作,k
t
为k(键向量)的转置,d为矩阵的行向量维度。
[0093]
本发明提供的存算一体芯片,在训练阶段已经根据网络模型配置参数进行权重拆分,则在推理阶段将每个权重拆分的多个权重矩阵分别存储在每个块的存算模块,输入数据与不同的权重矩阵进行卷积运算得到不同的特征向量矩阵,每个块的向量处理模块对不同的特征向量矩阵进行注意力运算得到相应的注意力头矩阵,无需进行任何额外的dma搬运操作,进一步地提高计算效率。
[0094]
依照本发明的实施例如上文所述,这些实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施例。显然,根据以上描述,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本发明的原理和实际应用,从而使所属技术领域技术人员能很好地利用本发明以及在本发明基础上的修改使用。本发明仅受权利要求书及其全部范围和等效物的限制。

技术特征:
1.一种存算一体芯片,其特征在于,所述存算一体芯片包括多个由片上网络连接的块,每个块均包括存算模块和向量处理模块,其中,所述存算一体芯片用于根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵;其中,块的数量与注意力头的数量相同。2.根据权利要求1所述的存算一体芯片,其特征在于,所述注意力权重包括第一权重、第二权重和第三权重;所述存算一体芯片将所述第一权重、第二权重和第三权重均存储在每个块的存算模块中。3.根据权利要求2所述的存算一体芯片,其特征在于,每个块的存算模块将输入数据与注意力权重卷积运算得到的多个特征向量,并根据网络模型的配置参数将多个特征向量中的每一个均拆分成多个特征向量矩阵;每个块将每个特征向量对应的多个特征向量矩阵的一个发送至每个块的向量处理模块。4.根据权利要求3所述的存算一体芯片,其特征在于,所述多个特征向量包括第一特征向量、第二特征向量和第三特征向量;其中,所述第一特征向量包括多个第一特征向量矩阵;所述第二特征向量包括多个特征向量矩阵;所述第三特征向量包括多个第三特征向量矩阵。5.根据权利要求1所述的存算一体芯片,其特征在于,所述注意力权重包括第一权重、第二权重和第三权重,所述第一权重包括多个第一权重矩阵,所述第二权重包括多个第二权重矩阵,所述第三权重包括多个第三权重矩阵。6.根据权利要求5所述的存算一体芯片,其特征在于,所述存算一体芯片将多个第一权重矩阵中的一个、多个第二权重矩阵中的一个以及多个第三权重矩阵中的一个存储在每个块的存算模块中。7.根据权利要求6所述的存算一体芯片,其特征在于,每个块的存算模块将多个第一权重矩阵中的一个、多个第二权重矩阵中的一个以及多个第三权重矩阵中的一个进行卷积计算得到第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵。8.根据权利要求3或4或7所述的存算一体芯片,其特征在于,每个块的所述向量处理模块对相应的第一特征向量矩阵和第二特征向量矩阵进行相似度计算得到相应的关联矩阵,以及将关联矩阵与相应的第三特征向量矩阵进行卷积运算得到相应的注意力头矩阵。9.根据权利要求1所述的存算一体芯片,其特征在于,每个块还包括:内存模块,用于存储数据;控制模块,与所述存算模块和所述内存模块连接,用于从内存模块读取输入数据并将所述输入数据提供至所述存算模块,以及从所述存算模块接收多个特征向量并将每个特征向量拆分成多个相应的特征向量矩阵提供至所述内存模块。10.根据权利要求1所述的存算一体芯片,其特征在于,所述存算模块包括存算阵列和加法树单元;其中,所述存算阵列用于存储注意力权重,并对输入数据和注意力权重进行矩阵乘运
算;所述加法树单元,用于对存算阵列输出的数据进行加法计算以得到相应的特征向量。11.一种存算一体芯片的操作方法,其特征在于,所述存算一体芯片包括多个由片上网络连接的块,每个块均包括存算模块和向量处理模块,所述操作方法包括:根据网络模型的配置参数获取注意力头的数量,并根据所述注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到的多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵;其中,块的数量与注意力头的数量相同。12.根据权利要求11所述的操作方法,其特征在于,所述注意力权重包括第一权重、第二权重和第三权重。13.根据权利要求12所述的操作方法,其特征在于,所述操作方法包括:将所述第一权重、第二权重以及第三权重均存储在每个块的存算模块中;每个块的存算模块将输入数据与注意力权重卷积运算得到的多个特征向量,并将多个特征向量中的每一个均拆分成多个特征向量矩阵;每个块将每个特征向量对应的多个特征向量矩阵的一个发送至每个块的向量处理模块;每个块的向量处理模块根据每个特征向量相应的特征向量矩阵进行多头注意力运算得到相应的注意力头矩阵。14.根据权利要求13所述的操作方法,其特征在于,所述多个特征向量包括第一特征向量、第二特征向量和第三特征向量;其中,所述第一特征向量包括多个第一特征向量矩阵;所述第二特征向量包括多个特征向量矩阵;所述第三特征向量包括多个第三特征向量矩阵。15.根据权利要求12所述的操作方法,其特征在于,所述第一权重包括多个第一权重矩阵,所述第二权重包括多个第二权重矩阵,所述第三权重包括多个第三权重矩阵。16.根据权利要求12所述的操作方法,其特征在于,所述操作方法包括:将第一权重、第二权重和第三权重分别拆分成多个第一权重矩阵、多个第二权重矩阵、多个第三权重矩阵;将多个第一权重矩阵分别存储在多个块的存算模块中,将多个第二权重矩阵分别存储在多个块的存算模块中以及将多个第三权重矩阵分别存储在多个块的存算模块中;每个块的存算模块将输入数据分别与相应的第一权重矩阵、第二权重矩阵、第三权重矩阵进行卷积运算得到相应的第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵;每个块将相应的第一特征向量矩阵、第二特征向量矩阵以及第三特征向量矩阵发送至自身的向量处理模块进行多头注意力运算得到相应的注意力头矩阵。

技术总结
本申请公开了一种存算一体芯片,存算一体芯片包括多个由片上网络连接的块,每个块均包括存算模块和向量处理模块,存算一体芯片用于根据网络模型的配置参数获取注意力头的数量,并根据注意力头的数量将神经网络的注意力权重存储在多个块的存算模块中,多个块的存算模块中均存储所有类型的注意力权重;将输入数据与注意力权重卷积运算得到多个特征向量,每个特征向量包括多个特征向量矩阵;以及将每个特征向量对应的多个特征向量矩阵中的一个发送至每个块的向量处理模块中进行多头注意力运算得到多个注意力头矩阵。本申请还提供一种存算一体芯片的操作方法,可以实现注意力机制的多头并行运算,提高计算效率,减小推理过程的延迟时间。延迟时间。延迟时间。


技术研发人员:章锦腾 熊大鹏 李涛 周兵
受保护的技术使用者:苏州亿铸智能科技有限公司
技术研发日:2023.06.19
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐