执行神经网络模型的人工智能处理器、方法及相关产品与流程

文档序号:26904876发布日期:2021-10-09 13:48阅读:75来源:国知局
执行神经网络模型的人工智能处理器、方法及相关产品与流程

1.本披露一般地涉及数据处理领域。更具体地,本披露涉及执行神经网络模型的人工智能处理器、芯片、板卡及使用人工智能处理器来执行神经网络模型的方法。


背景技术:

2.目前,深度学习(deep learning)已经成为机器学习中的重要分支,也大力助推着人工智能(ai)的发展。深度学习的核心技术——深度神经网络(dnn)已在诸多行业有着广泛的应用。
3.为了提高神经网络模型的表达能力,dnn不断向着更深或更宽的网络规模发展。然而网络层级的增加也带来了数据io量大、访存供不上数等问题。因此,为了能充分发挥神经网络模型的优势,需要解决人工智能处理器面临的访存困扰问题。


技术实现要素:

4.为了至少部分地解决背景技术中提到的一个或多个技术问题,本披露的方案提供了一种执行神经网络模型的人工智能处理器、芯片、板卡及使用人工智能处理器来执行神经网络模型的方法。
5.在第一方面中,本披露公开一种执行神经网络模型的人工智能处理器,包括控制电路、运算电路和片上存储电路,所述神经网络模型包括上池化层和深度卷积层,其中:所述控制电路用于控制从片外存储电路向所述片上存储电路加载所述上池化层的输入数据以及所述深度卷积层的卷积核;所述运算电路用于针对所述输入数据和所述卷积核执行所述上池化层和深度卷积层的融合运算,并将融合运算结果写回所述片上存储电路;以及所述控制电路进一步用于控制从所述片上存储电路向所述片外存储电路输出所述融合运算结果。
6.在第二方面中,本披露提供一种芯片,包括前述第一方面任一实施例的人工智能处理器。
7.在第三方面中,本披露提供一种板卡,包括前述第二方面任一实施例的芯片。
8.在第四方面中,本披露提供一种使用前述第一方面任一实施例的人工智能处理器来执行神经网络模型的方法。
9.通过如上所提供的执行神经网络模型的人工智能处理器、使用人工智能处理器来执行神经网络模型的方法、芯片和板卡,本披露实施例提供了一种神经网络模型中的上池化层和深度卷积层的融合优化处理方案,其可以有效减少片外访存带宽,缓解访存压力,提高机器的处理效率。
附图说明
10.通过参考附图阅读下文的详细描述,本披露示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本披露的若
干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
11.图1示出本披露实施例的板卡的结构图;
12.图2示出本披露实施例的组合处理装置的结构图;
13.图3示出本披露实施例的单核或多核计算装置的处理器核的内部结构示意图;
14.图4示出可以应用本披露实施例的神经网络模型的示例性图示;
15.图5示出上池化层的操作示意图;
16.图6示出深度卷积层的操作示意图;
17.图7示出融合前的上池化层的示例性运算过程;
18.图8示出融合前的深度卷积层的示例性运算过程;
19.图9示出本披露实施例的上池化层和深度卷积层的融合运算过程;
20.图10示出本披露实施例的索引映射关系的示意图;
21.图11示出本披露实施例的人工智能处理器的示例性结构框图;以及
22.图12示出本披露实施例的由人工智能处理器执行神经网络模型的方法的示例性流程图。
具体实施方式
23.下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
24.应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
25.还应当理解,在本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
26.如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
27.下面结合附图来详细描述本披露的具体实施方式。
28.图1示出本披露实施例的一种板卡10的结构示意图。如图1所示,板卡10包括芯片101,其是一种系统级芯片(system on chip,soc),或称片上系统,集成有一个或多个组合处理装置,组合处理装置是一种人工智能运算单元,用以支持各类深度学习和机器学习算法,满足计算机视觉、语音、自然语言处理、数据挖掘等领域复杂场景下的智能处理需求。特别是深度学习技术大量应用在云端智能领域,云端智能应用的一个显著特点是输入数据量大,对平台的存储能力和计算能力有很高的要求,此实施例的板卡10适用在云端智能应用,具有庞大的片外存储、片上存储和强大的计算能力。
29.芯片101通过对外接口装置102与外部设备103相连接。外部设备103例如是服务器、计算机、摄像头、显示器、鼠标、键盘、网卡或wifi接口等。待处理的数据可以由外部设备103通过对外接口装置102传递至芯片101。芯片101的计算结果可以经由对外接口装置102传送回外部设备103。根据不同的应用场景,对外接口装置102可以具有不同的接口形式,例如pcie接口等。
30.板卡10还包括用于存储数据的存储器件104,其包括一个或多个存储单元105。存储器件104通过总线与控制器件106和芯片101进行连接和数据传输。板卡10中的控制器件106配置用于对芯片101的状态进行调控。为此,在一个应用场景中,控制器件106可以包括单片机(micro controller unit,mcu)。
31.图2是示出此实施例的芯片101中的组合处理装置的结构图。如图2中所示,组合处理装置20包括计算装置201、接口装置202、处理装置203和存储装置204。
32.计算装置201配置成执行用户指定的操作,主要实现为单核智能处理器或者多核智能处理器,用以执行深度学习或机器学习的计算,其可以通过接口装置202与处理装置203进行交互,以共同完成用户指定的操作。
33.接口装置202用于在计算装置201与处理装置203间传输数据和控制指令。例如,计算装置201可以经由接口装置202从处理装置203中获取输入数据,写入计算装置201片上的存储装置。进一步,计算装置201可以经由接口装置202从处理装置203中获取控制指令,写入计算装置201片上的控制缓存中。替代地或可选地,接口装置202也可以读取计算装置201的存储装置中的数据并传输给处理装置203。
34.处理装置203作为通用的处理装置,执行包括但不限于数据搬运、对计算装置201的开启和/或停止等基本控制。根据实现方式的不同,处理装置203可以是中央处理器(central processing unit,cpu)、图形处理器(graphics processing unit,gpu)或其他通用和/或专用处理器中的一种或多种类型的处理器,这些处理器包括但不限于数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field

programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算装置201而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算装置201和处理装置203整合共同考虑时,二者视为形成异构多核结构。
35.存储装置204用以存储待处理的数据,其可以是dram,为ddr内存,大小通常为16g或更大,用于保存计算装置201和/或处理装置203的数据。
36.图3示出了计算装置201为单核或多核装置时处理器核的内部结构示意图。计算装置301用以处理计算机视觉、语音、自然语言、数据挖掘等输入数据,计算装置301包括三大模块:控制模块31、运算模块32及存储模块33。
37.控制模块31用以协调并控制运算模块32和存储模块33的工作,以完成深度学习的任务,其包括取指单元(instruction fetch unit,ifu)311及指令译码单元(instruction decode unit,idu)312。取指单元311用以获取来自处理装置203的指令,指令译码单元312则将获取的指令进行译码,并将译码结果作为控制信息发送给运算模块32和存储模块33。
38.运算模块32包括向量运算单元321及矩阵运算单元322。向量运算单元321用以执
行向量运算,可支持向量乘、加、非线性变换等复杂运算;矩阵运算单元322负责深度学习算法的核心计算,即矩阵乘及卷积。
39.存储模块33用来存储或搬运相关数据,包括神经元存储单元(neuron ram,nram)331、参数存储单元(weight ram,wram)332、直接内存访问模块(direct memory access,dma)333。nram 331用以存储输入神经元、输出神经元和计算后的中间结果;wram 332则用以存储深度学习网络的卷积核,即权值;dma 333通过总线34连接dram 204,负责计算装置301与dram 204间的数据搬运。
40.本披露的实施例基于前述硬件环境,提供一种执行神经网络模型的人工智能处理器,支持神经网络模型中上池化层和深度卷积层的融合优化处理。
41.图4示出了可以应用本披露实施例的神经网络模型的示例性图示。
42.如图所示,神经网络模型400包括两部分:卷积网络部分410和反卷积网络部分420。卷积网络部分相当于特征提取器,将输入图片转换成多维特征表示。反卷积网络部分相当于一个形状生成器,将卷积网络提取的特征生成目标分割结果。
43.卷积网络部分410中包括多个层,其可以包括间隔分布的卷积层411、池化层412等等。卷积层可以通过对输入数据应用若干滤波器来进行特征提取。池化层主要用于缩减输入数据的规模,减小过拟合。实现池化的方法有很多种,最常见的是最大值合并、平均值合并以及随机合并。卷积层和池化层之间可以存在线性层。
44.反卷积网络部分420是卷积网络部分的镜像,其可以包括间隔分布的上池化层421、反卷积层422等等。在神经网络中,由于输入图像通过卷积层提取特征后,输出的尺寸往往会变小,而有时需要将图像恢复到原来的尺寸以便进行进一步的计算,诸如图像的语义分割,这个使图像由小分辨率映射到大分辨率的操作可以通过上池化层421来实现。上池化层421与卷积网络部分中的池化层412可以是配对的。反卷积层是卷积层的逆过程,用于还原出卷积之前图片的尺寸。反卷积层的运算可以是深度卷积运算,因此有时也称为深度卷积层。上池化层和反卷积层之间可以存在线性层。
45.可以理解的是,上文关于神经网络模型的介绍仅仅是示例性的,并且神经网络模型的结构并不受图中所示结构的限制,本领域技术人员根据需要可以对图中所示结构做出修改。下面详细描述相关层的操作。
46.图5示出配对的池化层和上池化层的操作示意图。在此示例中,采用最大值池化方式。注意,通常池化不在通道方向(也称为深度方向)上池化,因此图中仅示出单个通道上的池化和上池化。
47.如图所示,左边为最大值池化的操作示意图,其中输入图像510的尺寸为4
×
4,池化窗口尺寸为2
×
2,池化步长为(2,2)。也即,按照xy方向均为2的步长,在每个2
×
2的池化窗口中选取最大值作为该窗口的值,如图中深色方块所选取的值。各个池化窗口中选出的最大值构成输出图像520,其尺寸为2
×
2。同时,需要记录最大值在输入图像中的位置,也即池化索引530。
48.图中右边示出了配对的上池化的操作示意图,上池化层的输入信息包括2
×
2的输入图像540,以及池化索引530。上池化层使用池化索引530,将输入图像540中各元素按索引指示的位置恢复成池化前的尺寸4
×
4,同时其余位置补零,从而得到上池化后的输出图像550。
49.图6示出深度卷积层的操作示意图。深度卷积与标准卷积相比,区别在于深度方向不进行累加,此处的深度方向是指输入通道。在标准卷积中每个卷积核都需要与输入特征图的所有图层(输入通道)计算并累加,所以每个卷积核的输入通道数等于输入特征图的输入通道数。而深度卷积中每个卷积核都是单通道的,一个卷积核负责一个通道,一个通道只被一个卷积核卷积。
50.如图所示,输入特征图610的维度尺寸为12
×
12
×
3,也即包括三个通道,每个通道包括12
×
12的图像。在此深度卷积中分别使用3个卷积核620,每个卷积核都是单通道的,其尺寸例如为5
×5×
1。每个卷积核仅对输入特征图610的一个通道做卷积,这样的卷积每次都得出大小为8
×8×
1的输出,之后再将这些输出堆叠在一起创建一个8
×8×
3的图像,最终得出一个大小为8
×8×
3的输出特征图630。从图中可以看出,输出特征图的深度(通道数)保持与输入特征图一致。
51.以上描述了上池化层和深度卷积层的操作原理。在常规神经网络模型中,各个网络层之间的运算是相对独立、顺次执行的,也即前一层运算完成后,会将运算结果回存到片外存储电路上,后一层在执行运算时,从片外存储电路上读取数据,再执行相应的运算。
52.图7示出融合前的上池化层的示例性运算过程。在图7的示例中,假设上池化的参数如下:池化窗口大小为2
×
2,池化步长等于池化窗口大小,也是2
×
2,池化结果的填充为(1,0,1,0),也即上面填充一行,左边填充一列,下面和右边没有填充。此外,池化索引在各个池化窗口中是一致的,图中示出均为左上角。
53.如图所示,输入特征图710大小为2
×
2,池化窗口也为2
×
2,相应的池化索引720是4
×
4,并且每个窗口中的索引固定为0(也即窗口中的左上角)。根据池化索引720对输入特征图710执行上池化操作后,得到输出特征图730,其维度大小为5
×
5,其中灰色部分是填充部分,而输入特征图中的数据分别填入输出特征图中对应池化索引所指示的位置处,其余位置补零。
54.在未进行融合时,当执行到上池化层的运算时,首先从片外存储电路(例如图2的存储装置204,dram)读取上池化层的输入(例如,输入特征图710和池化索引720)到片上存储电路,例如图3中的nram 331存储输入特征图710,图3中的wram 332存储池化索引720。
55.接着,运算电路(例如图3中的向量运算单元321或矩阵运算单元322)从nram 331和wram 332取数完成运算,并将上池化的结果(例如输出特征图730)写回到nram 331。
56.最后,处理器再把上池化的结果从nram 331写回到片外存储电路(例如图2的存储装置204,dram)中,以作为下一神经网络层的输入。
57.图8示出融合前的深度卷积层的示例性运算过程。在图8的示例中,深度卷积层是图7的上池化等的下一层,其对上池化后的输入特征图执行深度卷积。假设深度卷积的参数如下:卷积核大小为2
×
2,卷积步长为1
×
1,填充为(0,0,0,0)。
58.如图所示,输入特征图810即图7的输出特征图730,其大小为5
×
5,卷积核820为2
×
2。利用卷积核820对输入特征图810执行深度卷积后,得到输出特征图830,其维度大小为4
×
4。
59.在未进行融合时,当执行到深度卷积层的运算时,首先从片外存储电路(例如图2的存储装置204,dram)读取上一层(例如图7的上池化层)的输出,作为深度卷积层的输入(例如,输入特征图810)到片上存储电路,例如图3中的nram 331存储输入特征图810。此外,
还从片外存储电路读取深度卷积层的卷积核820到图3中的wram 332中。
60.接着,运算电路(例如图3中的向量运算单元321或矩阵运算单元322)从nram 331和wram 332取数完成运算,并将深度卷积的结果(例如输出特征图830)写回到nram 331。
61.最后,处理器再把深度卷积的结果从nram 331写回到片外存储电路(例如图2的存储装置204,dram)中,以作为下一神经网络层的输入。
62.从结合图7和图8描述的运算过程可以看出,各个网络层的顺次执行会不必要地增加同一块数据(在此示例中为上池化层的输出特征图730,其作为深度卷积层的输入特征图810)从片上存储电路到片外存储电路,以及再从片外存储电路到片上存储电路的数据搬运,从而增大数据访存的压力。
63.鉴于此,本披露实施例提出了上池化层和深度卷积层的融合方案,其将两个网络层的运算融合在一起,从而避免了中间数据在片外和片上存储电路之间的来回搬运,降低了数据访存压力。进一步地,在一些实施例中,通过分析两个网络层的运算特性,调整运算过程,将其有效融合,可以进一步提高运算性能。
64.从上面描述的上池化层和深度卷积层的运算过程可以看出,由于上池化过程中对池化索引指示的位置之外的位置补零,因此深度卷积运算的最终结果只与上池化层的输入特征图(也即非零输入数据元素)的运算结果有关,因此,可以直接针对上池化层的输入特征图,执行与卷积核的乘加运算。此外,当每个卷积输出点对应的感受野内只有一个非零数据元素时,计算结果之间无需进行累加。进一步地,从图8的输出特征图830可以看出,这些乘法运算结果在输出特征图中的顺序与池化索引有关,只需根据池化索引进行调整重排即可得到最终结果。
65.相应地,在本披露实施例的融合运算方案中,上池化和深度卷积的融合运算可以包括两个步骤:计算卷积核与上池化输入数据的运算结果(例如乘积结果);以及根据池化索引,对运算结果进行重排,以得到最终的融合运算结果。
66.图9示出本披露实施例的上池化层和深度卷积层的融合运算过程。
67.如图9所示,可以首先从片外存储电路向片上存储电路加载上池化层的输入数据以及深度卷积层的卷积核。上池化层的输入特征图910的大小为2
×2×
c,其中c表示通道维度,也称为深度方向。深度卷积层的卷积核920的大小也为2
×2×
c。
68.在运算时,卷积核与上池化输入数据的运算结果可以分为多个轮次进行运算,以将卷积核920中深度方向上的各个权值向量分别与输入特征图910的深度方向上的输入向量执行对位乘法运算,得到多个深度方向上的结果向量。
69.例如,可以首先取通道维度/深度方向上固定一个高度h和宽度w维度的权值向量,例如920中深色部分表示的h和w均为1的权值向量a,将权值向量a分别对输入特征图910的深度方向上的各个输入向量进行一次向量乘法运算,也即对位乘法运算,从而得到930所示的4个结果向量。类似地,可以在下一轮运算中,将权值向量b分别与各个输入向量执行向量乘法运算,得到4个结果向量940。同样可以得到权值向量c和d对应的结果向量950和960。
70.接着,根据上池化层的池化索引的指示,对这多个结果向量进行重排,以得到最终的融合运算结果970。
71.如图所示,针对图9中的第1个权值向量a的运算:a*[1,2,3,4]=[1*a,2*a,3*a,4*a],可以理解为1、2、3和4分别位于卷积核的第1个位置上时产生的乘积结果。类似地,针对
图9中的第2个权值向量b的运算:b*[1,2,3,4]=[1*b,2*b,3*b,4*b],可以理解为1、2、3和4分别位于卷积核的第2个位置上时产生的乘积结果。由此,可以结合池化索引来确定各个结果向量的最终位置。
[0072]
具体地,在一些实施例中,基于池化索引,确定各个输入向量的索引;然后按照索引映射关系,根据输入向量的索引确定对应的结果向量的索引。最后,可以按照结果向量的索引的顺序,对结果向量进行重排,以得到融合运算结果。
[0073]
池化索引可以有多种表示方式,其可以是一维或二维,本披露在此方面没有限制。不同维度的索引可以相互进行转换,例如按照预定遍历规则,将二维索引转换成一维索引,反之亦然。以图7中的池化索引720为例,总计16个位置,具有非零数据(深色方块)的位置索引分别是(1,1)、(1,3)、(3,1)和(3,3),其也可以表示为一维索引,分别为0、2、8和10。在一些实施例中,上池化层中各个池化窗口的池化索引一致,例如图7和图9的示例中都是左上角。在这些实施例中,池化索引可以只需池化窗口中的一个索引表示即可,例如0表示2
×
2的池化窗口中的左上角位置。
[0074]
根据池化索引,可以对应地确定各个输入向量的池化后索引,例如输入特征图910中输入向量“1”的池化后索引为0、输入向量“2”的池化后索引为2、输入向量“3”的池化后索引为8,而输入向量“4”的池化后索引为10。
[0075]
接着可以按照索引映射关系,根据输入向量的索引确定对应的结果向量的索引。每个结果向量是通过卷积核中的权值向量与输入向量的乘法运算得到的,因此索引映射关系指示了权值向量的位置和输入向量的索引与最终深度卷积运算结果中对应结果向量之间的关系,换言之,可以基于权值向量在卷积核中的位置以及输入向量的索引来确定与该权值向量相乘的向量结果的索引。
[0076]
在一些实施例中,上池化运算和/或深度卷积运算存在填补(padding)操作。例如,在基于点云数据的目标检测算法中,需要进行相同填补(same padding),也即通过填补,使得输入数据的形状与卷积运算后输出数据的形状相同。可以理解,在其他卷积运算的应用场景中,可能存在不同的填补规则。在本披露的一些实施例中,上池化层的填补为(1,0,1,0),也即上面和左边各加1,下面和右边不填补,深度卷积层的填补为0。
[0077]
当存在填补时,其对输入向量的索引会产生影响。再次参考图8,其中输入特征图810中灰色部分表示填补区域。从图中可以看出,初始输入数据中的任一数据点(x,y),其在填补后输入数据中的坐标变为(x+pad_left,y+pad_top),其中pad_left是左边填充量,pad_top是上部填充量。由此可知,可以通过简单的加法运算、根据填补规则来调整输入数据的索引。
[0078]
因此,在这些实施例中,在根据索引映射关系确定结果向量的索引之前,可以基于上池化层和深度卷积层的填补规则,调整输入向量的索引。本领域技术人员可以理解,索引调整处理也可以在索引映射之后或期间进行,只需能够考虑到填补规则带来的影响即可,本披露实施例在此方面没有限制。
[0079]
图10示例性示出了权值向量和输入向量与结果向量之间的索引映射关系。在此示例中已经考虑了填补规则,如灰色部分所示。图中1010、1020、1030和1040分别代表第1个权值向量a与对应的输入向量的乘积运算。图中箭头指示了各个乘积运算结果在卷积运算结果1050中的对应位置。
[0080]
具体地,1010指示的输入向量“1”(池化后的索引为(2,2))与权值向量a的乘积结果对应于4
×
4的卷积结果中的(2,2)位置,1020指示的输入向量“2”(池化后的索引为(2,4))与权值向量a的乘积结果对应于卷积结果中的(2,4)位置,1030指示的输入向量“3”(池化后的索引为(4,2))与权值向量a的乘积结果对应于卷积结果中的(4,2)位置,而1040指示的输入向量“4”(池化后的索引为(4,4))与权值向量a的乘积结果对应于卷积结果中的(4,4)位子。
[0081]
从图中可以看出,当输入向量与卷积核的第1个权值向量进行乘积运算时,其索引存在如下映射关系:假设输入向量的索引为(x,y),则其与第1个权值向量乘积运算的结果向量的索引也是(x,y)。
[0082]
类似地,可以推导出输入向量与其他权值向量相乘时,结果向量的索引与输入向量的索引的关系。例如,当输入向量与卷积核的第2个权值向量进行乘积运算时,其索引存在如下映射关系:假设输入向量的索引为(x,y),则其与第2个权值向量乘积运算的结果向量的索引为(x,y

1)。当输入向量与卷积核的第3个权值向量进行乘积运算时,其索引存在如下映射关系:假设输入向量的索引为(x,y),则其与第3个权值向量乘积运算的结果向量的索引为(x

1,y)。
[0083]
综上,每个输入向量会依次遍历2
×
2的卷积核,因此输入向量相对于卷积核中心点的偏移是固定的。根据这一特性,可以直接基于每个输入向量的索引,来确定与该输入向量关联的向量乘积结果的索引。也即,只需知晓输入向量的索引,即可确定该输入向量与所有权值向量相乘的乘积结果的索引。
[0084]
因此,根据输入向量的索引,基于上述固定的坐标偏移,可以依次求解出其遍历卷积核时对应的卷积核中心点的索引。继而将中心点的索引映射到输出点的索引即可确定输入向量产生的每个向量乘积结果的索引。
[0085]
此外,在一些实施例中,有些向量乘积结果可能会溢出卷积结果范围,属于无效结果。例如,池化索引为3时,也即输入向量位于池化窗口的右下角时,某些结果向量将超出卷积结果范围。对于这些情况,可以将超出卷积结果范围(也即输出特征图维度大小范围)的索引设置为预定值,例如

1,以便在重排处理中识别这些无效结果,不对其进行重排处理。
[0086]
在确定了各个结果向量的索引之后,可以按照结果向量的索引的顺序,对结果向量进行重排,以得到融合运算结果。
[0087]
例如,根据图10的索引映射关系,图9的930中四个结果向量的索引分别为(2,2)、(2,4)、(4,2)和(4,4),其相应地排列在最终融合运算结果970中的对应位置处。其他结果向量类似进行重排处理。
[0088]
然后,运算电路可以将融合运算结果970写回到片上存储电路,例如图3中的nram 331。最后,可以进一步从片上存储电路向片外存储电路输出该融合运算结果。
[0089]
上面结合附图详细描述了本披露实施例的上池化和深度卷积的融合运算过程。可以理解,在上述示例中,由于各个池化窗口内的池化索引一致,并且卷积核的大小与池化窗口相同,因此每个卷积输出点的感受野内最多只有一个输入向量,因此结果向量之间无需累加。当各个池化窗口内的池化索引不一致时,则每个卷积输出点的感受野内可能出现多个输入向量,此时,具有经索引映射后具有相同索引的结果向量之间需要进行向量的对位累加。其他运算与前面描述相同,此处不再赘述。
[0090]
本披露实施例还提供了用于执行神经网络模型的人工智能处理器,以及由该人工智能处理器实施的执行神经网络模型的方法。神经网络模型至少包括上池化层和深度卷积层。
[0091]
图11示例性示出了可以实施本披露实施例的人工智能处理器的示意性结构图。如图11所示,人工智能处理器1100包括控制电路1110、运算电路1120和片上存储电路1130。控制电路、运算电路和片上存储电路的作用和功能与图3中描述的控制模块、运算模块和存储模块类似,此处不再详述。
[0092]
在一些实施例中,控制电路1110可以配置用于控制从片外存储电路向片上存储电路1130加载神经网络模型的上池化层的输入数据以及深度卷积层的卷积核。运算电路1120可以用于针对输入数据和卷积核执行本披露实施例的上池化层和深度卷积层的融合运算,并将融合运算结果写回片上存储电路1130。控制电路1110可以进一步用于控制从片上存储电路1130向片外存储电路输出融合运算结果。
[0093]
在一些实施例中,运算电路1120可以包括乘法电路1122和重排电路1124。
[0094]
乘法电路1122可以用于将卷积核中深度方向上的各个权值向量分别与输入数据的深度方向上的输入向量执行对位乘法运算,得到多个深度方向上的结果向量。
[0095]
在一些实施例中,乘法电路1122可以包括多个向量乘法器1123。在运算时,运算电路1120可以将输入数据的深度方向上的各个输入向量分发给多个向量乘法器1123,例如,每个向量乘法器1123分配一个输入向量。运算电路1120还可以将卷积核中深度方向上的权值向量广播传输给多个向量乘法器1123,例如将权值向量a、权值向量b等依次广播给所有向量乘法器。此时,每个向量乘法器1123可以用于针对广播的权值向量和分发的输入向量执行对位乘法运算,得到结果向量。
[0096]
重排电路1124可以用于根据上池化层的池化索引,对乘法电路1122得到的多个结果向量进行重排,以得到融合运算结果。
[0097]
在一些实施例中,重排电路1124可以进一步用于:基于池化索引,确定各个输入向量的索引;按照索引映射关系,根据输入向量的索引确定对应的结果向量的索引;以及按照结果向量的索引的顺序,对结果向量进行重排,以得到融合运算结果。
[0098]
在一些实施例中,在根据索引映射关系确定结果向量的索引之前,重排电路可以基于上池化层和深度卷积层的填补规则,调整输入向量的索引。
[0099]
图12示出了根据本披露实施例的由人工智能处理器实施的执行神经网络模型的方法的示例性流程图。
[0100]
具体地,在步骤1210中,控制电路控制从片外存储电路向片上存储电路加载上池化层的输入数据以及深度卷积层的卷积核。
[0101]
接着,在步骤1220中,运算电路针对输入数据和卷积核执行上池化层和深度卷积层的融合运算,并将融合运算结果写回片上存储电路。运算电路的具体运算过程前面已经结合附图进行了详细描述,此处不再赘述。
[0102]
最后,在步骤1230中,控制电路进一步控制从片上存储电路向片外存储电路输出融合运算结果。
[0103]
本领域技术人员可以理解,前面结合附图描述的本披露实施例的与上池化层和深度卷积层的融合运算处理的描述可以同样应用于图11的人工智能处理器和图12的方法,因
此不再进行重复描述。
[0104]
本披露还提供了一种芯片,其可以包括前面结合附图描述的任一实施例的人工智能处理器。进一步地,本披露还提供了一种板卡,该板卡可以包括前述芯片。
[0105]
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、pc设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
[0106]
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
[0107]
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行拆分,而实际实现时也可以有另外的拆分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
[0108]
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
[0109]
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如中央处理器、gpu、fpga、dsp和asic等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(resistive random access memory,rram)、动态随机存取存储器(dynamic random access memory,dram)、静态随机存取存储器(static random access memory,sram)、增强动态随机存取存储器(enhanced dynamic random access memory,edram)、高带宽存储器(high bandwidth memory,hbm)、混合存储器立方体(hybrid memory cube,hmc)、rom和ram等。
[0110]
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本披露的方法及其核心思想;同时,对于本领域的一般技术人员,依据本披露的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本披露的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1