CN110490302A - 一种神经网络编译优化方法、装置以及相关产品 - Google Patents
一种神经网络编译优化方法、装置以及相关产品 Download PDFInfo
- Publication number
- CN110490302A CN110490302A CN201910741036.8A CN201910741036A CN110490302A CN 110490302 A CN110490302 A CN 110490302A CN 201910741036 A CN201910741036 A CN 201910741036A CN 110490302 A CN110490302 A CN 110490302A
- Authority
- CN
- China
- Prior art keywords
- layer
- computation
- fusion calculation
- piece
- input data
- 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
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
- G06N3/045—Combinations of networks
-
- 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)
- 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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请提供一种神经网络编译优化方法、装置及相关产品,所述方法用于对神经网络的编译进行优化。本申请提供的技术方案具有加速神经网络的计算,减少指令数量的优点。
Description
技术领域
本申请涉及信息处理技术领域,具体涉及一种神经网络编译优化方法、装置以及相关产品。
背景技术
目前,人工神经网络是所有智能方法中最常见的计算模型之一。为了满足神经网络日益增长的规模以及系统能耗的限制,出现了大量的神经网络加速器。
然而,由于专门的结构,神经网络加速器上的编程不同于常规的处理器。为了改进性能,有必要采用各种手段来优化神经网络加速器的编译。
发明内容
本申请实施例提供了一种神经网络编译优化方法、装置及相关产品,可减少片上片外输入/输出(I/O)操作的数量,加快编译速率,减少操作指令并减少片外存储空间的占用。
第一方面,提供一种神经网络量化方法,包括:
获取原始神经网络的目标量化层的权值和输入数据;其中,所述目标量化层为所述原始神经网络的计算层中的至少一层;利用所述原始神经网络的目标量化层的权值确定对应层的权值的量化参数;利用所述原始神经网络的目标量化层的输入数据确定对应层的输入数据的量化参数;其中,所述目标量化层的权值和输入数据均采用绝对值最大值不失真原则;根据所述权值的量化参数和所述输入数据的量化参数对所述原始神经网络的目标量化层进行量化。
第二方面,提供一种神经网络量化装置,所述装置包括:
数据读取单元,用于获取原始神经网络的目标量化层的权值和输入数据;其中,所述目标量化层为所述原始神经网络的计算层中的至少一层;
量化参数确定单元,用于利用所述原始神经网络的目标量化层的权值确定对应层的权值的量化参数;利用所述原始神经网络的目标量化层的输入数据确定对应层的输入数据的量化参数;其中,所述目标量化层的权值和输入数据均采用绝对值最大值不失真原则;
量化单元,用于根据所述权值的量化参数和所述输入数据的量化参数对所述原始神经网络的目标量化层进行量化。
第三方面,提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面的方法。
第四方面,提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行第一方面提供的方法。
第五方面,提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行第一方面提供的方法。
本申请提供的技术方案在神经网络编译的过程中,当需要从片外加载数据时,首先根据融合计算层的集合,获取所需要的所有输入数据,将其加载至片上。融合计算层的集合的各个融合计算层在计算过程中,不需要频繁从片外加载输入数据以及将输出结果存储至片外,从而,减少片上片外输入/输出(I/O)操作的数量、减少操作指令、加快编译速率并减少片外存储空间的占用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种神经网络构架的结构示意图。
图2提供了根据现有技术的神经网络计算层结构中的各个计算层输入输出操作的示意图。
图3是根据本申请实施例的神经网络编译优化方法的流程图。
图4是根据本申请实施例的神经网络计算层结构的示意图。
图5是根据本申请实施例的神经网络编译优化装置的示意图。
图6是本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
参阅图1,图1提供了一种神经网络构架示意图,如图1所示,神经网络构架可以包括多层结构,该多层结构如图1所示,可以包括:输入层、卷积层1、batchnorm层、卷积层2、中间层(依据不同功能的神经网络构架具有不同的中间层,该中间层可以为至少一层)、卷积层n、全连接层1、激活(例如激活函数:softmax)层。对于神经网络构架,对于计算量较大的层可以称为计算层,例如卷积层、全连接层等等,当然在实际应用中,上述计算层还可以包含其他类型的层,另外,本申请提供的图1中的神经网络构架仅仅是为了举例说明,本申请中的神经网络并不局限如图1所示的构架。
图2提供了根据现有技术的神经网络计算层结构中的各个计算层输入输出操作的示意图。如图2所示,神经网络的计算层结构包括Convolution层、BatchNorm层、Scale层、ReLU层等计算层,前一层的计算输出为后一层的输入。在计算的过程中,首先将Convolution层计算所需的输入数据从片外内存加载至片上缓存,Convolution层基于该加载的数据进行计算,然后将计算结果存储在片外内存;BatchNorm层从片外内存加载Convolution层的输出结果作为输入数据以及其他的必要的参数,进行计算,再将结果存储到片外内存;然后对Scale层、ReLU层等计算层进行类似的操作,直到遍历所有的计算层。
从上述各个计算层输入输出操作的过程可以看出,每个计算层在计算时,首先需要从片外内存加载输入数据,计算完成后再将输出数据存储至片外内存。这样,针对每个计算层都要进行加载数据和存储数据的操作(以下称为输入/输出操作,即I/O操作),这样导致完成各个计算层的计算的过程中,存在大量的I/O操作,而大量的I/O操作会降低神经网络计算的速率,特别是计算操作速率快的情形下,大量的I/O操作成为提升神经网络计算速率的瓶颈。
图3提供了一种神经网络编译优化方法,该方法可以在如图1或图2所示的神经网络构架下实现,当然在实际应用中,也可以在其他的神经网络构架下实现,如图3所示的方法并不限制神经网络构架的结构。如图3所示的方法可以由神经网络芯片执行,当然在实际应用中,也可以采用通用芯片或包含芯片的电子设备来实现,该通用芯片例如中央处理器CPU,图形处理器GPU等等。
在本发明中片上缓存和片外内存包括多种类型的存储器,例如片上缓存包括静态随机存取存储器(Static Random Access Memory,SRAM),片外内存包括动态随机存取存储器(Dynamic Random Access Memory,DRAM),只要能够实现本发明的发明目的,还可以采用其他类型的存储器,这些都属于本申请覆盖的范围。另外,在本文的以下描述中,为了简便,“片上缓存”和“片外内存”分别简称为“片上”和“片外”。
如图3所示,本发明的神经网络编译优化方法包括如下步骤:
步骤S301,根据层融合白名单,确定神经网络计算层结构中的融合计算层集合。
在该步骤中,首先需要确定层融合白名单。所形成的融合计算层集合包括主计算层和至少一个的后续融合计算层。层融合白名单是根据预设条件确定的,该预设条件包括计算层上进行的运算属于片上原位运算(包括计算输出覆盖输入)、后续融合层与主计算层具有相同的计算逻辑等。以卷积层或池化层作为主计算层为例,计算逻辑不是跨维度的,计算完成的数据逻辑上是连续的,后续融合层与主计算层具有相同的计算逻辑,那么,后续融合层计算逻辑也不是跨维度的,计算完成的数据逻辑上是连续的,后续融合层为层融合白名单上的计算层。
如图2所示,Convolution层、BatchNorm层、Scale层和ReLU层均符合上述预设条件,图2所示只是一个实施例,在实际应用中,可存在各种不同的神经网络计算层的结构和布局。针对各个神经网络计算层的结构和布局,根据预设条件,遍历各个神经网络计算层,直到不满足上述预设条件为止,从而形成一个融合计算层集合。
根据图2所示的计算层结构,融合计算层集合包括Convolution层、BatchNorm层、Scale层和ReLU层等,其中,Convolution层为主计算层,而BatchNorm层、Scale层和ReLU层等为后续融合计算层。
在得到一个融合计算层集合后,如果还存在未遍历的其他计算层,继续根据预设条件确定下一个融合计算层集合,直到遍历所有的计算层,从而形成一个以上的融合计算层集合。
从而,步骤S301包括:遍历神经网络计算层结构中的各个计算层,直到遍历到不属于所述层融合白名单的计算层或遍历到神经网络计算层结构的结束,从而确定所述融合计算层集合。
步骤S302,根据融合计算层集合中的所有计算层所需要的输入数据,获得总输入数据。
如上所述,假设一个融合计算层集合包括Convolution层、BatchNorm层、Scale层和ReLU层,那么,在确定计算输入数据时,将Convolution层、BatchNorm层、Scale层和ReLU层的每个计算层所需要的数据进行汇总,获得计算输入数据。该输入数据包括用户的输入、融合计算层集合的前层计算完成存储至片外的数据以及/或者神经网络编译的框架层面的常数和/或参数,这里的框架例如:caffe、Tensorflow等。
步骤S303,加载总输入数据。
在根据融合计算层集合,确定融合计算层集合的所有计算层所需的计算输入数据后,将该计算输入数据从片外加载至片上。
这样,在一次加载的过程中,把融合计算层集合的所有计算层所需的数据都加载到片上,各个计算层在获取输入数据时,不需要再从片外获取,而是直接来自片上,从而大大减少了从片外加载数据的操作次数。
进一步地,上述神经网络编译优化方法还包括如下步骤:
步骤S304,响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出。
根据图2所示的计算层结构,融合计算层集合中的Convolution层、BatchNorm层、Scale层和ReLU层分别计算计算输入数据,融合计算层集合的所有计算层完成计算后,会得到一个最后的输出。
进一步地,融合计算层集合的一个计算层计算完成后,将计算输出存储在片上,后一个计算层从片上获取上一个计算层的输出结果将其作为本计算层的输入,进行计算后再将输出存储在片上,以此往复,直到遍历融合计算层集合的所有计算层,得到最终的输出。
从而,步骤S304包括将各个计算层的输出数据依次存储在片上。
在这一过程中,不需要频繁从片外加载输入数据以及将输出结果存储至片外,从而减少I/O操作的数量、减少操作指令并加快编译速率,并且,输出最终结果前,由于不需要将输出存储至片外,从而减少片外存储空间的占用。
根据图2所示的计算层结构,依次经Convolution层、BatchNorm层、Scale层和ReLU层计算后,得到一个最终的输出。
步骤S305,存储最终输出。
在得到最后的输出后,将数据从片内存储到片外,从而完成针对该融合计算层集合的计算。
根据上述神经网络编译优化方法,当需要从片外加载数据时,首先根据融合计算层的集合,获取所需要的所有输入数据,将其加载至片上。融合计算层的集合的各个融合计算层在计算过程中,不需要频繁从片外加载输入数据以及将输出结果存储至片外,从而,减少片上片外I/O操作的数量、减少操作指令、加快编译速率并减少片外存储空间的占用。
进一步地,在一个优选的实施例中,确定融合白名单的预设条件还包括一个融合计算层的输出只作为一个融合计算层的输入,即一个融合计算层的输出不作为两个以上融合计算层的输入。例如,如图4所示,神经网络计算层结构包括计算层1、计算层2、计算层3、计算层4、计算层5和计算层6,其中,计算层2的输出作为计算层3和计算层4的输入。
那么,对于计算层1、计算层2、计算层3和计算层5,可采用上述神经网络编译优化方法,对于计算层1、计算层2、计算层4和计算层6,需要再采用上述神经网络编译优化方法,即需要再进行一次片上片外加载和存储操作。可以理解的是,对于图4所示的计算层结构,采用上述神经网络编译优化方法也能在一定程度上减少片上片外I/O操作的数量和操作指令,但是如果计算层结构为一个融合计算层的输出只作为一个融合计算层的输入,更能体现上述神经网络编译优化方法带来的优势。
进一步地,在一个优选的实施例中,确定融合白名单的预设条件还包括融合计算层之间的数据类型是兼容的。
比如,所有计算层之间的数据类型是相同的,比如都是float16或float32,这样在计算过程中不需要进行数据类型的转换,可以加快编译速率。可以理解的是,如果计算层之间的数据类型是不同的且数据类型的转换与加载/存储的操作(即I/O操作)的过程无关,那么也可以采用上述神经网络编译优化方法,只是需要在计算层间进行数据类型转换的操作,但不会增加片上片外I/O操作的数量。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本披露并不受所描述的动作顺序的限制,因为依据本披露,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本披露所必须的。
进一步需要说明的是,虽然图3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
根据另一个实施例,本发明还提供一种神经网络编译优化装置。如图5所示,该神经网络编译优化装置包括:
确定单元501,用于根据层融合白名单,确定神经网络计算层结构中的融合计算层集合。
根据一个方面,该融合计算层集合包括主计算层和一个以上的后续融合计算层。
根据另一个方面,确定单元501用于遍历神经网络计算层结构中的各个计算层,直到遍历到不属于层融合白名单的计算层或遍历到神经网络计算层结构的结束,从而确定融合计算层集合。
根据又一个方面,层融合白名单是根据预设条件确定的,该预设条件包括计算层上进行的运算属于片上原位运算和/或所述后续融合计算层与所述主计算层具有相同的计算逻辑、融合计算层的输出只作为一个融合计算层的输入和/或融合计算层之间的数据类型是兼容的。
第一获得单元502,用于根据融合计算层集合中的所有计算层所需要的输入数据,获得总输入数据。
根据一个方面,该总输入数据包括神经网络模型的常数和/或参数、用户的输入和/或者所述融合计算层集合的前计算层存储至片外的数据。
加载单元503,用于加载所述总输入数据。
根据一个方面,加载单元503用于将总输入数据从片外加载至片上。
进一步地,该神经网络编译优化装置还包括:
第二获得单元504,用于响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出。
根据一个方面,第二获得单元504用于将各个计算层的输出数据依次存储在片上。
存储单元505,用于存储最终输出。
根据一个方面,存储单元505用于将最终输出存储到片外。
根据上述神经网络编译优化装置,当需要从片外加载数据时,首先根据融合计算层的集合,获取所需要的所有输入数据,将其加载至片上。融合计算层的集合的各个融合计算层在计算过程中,不需要频繁从片外加载输入数据以及将输出结果存储至片外,从而,减少片上片外I/O操作的数量、减少操作指令、加快编译速率并减少片外存储空间的占用。参阅图6,图6提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如图3所示的方法以及细化方案。
应该理解,上述的装置实施例仅是示意性的,本披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本披露各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器或芯片可以是任何适当的硬件处理器,比如CPU、GPU、FPGA、DSP和ASIC等等。若无特别说明,所述片上缓存、片外内存、存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器RRAM(Resistive Random Access Memory)、动态随机存取存储器DRAM(Dynamic Random Access Memory)、静态随机存取存储器SRAM(Static Random-AccessMemory)、增强动态随机存取存储器EDRAM(Enhanced Dynamic Random Access Memory)、高带宽内存HBM(High-Bandwidth Memory)、混合存储立方HMC(Hybrid Memory Cube)等等。
所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本披露的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本申请实施例还提供一种计算机可读存储介质,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如图3所示的方法以及细化方案。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如图3所示的方法以及细化方案。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
依据以下条款可更好地理解前述内容:
条款1,一种神经网络编译优化方法,其包括:
根据层融合白名单,确定神经网络计算层结构中的融合计算层集合,其中,所述融合计算层集合包括主计算层和一个以上的后续融合计算层;
根据所述融合计算层集合中的所有计算层所需要的输入数据,获得总输入数据;以及
加载所述总输入数据。
条款2,如条款1所述的方法,还包括:
响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出;以及
存储所述最终输出。
条款3,如条款1或2所述的方法,其中,所述根据层融合白名单,确定神经网络计算层结构中的融合计算层集合包括:遍历所述神经网络计算层结构中的各个计算层,直到遍历到不属于所述层融合白名单的计算层或遍历到神经网络计算层结构的结束,从而确定所述融合计算层集合。
条款4,如条款2所述的方法,其中,所述加载所述总输入数据包括将所述总输入数据从片外加载至片上,所述存储所述最终输出包括将所述最终输出存储到片外。
条款5,如条款2至4任意一者所述的方法,其中,所述响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出包括将所述各个计算层的输出数据依次存储在片上。
条款6,如条款1至5任意一者所述的方法,其中,所述总输入数据包括神经网络模型的常数和/或参数、用户的输入和/或者所述融合计算层集合的前计算层存储至片外的数据。
条款7,如条款1至6任意一者所述的方法,所述层融合白名单是根据预设条件确定的,所述预设条件包括计算层上进行的运算属于片上原位运算和/或所述后续融合计算层与所述主计算层具有相同的计算逻辑。
条款8,如条款7所述的方法,其中,所述预设条件还包括融合计算层的输出只作为一个融合计算层的输入。
条款9,如条款7或8所述的方法,其中,所述预设条件还包括融合计算层之间的数据类型是兼容的。
条款10,一种神经网络编译优化装置,其包括:
确定单元,用于根据层融合白名单,确定神经网络计算层结构中的融合计算层集合,其中,所述融合计算层集合包括主计算层和一个以上的后续融合计算层;
第一获得单元,用于根据所述融合计算层集合中的所有计算层所需要的输入数据,获得总输入数据;以及
加载单元,用于加载所述总输入数据。
条款11,如条款10所述的装置,还包括:
第二获得单元,响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出;以及
存储单元,用于存储所述最终输出。
条款12,如条款10或11所述的装置,其中,所述确定单元用于遍历所述神经网络计算层结构中的各个计算层,直到遍历到不属于所述层融合白名单的计算层或遍历到神经网络计算层结构的结束,从而确定所述融合计算层集合。
条款13,如条款11所述的装置,其中,所述加载单元用于将所述总输入数据从片外加载至片上,所述存储单元用于将所述最终输出存储到片外。
条款14,如条款11至13任意一者所述的装置,其中,所述第二获得单元用于将所述各个计算层的输出数据依次存储在片上。
条款15,如条款10至14任意一者所述的装置,其中,所述总输入数据包括神经网络模型的常数和/或参数、用户的输入和/或者所述融合计算层集合的前计算层存储至片外的数据。
条款16,如条款10至15任意一者所述的装置,所述层融合白名单是根据预设条件确定的,所述预设条件包括计算层上进行的运算属于片上原位运算和/或所述后续融合计算层与所述主计算层具有相同的计算逻辑。
条款17,如条款16所述的装置,其中,所述预设条件还包括融合计算层的输出只作为一个融合计算层的输入。
条款18,如条款16或17所述的装置,其中,所述预设条件还包括融合计算层之间的数据类型是兼容的。
条款19,一种电子设备,其特征在于,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如条款1-9任一所述的方法。
条款20,一种计算机可读存储介质,其特征在于,其存储用于电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如条款1-9任一项所述的方法。
条款21,一种计算机程序产品,其特征在于,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如条款1-9任一项所述的方法。
以上对本披露实施例进行了详细介绍,本文中应用了具体个例对本披露的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本披露的方法及其核心思想。同时,本领域技术人员依据本披露的思想,基于本披露的具体实施方式及应用范围上做出的改变或变形之处,都属于本披露保护的范围。综上所述,本说明书内容不应理解为对本披露的限制。
Claims (10)
1.一种神经网络编译优化方法,其中,包括:
根据层融合白名单,确定神经网络计算层结构中的融合计算层集合,其中,所述融合计算层集合包括主计算层和一个以上的后续融合计算层;
根据所述融合计算层集合中的所有计算层所需要的输入数据,获得总输入数据;以及
加载所述总输入数据。
2.如权利要求1所述的方法,其中,还包括:
响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出;以及
存储所述最终输出。
3.如权利要求1或2所述的方法,其中,所述根据层融合白名单,确定神经网络计算层结构中的融合计算层集合包括:遍历所述神经网络计算层结构中的各个计算层,直到遍历到不属于所述层融合白名单的计算层或遍历到神经网络计算层结构的结束,从而确定所述融合计算层集合。
4.如权利要求2所述的方法,其中,所述加载所述总输入数据包括将所述总输入数据从片外加载至片上,所述存储所述最终输出包括将所述最终输出存储到片外。
5.如权利要求2至4任意一者所述的方法,其中,所述响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出包括将所述各个计算层的输出数据依次存储在片上。
6.一种神经网络编译优化装置,其中,包括:
确定单元,用于根据层融合白名单,确定神经网络计算层结构中的融合计算层集合,其中,所述融合计算层集合包括主计算层和一个以上的后续融合计算层;
第一获得单元,用于根据所述融合计算层集合中的所有计算层所需要的输入数据,获得总输入数据;以及
加载单元,用于加载所述总输入数据。
7.如权利要求6所述的装置,其中,还包括:
第二获得单元,响应于所述融合计算层集合中的各个计算层基于所述总输入数据进行的计算,获得针对所述融合计算层集合的最终输出;以及
存储单元,用于存储所述最终输出。
8.如权利要求6或7所述的装置,其中,所述确定单元用于遍历所述神经网络计算层结构中的各个计算层,直到遍历到不属于所述层融合白名单的计算层或遍历到神经网络计算层结构的结束,从而确定所述融合计算层集合。
9.如权利要求7所述的装置,其中,所述加载单元用于将所述总输入数据从片外加载至片上,所述存储单元用于将所述最终输出存储到片外。
10.如权利要求7至9任意一者所述的装置,其中,所述第二获得单元用于将所述各个计算层的输出数据依次存储在片上。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910741036.8A CN110490302B (zh) | 2019-08-12 | 2019-08-12 | 一种神经网络编译优化方法、装置以及相关产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910741036.8A CN110490302B (zh) | 2019-08-12 | 2019-08-12 | 一种神经网络编译优化方法、装置以及相关产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110490302A true CN110490302A (zh) | 2019-11-22 |
CN110490302B CN110490302B (zh) | 2022-06-07 |
Family
ID=68550642
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910741036.8A Active CN110490302B (zh) | 2019-08-12 | 2019-08-12 | 一种神经网络编译优化方法、装置以及相关产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110490302B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214222A (zh) * | 2020-10-27 | 2021-01-12 | 华中科技大学 | COStream中用于实现前馈神经网络的sequential结构及其编译方法 |
CN112884123A (zh) * | 2021-02-23 | 2021-06-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
WO2022135600A1 (zh) * | 2020-12-25 | 2022-06-30 | 中科寒武纪科技股份有限公司 | 计算神经网络的装置、板卡、方法及可读存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140278475A1 (en) * | 2013-03-15 | 2014-09-18 | Bao Tran | Tele-analytics based treatment recommendations |
CN107203807A (zh) * | 2016-03-16 | 2017-09-26 | 中国科学院计算技术研究所 | 神经网络的计算方法、系统及其装置 |
CN108241890A (zh) * | 2018-01-29 | 2018-07-03 | 清华大学 | 一种可重构神经网络加速方法及架构 |
CN108446758A (zh) * | 2018-02-11 | 2018-08-24 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理方法 |
CN109284815A (zh) * | 2018-11-30 | 2019-01-29 | 上海寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN109409518A (zh) * | 2018-10-11 | 2019-03-01 | 北京旷视科技有限公司 | 神经网络模型处理方法、装置及终端 |
CN109754082A (zh) * | 2018-12-29 | 2019-05-14 | 北京中科寒武纪科技有限公司 | 卷积神经网络的优化方法、装置、存储介质和系统 |
CN109754074A (zh) * | 2018-12-29 | 2019-05-14 | 北京中科寒武纪科技有限公司 | 一种神经网络量化方法、装置以及相关产品 |
CN109871949A (zh) * | 2017-12-22 | 2019-06-11 | 泓图睿语(北京)科技有限公司 | 卷积神经网络加速器及加速方法 |
CN109919311A (zh) * | 2019-03-13 | 2019-06-21 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
CN109948774A (zh) * | 2019-01-25 | 2019-06-28 | 中山大学 | 基于网络层捆绑运算的神经网络加速器及其实现方法 |
CN110050267A (zh) * | 2016-12-09 | 2019-07-23 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
-
2019
- 2019-08-12 CN CN201910741036.8A patent/CN110490302B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140278475A1 (en) * | 2013-03-15 | 2014-09-18 | Bao Tran | Tele-analytics based treatment recommendations |
CN107203807A (zh) * | 2016-03-16 | 2017-09-26 | 中国科学院计算技术研究所 | 神经网络的计算方法、系统及其装置 |
CN110050267A (zh) * | 2016-12-09 | 2019-07-23 | 北京地平线信息技术有限公司 | 用于数据管理的系统和方法 |
CN109871949A (zh) * | 2017-12-22 | 2019-06-11 | 泓图睿语(北京)科技有限公司 | 卷积神经网络加速器及加速方法 |
CN108241890A (zh) * | 2018-01-29 | 2018-07-03 | 清华大学 | 一种可重构神经网络加速方法及架构 |
CN108446758A (zh) * | 2018-02-11 | 2018-08-24 | 江苏金羿智芯科技有限公司 | 一种面向人工智能计算的神经网络数据串行流水处理方法 |
CN109409518A (zh) * | 2018-10-11 | 2019-03-01 | 北京旷视科技有限公司 | 神经网络模型处理方法、装置及终端 |
CN109284815A (zh) * | 2018-11-30 | 2019-01-29 | 上海寒武纪信息科技有限公司 | 神经网络模型算法编译方法、装置及相关产品 |
CN109754082A (zh) * | 2018-12-29 | 2019-05-14 | 北京中科寒武纪科技有限公司 | 卷积神经网络的优化方法、装置、存储介质和系统 |
CN109754074A (zh) * | 2018-12-29 | 2019-05-14 | 北京中科寒武纪科技有限公司 | 一种神经网络量化方法、装置以及相关产品 |
CN109948774A (zh) * | 2019-01-25 | 2019-06-28 | 中山大学 | 基于网络层捆绑运算的神经网络加速器及其实现方法 |
CN109919311A (zh) * | 2019-03-13 | 2019-06-21 | 北京地平线机器人技术研发有限公司 | 生成指令序列的方法、执行神经网络运算的方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112214222A (zh) * | 2020-10-27 | 2021-01-12 | 华中科技大学 | COStream中用于实现前馈神经网络的sequential结构及其编译方法 |
WO2022135600A1 (zh) * | 2020-12-25 | 2022-06-30 | 中科寒武纪科技股份有限公司 | 计算神经网络的装置、板卡、方法及可读存储介质 |
CN112884123A (zh) * | 2021-02-23 | 2021-06-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
CN112884123B (zh) * | 2021-02-23 | 2024-03-01 | 杭州海康威视数字技术股份有限公司 | 神经网络优化方法、装置、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110490302B (zh) | 2022-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110490302A (zh) | 一种神经网络编译优化方法、装置以及相关产品 | |
Rintanen | Engineering efficient planners with SAT | |
Hapala et al. | Efficient stack-less bvh traversal for ray tracing | |
CN107918794A (zh) | 基于计算阵列的神经网络处理器 | |
CN102193782B (zh) | 一种表格模型操作的方法 | |
CN103970960A (zh) | 基于gpu并行加速的无网格伽辽金法结构拓扑优化方法 | |
CN107122490A (zh) | 一种分组查询中聚合函数的数据处理方法及系统 | |
CN104461871A (zh) | 一种基于petri网的死锁检测方法 | |
CN104699946A (zh) | 一种游戏场景的管理方法及装置 | |
CN108388509A (zh) | 一种软件测试方法、计算机可读存储介质及终端设备 | |
US20110218795A1 (en) | Simulator of multi-core system employing reconfigurable processor cores and method of simulating multi-core system employing reconfigurable processor cores | |
CN105874511A (zh) | 模拟设备 | |
CN108875914A (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
Edelkamp et al. | On the complexity of BDDs for state space search: A case study in Connect Four | |
CN103871086B (zh) | 基于fpga构建的分层次栅格转矢量处理方法 | |
CN106294530B (zh) | 规则匹配的方法和系统 | |
WO1998049612A1 (en) | Universal software structure for representing model structures | |
CN108038304A (zh) | 一种利用时间局部性的格子玻尔兹曼方法并行加速方法 | |
US8805664B1 (en) | System and method for simulating branching behavior | |
CN104598567B (zh) | 一种基于Hadoop MapReduce编程框架的数据统计排重的方法 | |
CN101846978B (zh) | 一种基于gspn可靠性模型的可靠度分析方法 | |
CN106201655A (zh) | 虚拟机分配方法和虚拟机分配系统 | |
CN108021563A (zh) | 一种指令间数据依赖的检测方法和装置 | |
Klein et al. | Moving in a network under random failures: A complexity analysis | |
CN116739094A (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 |
Address after: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086 Applicant after: Zhongke Cambrian Technology Co.,Ltd. Address before: Room 644, scientific research complex building, No. 6, South Road, Academy of Sciences, Haidian District, Beijing 100086 Applicant before: Beijing Zhongke Cambrian Technology Co., Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |