CN111401543A - 一种全片上存储的神经网络加速器及其实现方法 - Google Patents
一种全片上存储的神经网络加速器及其实现方法 Download PDFInfo
- Publication number
- CN111401543A CN111401543A CN202010512394.4A CN202010512394A CN111401543A CN 111401543 A CN111401543 A CN 111401543A CN 202010512394 A CN202010512394 A CN 202010512394A CN 111401543 A CN111401543 A CN 111401543A
- Authority
- CN
- China
- Prior art keywords
- layer
- neural network
- layers
- chip
- array
- 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.)
- Granted
Links
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/04—Architecture, e.g. interconnection topology
-
- 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
-
- 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/045—Combinations of networks
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Abstract
本发明提供一种全片上存储的神经网络加速器的实现方法,所述方法包括根据当前的神经网络模型,确定神经网络中输出特征图极小值所在的层;确定多层融合计算的层数,确定用于多层融合计算的PE个数,申请PE,并将多层融合计算的输出特征图存储在片上存储器,多层融合计算完成的层对应的PE被释放,待计算层重复前述操作,直至多层融合计算完整个网络的所有层。本发明还提供一种全片上存储的神经网络加速器,包括控制器、加载模块、计算阵列、后处理模块、存储模块和片上缓冲器。采用本发明实现的全片上存储神经网络加速器功耗更小、面积更小、能效比更高,易扩展、并且可以保证实时性。
Description
技术领域
本发明涉及神经网络的应用领域,并且更具体地,涉及一种全片上存储的神经网络加速器及其实现方法。
背景技术
神经网络的应用领域中,在移动端硬件上实现神经网络(Neural Network,NN)加速,追求功耗更低,面积更小,在满足实时处理的前提下,尽可能提高能效比。
论文1“UNPU: An Energy-Efficient Deep Neural Network Accelerator WithFully Variable Weight Bit Precision”DOI: 10.1109/JSSC.2018.2865489,论文2“AnEnergy-Efficient Precision-Scalable ConvNet Processor in 40-nm CMOS”DOI:10.1109/JSSC.2016.2636225,论文3“Eyeriss An Energy-Efficient ReconfigurableAccelerator for Deep Convo-lutional Neural Networks”DOI: 10.1109/JSSC.2016.2616357,论文4“UniWiG: Unified Winograd-GEMM Architecture for Accelerating CNNon FPGAs ”DOI: 10.1109/VLSID.2019.00055,均公开了采用单层方案的NN加速器。单层方案是一层一层依次计算神经网络,例如第一层计算的结果先存到片外存储器中,第二层计算时再把第一层的结果从片外搬移进来。例如论文3的加速器中,图像数据和权重(weight)从动态随机存取存储器(Dynamic Random Access Memory,DRAM)读取到缓冲区,再传输到计算阵列中,从而实现内存流量和计算的重叠。计算阵列计算图像数据和权重之间的卷积,生成多个中间加法运算结果,该多个中间加法运算结果从阵列返回到缓冲区,将不作为下一层计算输入的中间加法运算结果进行整形和压缩到DRAM,而剩余的作为下一层计算输入的中间加法运算结果保存在缓冲区中,在下一层计算时将它们恢复到阵列,可以实现对不完全适合阵列的图像和权重尺寸的可配置支持。采用单层方案的神经网络加速器主要的不足是:(1)从片外双倍速率SDRAM (Double Data Rate SDRAM,简称DDR)读取数据功耗最大,而单层方案需要反复搬移中间临时数据,导致动态功耗很大;(2)从片外DDR加载数据需要高速接口,导致面积和成本增加。
论文5“Fused-Layer CNN Accelerators”DOI: 10.1109/MICRO.2016.7783 725,论文6“Exploring Heterogeneous Algorithms for Accelerating Deep ConvolutionalNeural Networks on FPGAs”DOI: 10.1145/3061639.3062244,论文7“Breaking 10.1109/JETCAS.2019.2905361,均公开了采用多层融合方案的NN加速器。现有技术的多层融合方案为一层有部分运算结果则下一层可以利用部分运算结果开始计算,几乎都需存一些层的运算结果在片外存储器。现有的多层融合方案存在的缺陷主要包括:(1)仍然需要存储一些层的运算结果到片外存储器,因此还需要高速接口,功耗仍然较大;(2)如果采用全片上存储,则需要大量的存储器,增加了芯片面积;(3)采用金字塔(pyramid)结构的多层融合(pipeline)方案存在一定的限制,对阵列的利用率没有达到最优,仅针对单一网络选取了次优[M,N]的大小(这里的M和N是指阵列运算单元的输入输出大小);(4)大多数都是基于现场可编程逻辑门阵列(Field Specific High-Resolution CNN Bandwidth Barriers WithEnhanced Depth-First Execution” DOI: IC,ASIC)上不具备可行性。 ProgrammableGate Array,FPGA)来描述,针对不同网络需要定制化,在专用集成电路(Application
综上所述,现有技术分别或同时存在功耗大、面积大、不能保证实时性、不易扩展、乘累加器(Multiplier And Accumulator,MAC)阵列的硬件利用率和计算效率较低等问题。
因此,在神经网络的应用领域,亟需一种功耗更小、面积更小、能效比更高,满足实时处理且易扩展的全片上存储神经网络加速器及其实现方法。
发明内容
有鉴于此,本发明在于提供一种功耗更小、面积更小、能效比更高,满足实时处理且易扩展的全片上存储的神经网络加速器及其实现方法。为实现上述目的,本发明采用如下技术方案:
一种全片上存储的神经网络加速器的实现方法,所述方法包括以下步骤:步骤1,根据当前的神经网络模型,确定神经网络中输出特征图(feature map)极小值所在的层;步骤2,在阵列计算单元最大程度上能支持的多层融合计算的层中,如果最后一层的输出特征图的大小不超过片上存储容量,则以最后一层作为多层融合计算的最后一层;如果最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层;确定多层融合计算的层数;步骤3,根据多层融合计算的层数,确定用于多层融合计算的阵列计算单元个数,申请阵列计算单元;步骤4,所述多层融合计算的最后一层的输出特征图存储在片上存储器;步骤5,根据步骤2确定多层融合的层数,根据步骤3申请阵列计算单元,读取步骤4存储在片上存储器的特征图并进行多层融合计算,根据步骤4将多层融合计算的最后一层的输出特征图存储到片上存储器,多层融合计算完成的层对应的阵列计算单元被释放,重复上述过程,直至多层融合计算完整个神经网络的所有层。
在该方案中采用多层融合计算方案,多层融合计算不必存储层与层的中间结果就可以开始下一层的计算,节省了存储中间结果和读取下一层计算所需中间结果的功耗。步骤2是为了控制多层融合计算的最后一层的输出特征图不会过大,以较小的片上存储容量就可存储多层融合计算的最后一层的输出特征图,从而实现全片上存储,有效减小NN加速器的功耗和芯片的面积。实现全片上存储即意味着无需反复搬移数据,那么搬移数据所需的高速接口也就可以省略,减少了高速接口所需的额外功耗和成本。除此之外,多层融合计算并没有因为减少外围高速接口而需要暂停或者延时等操作,而本发明的全片上存储方法也不会影响计算进程以致增加运算时间,本发明仍然保证数据处理的实时性。
优选地,多层融合计算的最后一层的输出特征图大小不超过片上存储容量。
优选地,未用于多层融合计算或者被释放的阵列计算单元,可用于存储待计算层需要预加载的权重。
优选地,神经网络输出特征图在预定层出现极小值。
优选地,神经网络中输出特征图极小值所在的层相间的层数是相等的。
优选地,以MobileNet-YOLOv3为神经网络模型,神经网络中输出特征图极小值所在的层相间的层数是三层。
优选地,神经网络中输出特征图极小值所在的层相间的层数是不相等的。
本发明还提供一种全片上存储神经网络加速器,包括;控制器,向加载(load)模块、计算阵列、后处理模块和存储(store)模块发送控制指令;加载模块,根据控制指令从片上缓冲器加载特征图和权重到计算阵列;计算阵列,由多个阵列计算单元组成,所述计算阵列根据控制指令接收从加载模块输出的特征图和权重,将运算结果输出到后处理模块或者存储 模块;后处理模块,根据控制指令接收运算结果,进行后处理并将处理结果输出给存储模块;存储模块,根据控制指令将输出特征图存储到片上缓冲器,所述输出特征图是运算结果或处理结果;所述输出特征图的大小不超过片上缓冲器的存储容量;片上缓冲器,存储特征图;当再次确定多层融合计算的层数和阵列计算单元个数后,申请阵列计算单元,加载模块根据控制器下发的控制指令读取片上缓冲器中的输出特征图和权重到计算阵列,存储模块根据控制器下发的控制指令将计算完的输出特征图存储到片上缓冲器,释放多层融合计算完成的层对应的阵列计算单元,重复上述过程,直至多层融合计算完整个神经网络的所有层,输出最终结果。
本发明提供的全片上存储的神经网络加速器及其实现方法,是基于有限的阵列计算单元和一定的片上存储容量,同时兼顾多方面的因素。在阵列计算单元有限的情况下,采用滚动多层融合(roll-pipeline)的方式完成所有层的计算,阵列利用率达到最优。同时在阵列计算单元最大程度上能支持的多层融合计算的层中,当最后一层的输出特征图的大小超过片上存储容量时,以输出特征图极小值所在的层作为多层融合计算的最后一层,将多层融合计算的最后一层的输出特征图存储在片上存储器,实现全片上存储从而减小功耗又不增大芯片的面积。除此之外,本发明针对不同网络都可以做到全局最优,对高算力要求,更容易扩展。
附图说明
图1为全片上存储的神经网络加速器的实现方法的流程示意图;
图2为MobileNet-YOLOv3模型的输出特征图的大小分布图;
图3为阵列计算单元多层融合计算完整个网络的所有层的示意图;
图4为全片上存储的神经网络加速器的结构示意图。
主要元件符号说明。
具体实施方式
下文与本发明原理的附图一起对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
以下结合说明书附图详细描述本发明,本发明中的方法步骤只是为了方便描述每个独立的操作,并不是限定每个操作的顺序,在一些实施例中,方法步骤的顺序可以调整,或者可以增加其他方法步骤。
请参见图1,图1为全片上存储的神经网络加速器的实现方法的流程示意图。
本发明提出一种全片上存储的神经网络加速器的实现方法,所述方法包括101,根据当前的神经网络模型,确定神经网络中输出特征图极小值所在的层。在神经网络的每个卷积层,数据以三维形式存在,其中每一个三维图片称为一个特征图。层与层之间会有若干个卷积核(kernel),神经网络其中一层的所有特征图跟每个卷积核做卷积,产生得到这一层的输出特征图。因为在后续步骤中,需要根据当前的神经网络模型中输出特征图极小值所在的层,确定多层融合(pipeline)计算的层。如图2为MobileNet-YOLOv3模型的输出特征图的大小分布图,横轴表示层的序号(layer NO.),纵轴表示输出特征图的大小(单位:Mb)。从图2中可以发现,MobileNet-YOLOv3模型的输出特征图的大小分布图是一条波动的曲线,每3层输出特征图的大小就会降低,图2中圈出的层是MobileNet-YOLOv3模型中输出特征图极小值所在的层的其中四层。本发明中神经网络的输出特征图极小值所在的层,是指输出特征图的大小在神经网络的输出特征图的大小分布图中处于波谷的层。常用的神经网络模型还包括AlexNet、VGGNet、ResNet和InceptionNet等。例如,当前的神经网络模型是VGGNet网络,那么在开始计算前要确定VGGNet模型的输出特征图极小值所在的层,据此进行后续操作,动态分配计算资源。应当注意,在各种神经网络模型中,输出特征图的大小分布图是一个波动的曲线这一特点普遍存在,即神经网络输出特征图在预定层出现极小值。不同的神经网络模型出现极小值所跨层数不同,一些神经网络模型的输出特征图极小值所在的层相间的层数是相等的,比如MobileNet-YOLOv3的输出特征图极小值所在的层相间的层数是三层;当然也有一些神经网络模型的输出特征图极小值所在的层相间的层数是不相等的。
102,确定多层融合计算的层数,具体方法为在阵列计算单元(ProcessingElement,PE)在最大程度上能支持的多层融合计算的层中,如果最后一层的输出特征图的大小不超过片上存储容量,则以最后一层作为多层融合计算的最后一层;如果最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层。所述PE是神经网络的基本计算单元,所述多层融合计算是神经网络中的其中一层开始计算出部分结果,则其下一层就可以利用部分结果开始计算,即PE同时计算神经网络中的多层,不必等待计算出一层的最终结果再开始进行下一层的计算。采用多层融合计算可以省略中间数据的搬移,减小NN加速器的功耗。在PE最大程度上能支持的多层融合计算的层中,如果最后一层的输出特征图的大小不超过片上存储容量,则以最后一层作为多层融合计算的最后一层;如果最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层。这样,在最后一层的输出特征图的大小超过片上存储容量时,可以利用神经网络输出特征图在预定层出现极小值这一特点实现全片上存储。应当注意,以输出特征图极小值所在的层作为多层融合计算的最后一层还应考虑MAC阵列的硬件利用率,即应当选择可使MAC阵列的硬件利用率达到最高的输出特征图极小值所在的层作为多层融合计算的最后一层。观察图2,假设片上存储器(memory)的容量为3Mb,如果PE最大程度上能支持第1至4层的多层融合计算,但是第4层输出特征图的大小约为19Mb,超过片上存储容量,因此多层融合计算第1至3层,将第3层的输出特征图存储在片上存储器,那么片上存储器的存储容量大小至少是3Mb。如果PE最大程度上能支持第12至17层的多层融合计算,第17层输出特征图的大小约为2.5Mb,没有超过片上存储容量,因此多层融合计算第12至17层,将第17层的输出特征图存储在片上存储器。MobileNet-YOLOv3的输出特征图的大小每3层就会降低,出现输出特征图极小值,利用这个特点实现全片上存储,片上存储容量存储器和整个芯片的面积都不用太大,并且功耗也更小。应当理解,每一层计算所需PE的数量不一样,当其中一层计算所需的PE很多,那么PE支持多层融合计算的最大层数就会减小,所以多层融合计算的层数是变化的。
103,确定用于多层融合计算的PE个数,具体方法为根据多层融合计算的层数,申请PE。依照确定好的多层融合计算的层数,申请相应的PE,并不是所有的PE都用于多层融合计算,可能会有部分PE处于空闲状态。进一步地,为了避免计算资源的浪费,处于空闲状态的PE可以用于存储待计算层需要预加载的权重,这样还可以降低带宽的要求,提高MAC阵列的硬件利用率和计算效率。如图3所示,纵轴表示时间,横轴表示n个PE的状态变化,t0至t2时刻进行第0次层融合的运算,即神经网络中的多层进行多层融合计算。t0时刻,大部分PE处于运算状态,小部分PE处于空闲状态,这些处于空闲状态的PE可以存储待计算层需要预加载的权重;t1时刻,小部分在t0时刻处于运算状态的PE运算完毕后处于释放状态,这些PE也可存储待计算层需要预加载的权重,其他PE仍保持t0时刻的状态;t2时刻,t1时刻处于运算状态的PE都运算完毕且处于释放状态,这些PE又立刻存储待计算层需要预加载的权重,等待进行第1次层融合的运算。t3时刻,开始第1次层融合的运算,在第0次层融合的运算中保持空闲状态的PE转换为运算状态,t2时刻处于释放状态的大部分PE也转换为运算状态,小部分转换为空闲状态且在第1次层融合的运算过程中始终保持空闲状态。从图3可知:PE的状态由确定多层融合计算的层数所需的PE个数所决定。
104,多层融合计算的最后一层的输出特征图存储在片上存储器。应当注意,多层融合计算的最后一层的输出特征图大小不超过片上存储容量,否则无法实现全片上存储,输出特征图数据必须向存储到片外DDR搬移,增加NN加速器的功耗。举例而言,某种网络的输出特征图在第十层才出现一个不超过片上存储容量的极小值,理想情况下,PE可多层融合计算这十层,否则可能需要增加PE或者片上存储器。
虽然在现有的技术中也有多层融合的方案,但是它们并没有利用神经网络输出特征图的大小是波动的这一特点,大多数方案中多层融合计算的结果仍然需要向存储到片外DDR,下一次计算时再搬移读取到片内参与计算。如果采用全片上存储,需要增加片上存储器,但如果多层融合计算的结果较大,甚至处于峰值,片上存储器所占的面积就会很大,导致芯片的面积也增大。而本发明在PE最大程度上能支持多层融合计算的层中,如果最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层,使用较小的片上存储容量就可以实现全片上存储,NN加速器的功耗更小,同时可以保证芯片面积较小,可以应用在各种移动端设备。另外,本发明的全片上存储的方法,无须额外的用于传输中间数据的高速接口,进一步减小功耗和额外的成本。特别地,所有计算并没有因为减少外围高速接口而需要暂停或者延时等操作,而本发明的方法也不会影响计算进程以致增加计算时间,仍然保证数据处理的实时性。
105,多层融合计算完成的层对应的PE被释放;此操作可以在初次多层融合计算时,输出特征图存储到片上存储器后立即执行;或者第2次多层融合计算申请PE时执行此操作;或者其它时刻。再次说明,本发明的方法步骤的排列只是为了阐明具体操作,并不是规定操作的步骤顺序,各个步骤的操作顺序依据具体情况来决定。初次多层融合计算前的PE都处于空闲状态,确定用于多层融合计算的PE后,仍有部分PE处于空闲状态可以存储待计算层需要预加载的权重;106,是否多层融合计算完整个神经网络的所有层;如果没有多层融合计算完整个神经网络的所有层,则进行107,读取104中存储的特征图,待计算层进行多层融合计算,即再次根据102 确定多层融合计算的层数,根据103申请PE并进行多层融合计算,根据104将多层融合计算的最后一层输出特征图存储到片上存储器,并再次判断是否多层融合计算完整个神经网络的所有层;如果已经多层融合计算完整个神经网络的所有层,则进行108,输出最终结果。所述多层融合计算完成的层,是指这层的特征图均已计算完毕。举例而言,假设t0时刻第1层与第2层进行多层融合计算,t1时刻第1层多层融合计算完成,其对应的PE被释放,可用于第3、4层的计算或者存储待计算层需要预加载的权重,第2、3和4层被包括在第2次进行多层融合计算的层数中,此时第4层是输出特征图极小值所在的层,所以第4层作为多层融合计算的最后一层,并将第4层的输出特征图存储在片上存储器。本发明中,在PE最大程度上能支持的多层融合计算的层中,如果最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层,确定多层融合计算的层;根据多层融合计算的层,确定用于多层融合计算的PE,申请PE,确定用于多层融合计算的PE,处于空闲和释放状态的PE用于存储待计算层需要预加载的权重,这种阵列资源动态分配的多层融合称为滚动多层融合(roll-pipeline)。如图3,处于运算状态的PE根据进行多层融合计算的层数的变化不断调配,处于空闲状态和运算完毕处于释放状态的PE可存储待计算层需要预加载的权重,等候待计算层多层融合计算的进行,上述过程在图3中看就如同处于运算状态的PE从左至右滚动,直至多层融合计算完整个网络的所有层。现有技术的基于pyramid结构的多层融合计算存在一定限制,对阵列的利用率没有达到最优。因为现有技术大都基于可编程FPGA来描述,仅针对单一网络选取了次优[M,N]的大小(M、N分别是神经网络的输入和输出),阵列利用率也许在某一网络里是最优的,但是在其他网络中的阵列利用率较低,而且针对不同网络需要定制化,因此在集成电路ASIC上不具备可行性。本发明采用滚动多层融合的方式完成所有层的多层融合计算,对阵列资源动态分配,阵列利用率达到最优,并且针对不同网络都可以做到全局最优。针对高算力要求,采用本发明实现的全片上存储的NN加速器更容易扩展。
综合而言,本发明基于有限的PE,多层融合计算尽可能多的层,同时在PE最大程度上能支持多层融合计算的层中,当最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层,并将多层融合计算的最后一层的输出特征图存储在片上存储器。本发明在移动端硬件上实现NN加速,在满足实时处理的前提下,功耗更低、面积更小、能效比更高,并且提高了MAC阵列的硬件利用率和计算效率。同时针对高算力需求,采用本发明的加速器也容易扩展。
请参见图4,图4为全片上存储的神经网络加速器的结构示意图。
本发明还提出一种全片上存储的神经网络加速器40,包括:控制器401,向加载模块402、计算阵列403、后处理模块404和存储模块405发送控制指令;加载模块402,根据控制指令从片上缓冲器406加载特征图和权重到计算阵列403;计算阵列403,由多个PE组成,所述计算阵列403根据控制指令接收从加载模块402输出的特征图和权重,将运算结果输出到后处理模块404或者存储模块405;后处理模块404,根据控制指令接收运算结果,进行后处理(post processing)并将处理结果输出到存储模块405,后处理包括最大/平均池化(max/avg-poling)、上采样(up-sampling)等; 存储模块405,根据控制指令将输出特征图存储到片上缓冲器(buffer)406,所述输出特征图是运算结果或者处理结果;所述输出特征图的大小不超过片上缓冲器406的存储容量;片上缓冲器406,存储特征图;当再次确定多层融合计算的层数和PE的个数后,读取片上缓冲器406中的数据到加载模块402,申请PE,加载模块402根据控制器下发的控制指令读取片上缓冲器406中的输出特征图和权重到计算阵列,存储模块405根据控制器下发的控制指令将计算完的输出特征图存储到片上缓冲器406,释放多层融合计算完成的层对应的PE,重复上述过程,直至多层融合计算完整个神经网络的所有层,输出最终结果。
值得注意的是,上述实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围,不能理解为特定的器件。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种全片上存储的神经网络加速器的实现方法,其特征在于,所述方法包括:
步骤1,根据当前的神经网络模型,确定神经网络中输出特征图极小值所在的层;
步骤2,在阵列计算单元最大程度上能支持的多层融合计算的层中,如果最后一层的输出特征图的大小不超过片上存储容量,则以最后一层作为多层融合计算的最后一层;如果最后一层的输出特征图的大小超过片上存储容量,则以输出特征图极小值所在的层作为多层融合计算的最后一层;确定多层融合计算的层数;
步骤3,根据多层融合计算的层数,确定用于多层融合计算的阵列计算单元个数,申请阵列计算单元;
步骤4,所述多层融合计算的最后一层的输出特征图存储在片上存储器;
步骤5,根据步骤2确定多层融合的层数,根据步骤3申请阵列计算单元,读取步骤4存储在片上存储器的特征图并进行多层融合计算,根据步骤4将多层融合计算的最后一层的输出特征图存储到片上存储器,多层融合计算完成的层对应的阵列计算单元被释放,重复上述过程,直至多层融合计算完整个神经网络的所有层。
2.如权利要求1所述的方法,其特征在于,多层融合计算的最后一层的输出特征图大小不超过片上存储容量。
3.如权利要求2所述的方法,其特征在于,未用于多层融合计算或者被释放的阵列计算单元,可用于存储待计算层需要预加载的权重。
4.如权利要求3所述的方法,其特征在于,神经网络输出特征图在预定层出现极小值。
5.如权利要求4所述的方法,其特征在于,神经网络中输出特征图极小值所在的层相间隔的层数是相等的。
6.如权利要求5所述的方法,其特征在于,以MobileNet-YOLOv3为神经网络模型,神经网络中输出特征图极小值所在的层相间隔的层数是三层。
7.如权利要求4所述的方法,其特征在于,神经网络中输出特征图极小值所在的层相间隔的层数是不相等的。
8.一种全片上存储的神经网络加速器,其特征在于,包括:
控制器,向加载模块、计算阵列、后处理模块和存储模块发送控制指令;
加载模块,根据控制指令从片上缓冲器加载特征图和权重到计算阵列;
计算阵列,包括多个阵列计算单元,所述计算阵列根据控制指令接收从加载模块输出的特征图和权重,将运算结果输出到后处理模块或者存储模块;
后处理模块,根据控制指令接收运算结果,进行后处理并将处理结果输出给存储模块;
存储模块,根据控制指令将输出特征图存储到片上缓冲器,所述输出特征图是运算结果或处理结果;所述输出特征图的大小不超过片上缓冲器的存储容量;
片上缓冲器,存储特征图;当再次确定多层融合计算的层数和阵列计算单元个数后,申请阵列计算单元,加载模块根据控制器下发的控制指令读取片上缓冲器中的输出特征图和权重到计算阵列,存储模块根据控制器下发的控制指令将计算完的输出特征图存储到片上缓冲器,释放多层融合计算完成的层对应的阵列计算单元,重复上述过程,直至多层融合计算完整个神经网络的所有层,输出最终结果。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010512394.4A CN111401543B (zh) | 2020-06-08 | 2020-06-08 | 一种全片上存储的神经网络加速器及其实现方法 |
PCT/CN2021/079003 WO2021248941A1 (zh) | 2020-06-08 | 2021-03-04 | 一种全片上存储的神经网络加速器及其实现方法 |
US17/442,982 US20230089754A1 (en) | 2020-06-08 | 2021-03-04 | Neural network accelerator using only on-chip memory and method for implementing neural network accelerator using only on-chip memory |
EP21769328.2A EP3951662A4 (en) | 2020-06-08 | 2021-03-04 | All-on-chip storage neural network accelerator and implementation method therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010512394.4A CN111401543B (zh) | 2020-06-08 | 2020-06-08 | 一种全片上存储的神经网络加速器及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111401543A true CN111401543A (zh) | 2020-07-10 |
CN111401543B CN111401543B (zh) | 2020-11-10 |
Family
ID=71430084
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010512394.4A Active CN111401543B (zh) | 2020-06-08 | 2020-06-08 | 一种全片上存储的神经网络加速器及其实现方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230089754A1 (zh) |
EP (1) | EP3951662A4 (zh) |
CN (1) | CN111401543B (zh) |
WO (1) | WO2021248941A1 (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112926386A (zh) * | 2021-01-21 | 2021-06-08 | 徐一帆 | 一种水文地质中含水层与隔水层的识别方法 |
WO2021248941A1 (zh) * | 2020-06-08 | 2021-12-16 | 深圳市九天睿芯科技有限公司 | 一种全片上存储的神经网络加速器及其实现方法 |
CN114662660A (zh) * | 2022-03-14 | 2022-06-24 | 昆山市工业技术研究院有限责任公司 | 一种cnn加速器数据存取方法及系统 |
WO2023097424A1 (en) * | 2021-11-30 | 2023-06-08 | Intel Corporation | Method and apparatus for fusing layers of different models |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845631A (zh) * | 2016-12-26 | 2017-06-13 | 上海寒武纪信息科技有限公司 | 一种流执行方法及装置 |
CN107085562A (zh) * | 2017-03-23 | 2017-08-22 | 中国科学院计算技术研究所 | 一种基于高效复用数据流的神经网络处理器及设计方法 |
CN107204010A (zh) * | 2017-04-28 | 2017-09-26 | 中国科学院计算技术研究所 | 一种单目图像深度估计方法与系统 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
CN107665365A (zh) * | 2016-07-27 | 2018-02-06 | 三星电子株式会社 | 卷积神经网络中的加速器及其操作方法 |
US20190079801A1 (en) * | 2017-09-14 | 2019-03-14 | Electronics And Telecommunications Research Institute | Neural network accelerator including bidirectional processing element array |
CN109492761A (zh) * | 2018-10-30 | 2019-03-19 | 深圳灵图慧视科技有限公司 | 实现神经网络的fpga加速装置、方法和系统 |
CN110390384A (zh) * | 2019-06-25 | 2019-10-29 | 东南大学 | 一种可配置的通用卷积神经网络加速器 |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
CN110555512A (zh) * | 2019-07-30 | 2019-12-10 | 北京航空航天大学 | 一种二值卷积神经网络数据重用方法及装置 |
CN110782022A (zh) * | 2019-10-31 | 2020-02-11 | 福州大学 | 一种面向可编程逻辑器件移动终端的小型神经网络的实现方法 |
CN110852428A (zh) * | 2019-09-08 | 2020-02-28 | 天津大学 | 基于fpga的神经网络加速方法和加速器 |
CN110991631A (zh) * | 2019-11-28 | 2020-04-10 | 福州大学 | 一种基于fpga的神经网络加速系统 |
US20200143201A1 (en) * | 2018-02-26 | 2020-05-07 | Capital One Services, Llc | Dual stage neural network pipeline systems and methods |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110321064A (zh) * | 2018-03-30 | 2019-10-11 | 北京深鉴智能科技有限公司 | 用于神经网络的计算平台实现方法及系统 |
CN111401543B (zh) * | 2020-06-08 | 2020-11-10 | 深圳市九天睿芯科技有限公司 | 一种全片上存储的神经网络加速器及其实现方法 |
-
2020
- 2020-06-08 CN CN202010512394.4A patent/CN111401543B/zh active Active
-
2021
- 2021-03-04 WO PCT/CN2021/079003 patent/WO2021248941A1/zh unknown
- 2021-03-04 US US17/442,982 patent/US20230089754A1/en active Pending
- 2021-03-04 EP EP21769328.2A patent/EP3951662A4/en not_active Withdrawn
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107665365A (zh) * | 2016-07-27 | 2018-02-06 | 三星电子株式会社 | 卷积神经网络中的加速器及其操作方法 |
CN106845631A (zh) * | 2016-12-26 | 2017-06-13 | 上海寒武纪信息科技有限公司 | 一种流执行方法及装置 |
CN107085562A (zh) * | 2017-03-23 | 2017-08-22 | 中国科学院计算技术研究所 | 一种基于高效复用数据流的神经网络处理器及设计方法 |
CN107204010A (zh) * | 2017-04-28 | 2017-09-26 | 中国科学院计算技术研究所 | 一种单目图像深度估计方法与系统 |
CN107578095A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 神经网络计算装置及包含该计算装置的处理器 |
US20190079801A1 (en) * | 2017-09-14 | 2019-03-14 | Electronics And Telecommunications Research Institute | Neural network accelerator including bidirectional processing element array |
US20200143201A1 (en) * | 2018-02-26 | 2020-05-07 | Capital One Services, Llc | Dual stage neural network pipeline systems and methods |
CN109492761A (zh) * | 2018-10-30 | 2019-03-19 | 深圳灵图慧视科技有限公司 | 实现神经网络的fpga加速装置、方法和系统 |
CN110390384A (zh) * | 2019-06-25 | 2019-10-29 | 东南大学 | 一种可配置的通用卷积神经网络加速器 |
CN110458279A (zh) * | 2019-07-15 | 2019-11-15 | 武汉魅瞳科技有限公司 | 一种基于fpga的二值神经网络加速方法及系统 |
CN110555512A (zh) * | 2019-07-30 | 2019-12-10 | 北京航空航天大学 | 一种二值卷积神经网络数据重用方法及装置 |
CN110852428A (zh) * | 2019-09-08 | 2020-02-28 | 天津大学 | 基于fpga的神经网络加速方法和加速器 |
CN110782022A (zh) * | 2019-10-31 | 2020-02-11 | 福州大学 | 一种面向可编程逻辑器件移动终端的小型神经网络的实现方法 |
CN110991631A (zh) * | 2019-11-28 | 2020-04-10 | 福州大学 | 一种基于fpga的神经网络加速系统 |
Non-Patent Citations (2)
Title |
---|
张永梅等: "基于卷积特征深度融合的海上目标跟踪算法", 《计算机工程与设计》 * |
石学超等: "基于多层特征融合可调监督函数卷积神经网络的人脸性别识别", 《计算机应用研究》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021248941A1 (zh) * | 2020-06-08 | 2021-12-16 | 深圳市九天睿芯科技有限公司 | 一种全片上存储的神经网络加速器及其实现方法 |
CN112926386A (zh) * | 2021-01-21 | 2021-06-08 | 徐一帆 | 一种水文地质中含水层与隔水层的识别方法 |
CN112926386B (zh) * | 2021-01-21 | 2022-11-01 | 徐一帆 | 一种水文地质中含水层与隔水层的识别方法 |
WO2023097424A1 (en) * | 2021-11-30 | 2023-06-08 | Intel Corporation | Method and apparatus for fusing layers of different models |
CN114662660A (zh) * | 2022-03-14 | 2022-06-24 | 昆山市工业技术研究院有限责任公司 | 一种cnn加速器数据存取方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
EP3951662A4 (en) | 2022-06-29 |
US20230089754A1 (en) | 2023-03-23 |
CN111401543B (zh) | 2020-11-10 |
EP3951662A1 (en) | 2022-02-09 |
WO2021248941A1 (zh) | 2021-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111401543B (zh) | 一种全片上存储的神经网络加速器及其实现方法 | |
KR102346636B1 (ko) | 신경 네트워크 프로세싱을 스케줄링하기 | |
US20200257972A1 (en) | Method and apparatus for determining memory requirement in a network | |
CN111445012B (zh) | 一种基于fpga的分组卷积硬件加速器及其方法 | |
CN110991632B (zh) | 一种基于fpga的异构神经网络计算加速器设计方法 | |
EP3276539A1 (en) | Accelerator in convolutional neural network and method for operating the same | |
US20180197084A1 (en) | Convolutional neural network system having binary parameter and operation method thereof | |
CN111723900B (zh) | 一种基于众核处理器的神经网络的映射方法及计算设备 | |
CN109165728B (zh) | 一种卷积神经网络的基本计算单元及计算方法 | |
CN110222818B (zh) | 一种用于卷积神经网络数据存储的多bank行列交织读写方法 | |
CN111199275B (zh) | 用于神经网络的片上系统 | |
EP3832649A1 (en) | Hardware implementation of a neural network | |
US11704535B1 (en) | Hardware architecture for a neural network accelerator | |
CN115964181B (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN116304212A (zh) | 一种数据处理系统、方法、设备及存储介质 | |
CN115860079A (zh) | 神经网络加速装置、方法、芯片、电子设备及存储介质 | |
EP3832650A1 (en) | Hardware implementation of a neural network | |
CN115204364A (zh) | 一种缓存空间动态分配的卷积神经网络硬件加速装置 | |
WO2022020386A1 (en) | Elastic bottleneck architectures for variable convolution operations | |
US11016704B2 (en) | Semiconductor system including various memory devices capable of processing data | |
CN114004351A (zh) | 一种卷积神经网络硬件加速平台 | |
KR20220049325A (ko) | 가속기 및 이를 포함한 전자 장치 | |
CN116702852B (zh) | 基于多阶段事件驱动的动态重构神经网络加速电路及系统 | |
CN117291240B (zh) | 卷积神经网络加速器及电子设备 | |
US11442643B2 (en) | System and method for efficiently converting low-locality data into high-locality data |
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 |