CN113988277A - 用于存算一体芯片的神经网络映射方法、装置、设备 - Google Patents
用于存算一体芯片的神经网络映射方法、装置、设备 Download PDFInfo
- Publication number
- CN113988277A CN113988277A CN202111184060.XA CN202111184060A CN113988277A CN 113988277 A CN113988277 A CN 113988277A CN 202111184060 A CN202111184060 A CN 202111184060A CN 113988277 A CN113988277 A CN 113988277A
- Authority
- CN
- China
- Prior art keywords
- bias
- array
- neural network
- storage
- layer
- 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
- 238000003860 storage Methods 0.000 title claims abstract description 124
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 121
- 238000013507 mapping Methods 0.000 title claims abstract description 98
- 238000000034 method Methods 0.000 title claims abstract description 78
- 239000011159 matrix material Substances 0.000 claims abstract description 98
- 238000004364 calculation method Methods 0.000 claims abstract description 77
- 238000012163 sequencing technique Methods 0.000 claims abstract description 17
- 241000270295 Serpentes Species 0.000 claims abstract description 6
- 238000004590 computer program Methods 0.000 claims description 18
- WYTGDNHDOZPMIW-RCBQFDQVSA-N alstonine Natural products C1=CC2=C3C=CC=CC3=NC2=C2N1C[C@H]1[C@H](C)OC=C(C(=O)OC)[C@H]1C2 WYTGDNHDOZPMIW-RCBQFDQVSA-N 0.000 claims description 11
- 238000009826 distribution Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 14
- 238000012545 processing Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例提供一种用于存算一体芯片的神经网络映射方法、装置、设备,该方法包括:根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中,并根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布,有效利用了存算一体单元,另外,基于Bias最小行数以及Bias阵列空闲情况对各Bias占据的行数进行了扩展,减少单个存算一体单元上的偏置数值,降低电流噪声,提高运算精度。
Description
技术领域
本发明涉及半导体技术领域,尤其涉及一种用于存算一体芯片的神经网络映射方法、装置、设备。
背景技术
近年来,随着算法、算力和数据量规模三个维度的不断发展,机器学习技术在解决诸多问题方面不断展现出强大的优势,其中,人工神经网络以其在图像识别、目标检测、语义分割等领域的突出表现得到人们的广泛关注。但是,随着神经网络规模的扩大,传统以CPU+GPU架构处理神经网络算法的模式逐渐遇到了速度和功耗的瓶颈,究其根源是因为冯·诺伊曼架构下存算分离使得以数据为中心的神经网络算法给计算***带来过大的数据传输开销,降低速度的同时增大了功耗。
存内计算技术解决了存算分离导致的问题,通过将神经网络的权重存储到存算一体(NPU)芯片中的闪存阵列节点的电导上,再将以电压表示的数据源送入阵列,由欧姆定律可知,阵列输出的电流为电压和电导的乘积,从而完成了数据源和网络权重的矩阵乘加运算,本质上是在进行模拟计算,而非传统上的数字计算。
在存算一体芯片从设计到生产的全流程中,工具链的设计是重要的一个环节。在面向存算一体芯片的工具链设计中,将特定神经网络的权重参数根据需求自动映射到芯片阵列上的技术是一项关键技术,在将训练后的神经网络映射到存算一体芯片的存算一体单元阵列上时,按照神经网络各层的顺序,依次将权重和偏置映射到存算一体芯片阵列上,一方面不能有效利用存算一体单元,增加了存算一体单元阵列规模,另一方面,由于偏置直接映射到存算一体芯片阵列上,偏置的数值越大对应存算一体单元的电导越大,在同样电压下,存算一体单元的电流越大,进而导致噪声越大,影响运算精度。
发明内容
针对现有技术中的问题,本发明提供一种用于存算一体芯片的神经网络映射方法、装置、设备,能够至少部分地解决现有技术中存在的问题。
为了实现上述目的,本发明采用如下技术方案:
第一方面,提供一种用于存算一体芯片的神经网络映射方法,包括:
根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;
根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中,并根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;
其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布。
进一步地,所述主阵列中包含多个阵列分布的存算一体单元块,各层对应的权重矩阵排布到所述主阵列中的存算一体单元块上;
所述依次排布各层对应的权重矩阵时按照蛇形顺序排布,包括:针对每一层神经网络对应的权重矩阵,按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置。
进一步地,所述根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序,包括:
根据各层对应的Bias最小行数对各层进行映射排序;
对Bias最小行数相同的层按照权重矩阵的列数进行映射排序。
进一步地,用于存算一体芯片的神经网络映射方法还包括;
根据排布结果将所述待映射神经网络各层的权重矩阵和Bias写入所述存算一体芯片上。
进一步地,所述按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置,包括:
按照蛇形顺序依次轮询所述主阵列中的存算一体单元块是否存在满足当前层排布条件的位置;
若是,将当前层的权重矩阵排布到满足当前层排布条件的位置;
若否,继续轮询下一存算一体单元块,直至找到满足所述排布条件的位置;
其中,所述排布条件为:与当前排布周期中已排布在当前存算一体单元块上的权重矩阵并排且能够容纳当前层的权重矩阵。
进一步地,排布权重矩阵时从非空闲列的下一列开始排布。
进一步地,所述按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置,还包括:
若按照蛇形顺序轮询完所有存算一体单元块后仍未找到满足所述排布条件的位置,则返回首个存算一体单元块,进入下一排布周期:
判断首个存算一体单元块的空闲位置是否能够容纳当前层的权重矩阵;
若是,将当前层的权重矩阵排布在首个存算一体单元块的空闲位置;
若否,按照蛇形顺序依次轮询各存算一体单元块,直到找到能够容纳所述权重矩阵的存算一体单元块,将当前层的权重矩阵排布在所述存算一体单元块的空闲位置;
其中,排布权重矩阵时从非空闲行的下一行开始排列。
进一步地,所述将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置时,将所述Bias排布到列对应的位置中的非空闲行的下一行。
进一步地,用于存算一体芯片的神经网络映射方法还包括:
根据Bias排布结果和所述Bias阵列的空闲情况对Bias的排布进行扩展,得到Bias最终排布结果。
进一步地,所述根据Bias排布结果和所述Bias阵列的空闲情况对Bias的排布进行扩展,包括:
根据Bias阵列的空闲行数判断是否能够将所有Bias占用行数成倍扩展;
若是,将所有Bias占用行数成倍扩展;
若否,按照预设规则选取Bias进行扩展。
进一步地,用于存算一体芯片的神经网络映射方法还包括:
将所述存算一体芯片的存算一体单元阵列划分为主阵列以及Bias阵列;
将所述主阵列划分为多个存算一体单元块。
进一步地,用于存算一体芯片的神经网络映射方法还包括:
获取待映射神经网络的参数以及目标存算一体芯片的参数,所述待映射神经网络的参数包括各层对应的权重矩阵以及Bias;
根据各层的Bias以及所述存算一体芯片的参数得到各层对应的Bias最小行数。
第二方面,提供一种存算一体芯片,包括:用于执行神经网络运算的存算一体单元阵列,所述存算一体单元阵列包括:主阵列以及Bias阵列,所述主阵列中映射有各层神经网络对应的权重矩阵;Bias阵列中映射有各层神经网络对应的Bias;
各层对应的权重矩阵基于Bias最小行数与权重矩阵的列数排序,且按照排序结果在所述主阵列上蛇形排布,所述Bias排布到Bias阵列中的与对应权重矩阵的排布位置列对应的位置。
进一步地,所述主阵列包括多个阵列分布的存算一体单元块,各层对应的权重矩阵排布到所述主阵列中的存算一体单元块上;
其中,针对每一层神经网络对应的权重矩阵,按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到对应的排布位置。
进一步地,所述排序的原则为:
根据各层对应的Bias最小行数对各层进行映射排序;
对Bias最小行数相同的层按照权重矩阵的列数进行映射排序。
进一步地,所述Bias排布方式在排布到Bias阵列中的与对应权重矩阵的排布位置列对应的位置的基础上,还基于Bias最小行数以及Bias阵列空闲情况对各Bias占据的行数进行了扩展。
第三方面,提供一种存算一体芯片,包括:用于执行神经网络运算的存算一体单元阵列,所述存算一体单元阵列包括:主阵列以及Bias阵列,所述主阵列中映射有各层神经网络对应的权重矩阵;Bias阵列中映射有各层神经网络对应的Bias;
所述权重矩阵以及对应的Bias的排布方式根据上述的神经网络映射方法产生。
第四方面,提供一种用于存算一体芯片的神经网络映射装置,包括:
排序模块,根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;
排布模块,根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中,并根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;
其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布。
第五方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的神经网络映射方法的步骤。
第六方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的神经网络映射方法的步骤。
本发明实施例提供的用于存算一体芯片的神经网络映射方法、装置、设备,该方法包括:根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中,并根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布。通过对各层排序后按照蛇形排布,有效利用了存算一体单元,同等运算规模下能够降低存算一体单元阵列大小。
另外,本发明实施例中基于Bias最小行数以及Bias阵列空闲情况对各Bias占据的行数进行了扩展,减少单个存算一体单元上的偏置数值,降低电流噪声,提高运算精度。
为让本发明的上述和其他目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附图式,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了本发明实施例中的用于存算一体芯片的神经网络映射方法的流程图;
图2例举了本发明实施例中的存算一体单元阵列划分方式;
图3示出了本发明实施例中的步骤S100的具体步骤;
图4例举了本发明实施例中的对神经网络各层进行排序的过程;
图5例举了本发明实施例中的权重矩阵以及对应的Bias的排布结果;
图6例举了本发明实施例中的Bias的排布方式扩展过程;
图7是本发明实施例中的用于存算一体芯片的神经网络映射装置的结构框图;
图8为本发明实施例电子设备的结构图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了本发明实施例中的用于存算一体芯片的神经网络映射方法的流程图;如图1所示,该用于存算一体芯片的神经网络映射方法可以包括以下内容:
步骤S100:根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;
针对已经训练好的特定神经网络,各层的权重矩阵参数以及Bias参数、Bias大小与在芯片上占据的最少行数已经获取到。先按照Bias最小行数与权重矩阵的列数对各层神经网络进行排序,作为映射排布的顺序。
步骤S200:根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中;
其中,在按照步骤S100得到的顺序,依次排布各层对应的权重矩阵时,按照蛇形顺序排布。
具体地,在存算一体芯片以存算一体单元的行为输入,以存算一体单元的列为输出的场景下(本发明实施例中的附图均基于这一前提,本领域技术人员可以理解的是,存算一体单元的行列只是一个相对的概念,具体应用时也可以以列为输入,以行为输出,原理是相同的,对此不再赘述),在排布权重矩阵时,对于主阵列中阵列排布的各块(主阵列中划分为多个存算一体单元块,存算一体单元块阵列排布),可以按照第一行(块的行,而非存算一体单元的行)按照X方向,第二行按照-X方向,第三行按照X方向,第四行按照-X方向,依次类推的蛇形方式,也可以是第一行按照-X方向,第二行按照X方向,第三行按照-X方向,第四行按照X方向,依次类推的蛇形方式;当然,也可以是从下往上的,比如从最后一行开始,最后一行按照-X方向,倒数第二行按照X方向,倒数第三行按照-X方向,倒数第四行按照X方向,依次类推的蛇形方式。
其中,存算一体单元可以是闪存单元。
步骤S300:根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;
具体地,由于存算一体芯片计算的特殊性,权重矩阵与其对应的Bias需要列对齐,因此,Bias的排布位置与对应的权重矩阵的排布位置列对齐,行方向的排布方式依据Bias最小行数进行排布。
通过上述步骤S100~步骤S300产生排布方案,后续根据排布方案将神经网络各层参数通过编译工具写入存算一体芯片的存算一体单元阵列中,在应用推理阶段,根据排布方案,结合控制需求,在执行某一层神经网络运算时,通过行列译码器,选通该层神经网络运算对应权重矩阵和Bias所在行列,将该层神经网络的输入信号输入权重矩阵对应的行,与权重矩阵进行矩阵乘加运算,而后与对应的Bias叠加,在对应列获得该层神经网络的计算结果。
通过采用上述技术方案,通过对各层神经网络参数排序后,按照蛇形进行排列,有效互补,比如按照顺序行数9、8、7、6、5、4、3、2、1排序,在进行蛇形排列后,将较少行数与较多行数的对应,这样就能减少Bios阵列中的占用行数,以便为扩展提供更多行数,增加了存算一体单元阵列的利用效率,在相同运算规模下,需要的存算一体单元阵列能够极大降低,适应芯片小型化需求。在一个可选的实施例中,该用于存算一体芯片的神经网络映射方法还可以包括:将所述存算一体芯片的存算一体单元阵列划分为主阵列以及Bias阵列;将所述主阵列划分为多个存算一体单元块。其中,划分时可以参考使用场景以及对应的神经网络规模进行划分,可以在有效提高资源利用率的基础上,保障使用性能。
具体地,如图2中的(a)所示,芯片的实际物理架构由主阵列和Bias(偏置)阵列组成。申请人发现,在实际应用过程中,由于模拟计算过程中电流太大会对计算结果造成显著影响,因此,本发明实施例中可以将阵列在逻辑上进行分区,如图2中的(b)所示,主阵列可以被分成2×4块,仅为举例,实际应用中可根据需要进行分块,Bias阵列可以分块也可以不分块,本发明实施例中以不分块为例进行说明,为了方便进行说明,用二维数组对主阵列中的各块进行标记,从(0,0)开始。若芯片较小,主阵列也可不分块,但由于网络规模普遍较大,在实践中大部分场景中,分块是必要的。需要补充的是,这里的划分是根据芯片的实际性能进行的,且可以划分的每一块大小相同,也可以划分的每一块大小不同,本发明实施例对此不做限制,但是,划分前考虑神经网络各层的大小,保障神经网络中占用空间最大的层也能在一个块里被映射。
在一个可选的实施例中,该神经网络映射方法还可以包括:根据排布结果将所述待映射神经网络各层的权重矩阵和Bias写入所述存算一体芯片上。
具体地,上述的映射方法是在工具链上执行的,可以理解为运行在终端设备或服务器或芯片烧录装置上的程序,通过上述映射方法产生排布方案,而后还需要根据该排布方案将权重矩阵和Bias写入所述存算一体芯片上。而后存算一体芯片就可以安装到对应的设备电路板上,进行推理应用,实现神经网络运算,比如可以安装在玩具上进行语音识别,此时,芯片中写入的神经网络参数是语音识别神经网络对应的参数;当然,该存算一体芯片也可以是安装在人脸识别设备上,该芯片中写入的神经网络参数是图像识别神经网络对应的参数,当然,上述只是例举了几种芯片应用场景,本发明实施例对芯片的应用场景不做限制,可以是需要进行神经网络运算的各种设备和场景。
在一个可选的实施例中,参见图3,该步骤S100可以包括以下内容:
步骤S110:根据各层对应的Bias最小行数对各层进行映射排序;
步骤S120:对Bias最小行数相同的层按照权重矩阵的列数进行映射排序。
具体地,参见图4中的(a),示出了一个神经网络的参数,其中,上面一排5个矩阵是5个神经网络层对应的权重矩阵,下面一排5个矩阵是5个神经网络层对应的Bias,其中,以第一个权重矩阵为例,1024*128表示该权重矩阵的规模,是1024列,128行,对应的Bias是1024*2,表示该Bias是1024列、占据的最小行数是2行,其中,一层神经网络对应的权重矩阵的列数,与Bias对应的列数,是相同的,这是由于存算一体芯片中运算特性决定的。
在对该神经网络各层进行排序时,可先根据各层对应的Bias最小行数对各层进行排序;参见图4中的(b),是按照Bias最小行数由大到小进行排序,当然,在实际应用中,也可以按照由小到大进行排序,原理相同。
另外,对于1024*2以及768*2这两个Bias的最小行数相同,此时,对Bias最小行数相同的层按照权重矩阵的列数进行局部由大到小排序,最终的排序结果如图4中的(b)所示。
值得说明的是,本发明实施例针对已经训练好的特定神经网络,得到各层的Bias大小与在芯片上占据的最少行数,首先根据各层Bias占据的最少行数从大到小进行排序,之后对Bias占据行数相同的各层按照列数从小到大再进行一次局部排序。这样做的目的有两点,第一是在网络映射的过程,要优先考虑减少各物理行Bias大小的问题,因为这样可以提高芯片计算精度,而本发明实施例接收的输入包含各层Bias占据的最少行数,按照该行数映射之后阵列上的Bias行一般来说还有未映射的空间,如果用m行去承载最初设定用1行承载的bias值,则设计的bias值在每一行上变成原来的1/m。第二是在应用中,网络每一层的输入路数较少,而输出路数较多,如图4所示,针对图示网络层,输入为m行,输出为n列,往往m小于n,因此为了更好地保证能在有限的空间区域上容纳下整个网络,对各层X方向大小由大到小进行排序,在以Bias大小为第一优先级的前提下,以X方向大小为第二优先级放置网络各层。
在一个可选的实施例中,主阵列中包含多个阵列分布的存算一体单元块,参见图2,各层对应的权重矩阵排布到所述主阵列中的存算一体单元块上时,依次排布各层对应的权重矩阵时按照蛇形顺序排布,具体包括:针对每一层神经网络对应的权重矩阵,按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置。
具体地,按照蛇形顺序依次轮询主阵列中的存算一体单元块是否存在满足当前层排布条件的位置;其中,排布条件为:与当前排布周期中已排布在当前存算一体单元块上的权重矩阵并排且能够容纳当前层的权重矩阵。
若是,将当前层的权重矩阵排布到满足当前层排布条件的位置;
若否,继续轮询下一存算一体单元块,直至找到满足所述排布条件的位置;
值得说明的是,为了最大限度减少资源闲置,当找到满足条件的位置时,排布权重矩阵时从非空闲列的下一列开始排布,当然,在特殊应用场合,或者为减少干扰考虑,也可以间隔一定列数,具体根据实际应用需要进行选取。
若按照蛇形顺序轮询完所有存算一体单元块后仍未找到满足所述排布条件的位置,则返回首个存算一体单元块,进入下一排布周期。
在一个新的排布周期中,首先判断首个存算一体单元块的空闲位置是否能够容纳当前层的权重矩阵;若是,将当前层的权重矩阵排布在首个存算一体单元块的空闲位置;若否,按照蛇形顺序依次轮询各存算一体单元块,直到找到能够容纳所述权重矩阵的存算一体单元块,将当前层的权重矩阵排布在所述存算一体单元块的空闲位置;
值得说明的是,为了最大限度减少资源闲置,当找到满足条件的位置时,在排布权重矩阵时从非空闲行的下一行开始排列,当然,在特殊应用场合,或者为减少干扰考虑,也可以间隔一定行数,具体根据实际应用需要进行选取。
通过采用上述技术方案,将排序后的权重矩阵排列到主阵列上后,按照权重矩阵与对应的Bias列对应的原则,将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置时,将所述Bias排布到列对应的位置中的非空闲行的下一行。
为了使本领域技术人员更好地理解本发明实施例,下面结合图5,对映射排布过程进行详细说明。
首先,以一个20层的神经网络为例,将网络各层映射到存算一体芯片的存算一体单元阵列上。在排序完成后,将神经网络各层按先后顺序记为0-19,权重矩阵顺序编号为D0~D19,Bias顺序编号为B0~B19,首先对权重矩阵D0~D19进行排布,而后,在本例中,根据权重矩阵的排布结果对Bias B0~B19进行排布,在排布时,在主阵列中,第一排存算一体单元块按照从左到右的顺序,第二排存算一体单元块按照从右到左的顺序,第三排存算一体单元块按照从左到右的顺序,第四排存算一体单元块按照从右到左的顺序,而后返回第一排,按照上述的蛇形循环顺序进行轮询;
比如,对于D0,首先轮询块(0,0),存在能够容纳当前层的权重矩阵的位置,此时,将D0排布在(0,0);对于D1,首先轮询块(0,0),存在满足条件的位置,将D1排布在(0,0)且与D0并排;对于D2,先轮询块(0,0),在(0,0)块上与D0、D1并排位置不能容纳下D2,则按照顺序,轮询块(0,1),而后将D2排布在(0,1);对于D3,先轮询块(0,0),在(0,0)块上与D0、D1并排位置不能容纳下D3,再轮询块(0,1),在块(0,1)上与D2并排的位置也不能容下D3,则按照蛇形,轮询块(1,1),而后将D3排布在(1,1);对于D4,先轮询块(0,0),在(0,0)块上与D0、D1并排位置不能容纳下D4,再轮询块(0,1),在块(0,1)上与D2并排的位置也不能容下D4,则按照蛇形,轮询块(1,1),而后将D4排布在(1,1)且与D3并排的位置;对于D5,首先轮询块(0,0),块(0,0)上与D0、D1并排存在能够容纳D5的位置,此时,将D5排布在(0,0)且与D0、D1并排;依次类推,在排布完D15之后,对于块D16,通过从(0,0)开始顺序轮询,各块上均没有满足条件的位置(能够容纳D16且与本排布周期之前的矩阵并排的位置),则跳转到(0,0),进入下一排布周期。
在一个新的排布周期中,首先判断(0,0)的空闲位置是否能够容纳D16;若是,将D16排布(0,0),并且,在排布时,从非空闲行的下一行开始排列,本例中即从D1下一行开始排列,D17~D19的排布参见D1~D5,在此不再赘述。
值得说明的是,在一个可选的实施例中,D17首先轮询(0,0)的空闲位置是否能够容纳D17,其中,该空闲位置包括轮询D0所在横排(即上一排布周期所在横排)的位置,依次轮询,而后轮询当前的排布周期中D16的右侧是否有能够容纳D17的位置,依次类推,排列的原则是在一轮映射中,在一个阵列块中两层网络在X方向上要相邻,不能交错,但在Y方向上每层网络从上到下,只要能放下就放。因此阵列上的每个空位都在考虑范围内。
在另一个可选的实施例中,D17首先轮询(0,0)中D16右侧的空闲位置是否能够容纳D17,其中,在轮询时不轮询D0所在横排(即上一排布周期所在横排)的位置,只轮询当前周期所在横排的位置。值得说明的是,在一个块上,排序在前的矩阵是在排序在后的矩阵的前面,前后按照轮询顺序决定,比如,对于第一排块(0,1)和(0,1),是按照从左到右的顺序轮询,则左边位置是右边位置的前面,在一个块中,排序在前的矩阵在排序在后的矩阵的左边,比如,D0在D1的左边;对于第二排块(1,0)和(1,1),是按照从右到左的顺序轮询,则右边位置是左边位置的前面,在第二排的一个块中,排序在前的矩阵在排序在后的矩阵的右边,比如,D3在D4的右边。
值得说明的是,在映射时先考虑各层权重在主阵列上的位置,再考虑各层Bias在Bias阵列上的位置,映射总的原则为:从第(0,0)块开始,在偶数行块从左到右(第0行块算偶数行块),在奇数行块从右到左,整体上从上到下的蛇形顺序进行映射,在一轮结束后回到第(0,0)块重复上述过程,直到整个神经网络完成映射。(以上总原则仅为举例,在实际过程中,第0块行从右往左或者整体上按照蛇形先先从阵列的最下面的块行往最上面的块行的顺序也可以,但是必须遵循蛇形原则,而且必须是按行的蛇形排列,不能是按列的蛇形排列(这是以行为输入、列为输出的情形下的原则额,本领域技术人员可以理解的是,若以行为输出,列为输入,则情况相反,本发明实施例对此不再赘述)。在上面的步骤中,对神经网络各层按从大到小的顺序排列,蛇形排列基本保证占据Bias行数最多的和最少的在Y方向上对应,Bias占据行数较多的和较少的在Y方向上也对应,这样最终Bias阵列上各层的Bias都靠上分布,或者按从下到上的顺序映射的话靠下分布,为之后的Bias扩展提供更大的空间,为芯片的计算结果提供更高的计算精度。
在主阵列映射过程中需要注意以下几个问题。除非特殊要求,相邻块以无缝衔接为原则,无缝衔接的目的是尽量在映射前期充分利用阵列空间,因为各层必须整块放入阵列,如果层与层之间留有缝隙而这些缝隙又很难被利用,则映射后期可能难以放置下。在一轮映射中,每一层都要从第(0,0)块开始按蛇形顺序寻找位置,如果当前块位置不够,则考虑下一块。在一轮映射中,如果存在某一层在所有块中都放置不下,则进入新的一轮映射。在Bias映射中,只需要根据其对应的权重位置以及事先给定的占据的最小行数,在Bias阵列上从上到下依次映射即可,图5中各Bias后面括号中的数字表述其占据的行数,比如,B1(9)表示B1占据的行数为9。
在一个可选的实施例中,该用于存算一体芯片的神经网络映射方法还可以包括:获取待映射神经网络的参数以及目标存算一体芯片的参数,所述待映射神经网络的参数包括各层对应的权重矩阵以及Bias;而后根据各层的Bias以及所述存算一体芯片的参数得到各层对应的Bias最小行数。
具体地,神经网络模型确定之后,知道了各层的权重阵列以及偏置数值,根据偏置数值以及目标芯片的参数(每一行Bias的属性)计算出每一层的Bias最小行数。
Bias的最小行数可以由电路方面的工程师根据精度要求事先给定,一般以满足最差精度要求为标准,也可以按照预设规则进行运算,本发明实施例对此不再赘述。
在一个可选的实施例中,该用于存算一体芯片的神经网络映射方法还可以包括:根据Bias排布结果和所述Bias阵列的空闲情况对Bias的排布进行扩展,得到Bias最终排布结果。
具体地,在排布完成后,Bias阵列可能会有空闲行,为尽可能减少Bias阵列中全部或部分存算一体单元存储的Bias数值,需要利用Bias阵列中的空闲行对Bias的排布进行二次扩展,得到最终的排布方案,而后按照最终的排布方案将神经网络参数写入存算一体芯片中。
由于存算一体芯片本质上采用模拟计算,Bias阵列上每个存算一体单元的bias值越大,最终计算产生的噪声就会越大,过大的Bias引入的过大噪声会对计算精度产生决定性影响,因此可以根据阵列大小,尽可能地扩展逻辑上一行Bias占据的实际Bias阵列行数,如占据的实际行数为m,则每一行上存放的Bias大小为逻辑上Bias大小的1/m,从而提高计算精度。
在一个可选的实施例中,根据Bias排布结果和所述Bias阵列的空闲情况对Bias的排布进行扩展,包括:
根据Bias阵列的空闲行数判断是否能够将所有Bias占用行数成倍扩展;
若是,将所有Bias占用行数成倍扩展;
若否,按照预设规则选取Bias进行扩展。
具体地,在将神经网络各层权重映射到主阵列上的同时,按照事先给定的各层Bias所占最少行数,在Bias阵列上完成了各层Bias的初步映射,映射结果参见图6中的(a)。而后,先按照已映射Bias行能扩展的最大整倍数进行扩展,如Bias阵列总行数为10行,已映射3行,则将每一行扩展为原来的3倍,若已映射4行,则将每一行扩展为原来的2倍。对于图6中的(a)所示的阵列排布,可以完整的扩展两倍,结果如图6中的(b)所示。之后,如果Bias阵列还有空闲行,则从下往上选取等于空闲行的已映射Bias行数,将这些Bias行扩展为两行,如图6中的(c)所示,如果还有2个空闲行,则将从下往上数第三行和第四行分别扩展为两行。其中,空闲行指整行都没有映射过Bias的行,部分映射过Bias的行算已映射Bias行。
总的来说,扩展的原则是尽可能利用Bias阵列的资源,减少空闲行,在能够对所有层对应的Bias进行扩展的情况下对所有层对应的Bias进行扩展,不能对所有层对应的Bias进行扩展的情况下对部分层对应的Bias进行扩展,不能对部分层Bias进行扩展的情况下则对部分行Bias进行扩展。
其中,在对部分层对应的Bias进行扩展时,可以按照上述对各层的排序的顺序,从前往后或从后往前选取部分层对应的Bias进行扩展,也可以根据预设优先级,对部分层对应的Bias进行扩展;举例来说,可以优先将对精度影响较大的层对应的Bias进行扩展,也可以将初步映射后,单个存算一体单元对应Bias值较大的层对应的Bias进行扩展,具体根据实际应用需求选取。
综上所述,本发明实施例提供了一种将神经网络权重自动映射到存算一体芯片的方法,该方法可集成到存算一体芯片设计的工具链中,为存算一体芯片使用者提供便利条件。
其中,通过对Bias的排布方式进行扩展,一方面充分利用存算一体单元,提高资源利用率,减少资源闲置,另一方面,减少了部分或全部Bias阵列中的存算一体单元存储的Bias数值,单个存算一体单元上存储的Bias数值越小,电导越小,同样电压下,电流越小,电流噪声越小,运算精度越高;另外,通过对各层神经网络参数排序后,按照蛇形进行排列,有效互补,增加了存算一体单元阵列的利用效率,在相同运算规模下,需要的存算一体单元阵列能够极大降低,适应芯片小型化需求。
本发明实施例还提供了一种存算一体芯片,包括:用于执行神经网络运算的存算一体单元阵列,所述存算一体单元阵列包括:主阵列以及Bias阵列,所述主阵列中映射有各层神经网络对应的权重矩阵;Bias阵列中映射有各层神经网络对应的Bias;
各层对应的权重矩阵基于Bias最小行数与权重矩阵的列数排序,且按照排序结果在所述主阵列上蛇形排布,所述Bias排布到Bias阵列中的与对应权重矩阵的排布位置列对应的位置。
在一个可选的实施例中,主阵列包括多个阵列分布的存算一体单元块,各层对应的权重矩阵排布到所述主阵列中的存算一体单元块上;
其中,针对每一层神经网络对应的权重矩阵,按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到对应的排布位置。
在一个可选的实施例中,排序的原则为:根据各层对应的Bias最小行数对各层进行映射排序;对Bias最小行数相同的层按照权重矩阵的列数进行映射排序。
在一个可选的实施例中,Bias排布方式在排布到Bias阵列中的与对应权重矩阵的排布位置列对应的位置的基础上,还基于Bias最小行数以及Bias阵列空闲情况对各Bias占据的行数进行了扩展。
本发明实施例提供的存算一体芯片,权重矩阵以及对应的Bias的排布方式根据上述的神经网络映射方法产生。
值得说明的是,本发明实施例提供的存算一体芯片,可以适用于各种电子设备,比如:智能手机、平板电子设备、网络机顶盒、便携式计算机、台式电脑、个人数字助理(PDA)、车载设备、智能穿戴设备、玩具、智能家居控制设备、流水线设备控制器等。其中,所述智能穿戴设备可以包括智能眼镜、智能手表、智能手环等。
基于同一发明构思,本申请实施例还提供了一种用于存算一体芯片的神经网络映射装置,可以用于实现上述实施例所描述的方法,如下面的实施例所述。由用于存算一体芯片的神经网络映射装置解决问题的原理与上述方法相似,因此用于存算一体芯片的神经网络映射装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是本发明实施例中的用于存算一体芯片的神经网络映射装置的结构框图。该用于存算一体芯片的神经网络映射装置包括:排序模块10、权重排布模块20、偏置排布模块30。
排序模块根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;
权重排布模块根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中;
偏置排布模块根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;
其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的用于存算一体芯片的神经网络映射方法的步骤。
下面参考图8,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
如图8所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有***600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的用于存算一体芯片的神经网络映射方法的步骤。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (20)
1.一种用于存算一体芯片的神经网络映射方法,其特征在于,包括:
根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;
根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中,并根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;
其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布。
2.根据权利要求1所述的用于存算一体芯片的神经网络映射方法,其特征在于,所述主阵列中包含多个阵列分布的存算一体单元块,各层对应的权重矩阵排布到所述主阵列中的存算一体单元块上;
所述依次排布各层对应的权重矩阵时按照蛇形顺序排布,包括:针对每一层神经网络对应的权重矩阵,按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置。
3.根据权利要求2所述的用于存算一体芯片的神经网络映射方法,其特征在于,所述根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序,包括:
根据各层对应的Bias最小行数对各层进行映射排序;
对Bias最小行数相同的层按照权重矩阵的列数进行映射排序。
4.根据权利要求2所述的用于存算一体芯片的神经网络映射方法,其特征在于,还包括;
根据排布结果将所述待映射神经网络各层的权重矩阵和Bias写入所述存算一体芯片上。
5.根据权利要求2所述的用于存算一体芯片的神经网络映射方法,其特征在于,所述按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置,包括:
按照蛇形顺序依次轮询所述主阵列中的存算一体单元块是否存在满足当前层排布条件的位置;
若是,将当前层的权重矩阵排布到满足当前层排布条件的位置;
若否,继续轮询下一存算一体单元块,直至找到满足所述排布条件的位置;
其中,所述排布条件为:与当前排布周期中已排布在当前存算一体单元块上的权重矩阵并排且能够容纳当前层的权重矩阵。
6.根据权利要求5所述的用于存算一体芯片的神经网络映射方法,其特征在于,排布权重矩阵时从非空闲列的下一列开始排布。
7.根据权利要求5所述的用于存算一体芯片的神经网络映射方法,其特征在于,所述按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到所述排布位置,还包括:
若按照蛇形顺序轮询完所有存算一体单元块后仍未找到满足所述排布条件的位置,则返回首个存算一体单元块,进入下一排布周期:
判断首个存算一体单元块的空闲位置是否能够容纳当前层的权重矩阵;
若是,将当前层的权重矩阵排布在首个存算一体单元块的空闲位置;
若否,按照蛇形顺序依次轮询各存算一体单元块,直到找到能够容纳所述权重矩阵的存算一体单元块,将当前层的权重矩阵排布在所述存算一体单元块的空闲位置;
其中,排布权重矩阵时从非空闲行的下一行开始排列。
8.根据权利要求1所述的用于存算一体芯片的神经网络映射方法,其特征在于,所述将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置时,将所述Bias排布到列对应的位置中的非空闲行的下一行。
9.根据权利要求1所述的用于存算一体芯片的神经网络映射方法,其特征在于,还包括:
根据Bias排布结果和所述Bias阵列的空闲情况对Bias的排布进行扩展,得到Bias最终排布结果。
10.根据权利要求9所述的用于存算一体芯片的神经网络映射方法,其特征在于,所述根据Bias排布结果和所述Bias阵列的空闲情况对Bias的排布进行扩展,包括:
根据Bias阵列的空闲行数判断是否能够将所有Bias占用行数成倍扩展;
若是,将所有Bias占用行数成倍扩展;
若否,按照预设规则选取Bias进行扩展。
11.根据权利要求1至9任一项所述的用于存算一体芯片的神经网络映射方法,其特征在于,还包括:
将所述存算一体芯片的存算一体单元阵列划分为主阵列以及Bias阵列;
将所述主阵列划分为多个存算一体单元块。
12.根据权利要求1至9任一项所述的用于存算一体芯片的神经网络映射方法,其特征在于,还包括:
获取待映射神经网络的参数以及目标存算一体芯片的参数,所述待映射神经网络的参数包括各层对应的权重矩阵以及Bias;
根据各层的Bias以及所述存算一体芯片的参数得到各层对应的Bias最小行数。
13.一种存算一体芯片,其特征在于,包括:用于执行神经网络运算的存算一体单元阵列,所述存算一体单元阵列包括:主阵列以及Bias阵列,所述主阵列中映射有各层神经网络对应的权重矩阵;Bias阵列中映射有各层神经网络对应的Bias;
各层对应的权重矩阵基于Bias最小行数与权重矩阵的列数排序,且按照排序结果在所述主阵列上蛇形排布,所述Bias排布到Bias阵列中的与对应权重矩阵的排布位置列对应的位置。
14.根据权利要求13所述的存算一体芯片,其特征在于,所述主阵列包括多个阵列分布的存算一体单元块,各层对应的权重矩阵排布到所述主阵列中的存算一体单元块上;
其中,针对每一层神经网络对应的权重矩阵,按照蛇形顺序依次轮询所述主阵列中的存算一体单元块以找到对应的排布位置。
15.根据权利要求13所述的存算一体芯片,其特征在于,所述排序的原则为:
根据各层对应的Bias最小行数对各层进行映射排序;
对Bias最小行数相同的层按照权重矩阵的列数进行映射排序。
16.根据权利要求13所述的存算一体芯片,其特征在于,所述Bias排布方式在排布到Bias阵列中的与对应权重矩阵的排布位置列对应的位置的基础上,还基于Bias最小行数以及Bias阵列空闲情况对各Bias占据的行数进行了扩展。
17.一种存算一体芯片,包括:用于执行神经网络运算的存算一体单元阵列,所述存算一体单元阵列包括:主阵列以及Bias阵列,所述主阵列中映射有各层神经网络对应的权重矩阵;Bias阵列中映射有各层神经网络对应的Bias;
所述权重矩阵以及对应的Bias的排布方式根据权利要求1至12任一项所述的神经网络映射方法产生。
18.一种用于存算一体芯片的神经网络映射装置,其特征在于,包括:
排序模块,根据待映射神经网络各层对应的Bias最小行数与权重矩阵对各层进行映射排序;
权重排布模块,根据所述映射排序结果,依次将各层对应的权重矩阵排布到存算一体芯片的主阵列中;
偏置排布模块,根据权重矩阵的排布位置以及Bias最小行数将对应的Bias排布到所述存算一体芯片的Bias阵列中的与所述排布位置列对应的位置;
其中,依次排布各层对应的权重矩阵时按照蛇形顺序排布。
19.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至12任一项所述的神经网络映射方法的步骤。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至12任一项所述的神经网络映射方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111184060.XA CN113988277A (zh) | 2021-10-11 | 2021-10-11 | 用于存算一体芯片的神经网络映射方法、装置、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111184060.XA CN113988277A (zh) | 2021-10-11 | 2021-10-11 | 用于存算一体芯片的神经网络映射方法、装置、设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113988277A true CN113988277A (zh) | 2022-01-28 |
Family
ID=79738159
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111184060.XA Pending CN113988277A (zh) | 2021-10-11 | 2021-10-11 | 用于存算一体芯片的神经网络映射方法、装置、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113988277A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114997388A (zh) * | 2022-06-30 | 2022-09-02 | 北京知存科技有限公司 | 存算一体芯片用基于线性规划的神经网络偏置处理方法 |
-
2021
- 2021-10-11 CN CN202111184060.XA patent/CN113988277A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114997388A (zh) * | 2022-06-30 | 2022-09-02 | 北京知存科技有限公司 | 存算一体芯片用基于线性规划的神经网络偏置处理方法 |
CN114997388B (zh) * | 2022-06-30 | 2024-05-07 | 杭州知存算力科技有限公司 | 存算一体芯片用基于线性规划的神经网络偏置处理方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107437110B (zh) | 卷积神经网络的分块卷积优化方法及装置 | |
EP4036724A1 (en) | Method for splitting neural network model by using multi-core processor, and related product | |
CN107203807B (zh) | 神经网络加速器的片上缓存带宽均衡方法、***及其装置 | |
US20230026006A1 (en) | Convolution computation engine, artificial intelligence chip, and data processing method | |
CN111241353B (zh) | 一种图数据的分区方法、装置以及设备 | |
US20230298237A1 (en) | Data processing method, apparatus, and device and storage medium | |
CN112463159B (zh) | 编译方法、装置、电子设备和存储介质 | |
CN106295670A (zh) | 数据处理方法及数据处理装置 | |
CN116467061B (zh) | 一种任务执行的方法、装置、存储介质及电子设备 | |
CN107391564B (zh) | 数据转换方法、装置以及电子设备 | |
CN113988277A (zh) | 用于存算一体芯片的神经网络映射方法、装置、设备 | |
US20090064120A1 (en) | Method and apparatus to achieve maximum outer level parallelism of a loop | |
CN111523642A (zh) | 用于卷积运算的数据重用方法、运算方法及装置、芯片 | |
CN114005458A (zh) | 基于流水线架构的语音降噪方法、***及存储介质 | |
CN114723024A (zh) | 用于存算一体芯片的基于线性规划的神经网络映射方法 | |
CN111645687A (zh) | 变道策略确定方法、装置及存储介质 | |
CN111667060B (zh) | 深度学习算法的编译方法、装置及相关产品 | |
CN113792170B (zh) | 图数据划分方法、装置和计算机设备 | |
WO2020142251A1 (en) | Prediction for time series data using a space partitioning data structure | |
CN115879543A (zh) | 一种模型训练方法、装置、设备、介质及*** | |
CN114968182A (zh) | 用于存算一体芯片的算子拆分方法、控制方法和装置 | |
CN113112084B (zh) | 一种教练机后机身研发流程优化方法及装置 | |
CN110321476B (zh) | 基于局部敏感哈希的并行矩阵分解计算实现方法 | |
CN115774577A (zh) | 一种Spark GraphX参数调优方法、装置、电子设备及存储介质 | |
CN111198714B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: China Address after: Room 213-175, 2nd Floor, Building 1, No. 180 Kecheng Street, Qiaosi Street, Linping District, Hangzhou City, Zhejiang Province, 311100 Applicant after: Hangzhou Zhicun Computing Technology Co.,Ltd. Address before: 100080 15 / F, west block, brilliant times building, Haidian District, Beijing Applicant before: BEIJING WITINMEM TECHNOLOGY Co.,Ltd. Country or region before: China |