本发明涉及计算机技术领域,具体涉及一种基于神经网络加速器的执行优化方法及装置。
背景技术:
随着科技及社会的不断进步,人工智能技术也取得了飞速的发展。其中,在人工智能领域,神经网络技术以其准确度高,适用范围广等特点被广泛应用。
由于神经网络在训练及推理过程中涉及海量的数据运算,从而传统的计算设备已无法满足当前神经网络的计算需求,由此,神经网络加速器应运而生。目前常用的神经网络加速器(如asicforneuralnetwork加速器)通常依赖于外部存储器实现神经网络的运算及加速。其在实施过程中,具体是将每一层网络的中间计算结果写入外部存储器,然后再进行下一层网络计算时从外部存储器中读取该中间计算结果。
然而,发明人在实施过程中发现,现有技术中存在如下缺陷:在现有技术基于神经网络加速器的执行方式中,神经网络加速器与外部存储器的交互次数较多,从而大幅增加数据传输开销,增大运算延迟性,降低整体执行效率,并影响神经网络加速器的加速效果。
技术实现要素:
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于神经网络加速器的执行优化方法及装置。
根据本发明的一个方面,提供了一种基于神经网络加速器的执行优化方法,包括:
对待优化的神经网络进行解析,获得所述神经网络的初始执行流;
根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段;
根据所述多个执行流分段生成优化执行流,以供根据所述优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
可选的,所述根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段进一步包括:
将相邻的神经元结构相同的层聚合为一个执行流分段。
可选的,若执行流分段包含多层;
则在执行过程中,将该执行流分段中的非最后层的输出结果存储至片内存储器中。
可选的,所述根据所述多个执行流分段生成优化执行流进一步包括:
针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,以获得与该执行流分段对应的至少一个执行流分段分片;
根据所述多个执行流分段以及所述至少一个执行流分段对应的执行流分段分片,生成优化执行流;
其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。
可选的,所述对该执行流分段进行分片处理进一步包括:
根据该执行流分段所对应的神经元数量以及片内存储器容量,确定该执行流分段所对应的分片数量;
根据所述分片数量,对该执行流分段进行分片处理。
可选的,在所述根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段之后,所述方法还包括:
对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理,以生成与所述至少两个执行流分段对应的修正执行流分段;
则所述根据所述多个执行流分段生成优化执行流进一步包括:根据未进行合并处理的执行流分段以及所述修正执行流分段,生成优化执行流。
可选的,所述对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理进一步包括:
根据所述至少两个执行流分段的神经元数量以及片内存储器容量,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理。
根据本发明的另一方面,提供了一种基于神经网络加速器的执行优化装置,包括:
解析模块,适于对待优化的神经网络进行解析,获得与所述神经网络对应的初始执行流;
分段划分模块,适于根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段;
生成模块,适于根据所述多个执行流分段生成优化执行流,以供根据所述优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
可选的,所述分段划分模块进一步适于:将相邻的神经元结构相同的层聚合为一个执行流分段。
可选的,若执行流分段包含多层;
则在执行过程中,将该执行流分段中的非最后层的输出结果存储至片内存储器中。
可选的,所述装置还包括:分段分片模块,适于针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,以获得与该执行流分段对应的至少一个执行流分段分片;
所述生成模块进一步适于:根据所述多个执行流分段以及所述至少一个执行流分段对应的执行流分段分片,生成优化执行流;
其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。
可选的,所述分段分片模块进一步适于:
根据该执行流分段所对应的神经元数量以及片内存储器容量,确定该执行流分段所对应的分片数量;
根据所述分片数量,对该执行流分段进行分片处理。
可选的,所述装置还包括:合并模块,适于在所述根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段之后,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理,以生成与所述至少两个执行流分段对应的修正执行流分段;
则所述生成模块进一步适于:根据未进行合并处理的执行流分段以及所述修正执行流分段,生成优化执行流。
可选的,所述合并模块进一步适于:根据所述至少两个执行流分段的神经元数量以及片内存储器容量,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述基于神经网络加速器的执行优化方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述基于神经网络加速器的执行优化方法对应的操作。
根据本发明提供的基于神经网络加速器的执行优化方法及装置,首先对待优化的神经网络进行解析,获得神经网络的初始执行流;进一步地根据初始执行流中各层的神经元结构,将初始执行流划分为多个执行流分段;最终根据多个执行流分段生成优化执行流,以供根据优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。采用本方案,能够大幅降低神经网络加速器与外部存储器的交互次数,降低运算延迟,提升运算效率,节约带宽资源,并且适于大规模应用与实施。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例一提供的一种基于神经网络加速器的执行优化方法的流程图;
图2示出了本发明提供的一种神经网络示意图;
图3示出了本发明提供的一种执行流分段划分结果示意图;
图4示出了本发明提供的一种初始执行流示意图;
图5示出了本发明提供的一种优化执行流示意图;
图6示出了本发明实施例二提供的一种基于神经网络加速器的执行优化方法的流程图;
图7示出了本发明提供的一种执行流分段的分片结果示意图;
图8示出了本发明提供的一种执行流分段的合并处理过程示意图;
图9示出了本发明实施例三提供的一种基于神经网络加速器的执行优化装置的功能结构示意图;
图10示出了本发明实施例五提供的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
实施例一
图1示出了本发明实施例一提供的一种基于神经网络加速器的执行优化方法的流程图。其中,本实施例对基于神经网络加速器的执行优化方法的具体执行载体等不作限定,例如,该执行优化方法可以以软件模块的形式执行,也可以封装为预制函数供神经网络加速器进行调用。通过本实施例提供的基于神经网络加速器的执行优化方法,能够对原始的神经网络的执行流进行优化,以生成优化执行流,从而神经网络加速器能够基于该优化执行流进行神经网络运算,降低运算延迟性,提升运算效率。
如图1所示,该方法包括以下步骤:
步骤s110:对待优化的神经网络进行解析,获得与该神经网络对应的初始执行流。
本实施例中首先获取有待优化的神经网络,其中,本实施例对获取到的神经网络的具体类型不作限定。例如,该神经网络可以为cnn(convolutionalneuralnetworks,卷积神经网络)、dn((deconvolutionalnetworks,反卷积神经网络)、以及rnn(recurrentneuralnetworks,循环神经网络)等等。
进一步地,对获取到的待优化的神经网络进行解析,从而获得该神经网络的初始执行流。其中,该初始执行流具体为优化前的原始执行流。在该原始执行流中,是在进行每层网络运算之后,将该层网络的中间计算结果写入到外部存储器(该外部存储器具体可以为dram)中,待下层网络计算时再从该外部存储器中获取该中间计算结果进行计算。从中可看出,若神经网络加速器直接基于该初始执行流进行运算,其与外部存储器交互次数较多,从而会大幅增加运算延迟性,降低运算效率。
不同于现有技术中,由神经网络加速器基于神经网络的初始执行流进行神经网络运算,本实施例在获取到待优化神经网络的初始执行流之后,进一步通过后续步骤s120及步骤s130对该初始执行流进行优化,以获得优化执行流,从而使得神经网络加速器能够基于该优化执行流进行神经网络运算。
步骤s120:根据初始执行流中各层的神经元结构,将初始执行流划分为多个执行流分段。
在实际的实施过程中,在神经网络运算中通常会出现上采样和/或下采样,从而初始执行流中各层的神经元结构可能存在不同。则本步骤中具体根据初始执行流中各层的神经元结构,准确且快速地将初始执行流划分为多个执行流分段。
可选的,在根据初始执行流中各层的神经元结构,将初始执行流划分为多个执行流分段过程中,具体是将相邻的神经元结构相同的层聚合为一个执行流分段,从而本实施例中至少一个执行流分段由若干相邻的层组成。
举例来说,在cnn网络中,通常包含有至少一个卷积层以及位于卷积层后的运算层,其中,该运算层可以包括非线性运算层或线性运算层(例如,该非线性运算层可以为relu层等,线性运算层可以为bn层等),而位于卷积层后的运算层通常会与相应的卷积层结合运算,则本实施例中所述的各层具体是指卷积层与对应的运算层的结合。如图2所示的神经网络中,其包含一个输入层(input层),6个卷积层(conv1-conv6),以及位于各个卷积层后的非线性运算层和/或线性运算层(relu和/或pool层)。则在该神经网络中,本实施例所述的各层具体包括层1-层6(其中,本实施例可仅对卷积层及运算层进行执行流优化,从而本实施例所述的各层可以不包含输入层),即一个卷积层与相应的非线性运算层或线性运算层构成本实施例所述的层(如卷积层conv1与位于该卷积层后的relu及pool层组成本实施例所述的层1,卷积层conv2与位于该卷积层后的relu组成本实施例所述的层2)。
进一步地,在图2所示的神经网络中,层1所对应的神经元结构为64*112*112(即以该层对应的卷积层的输出通道、宽及高确定该层的神经元结构),层2所对应的神经元结构为128*56*56,层3所对应的神经元结构为128*56*56,层4所对应的神经元结构为256*28*28,层5所对应的神经元结构为256*28*28,层6所对应的神经元结构为256*28*28。则划分结果如图3所示,层1单独为一个执行流分段,即执行流分段stage1;由于层2与层3相邻且神经元结构相同,从而将层2与层3划分为一个执行流分段,即执行流分段stage2;层4、层5及层6相邻,且三者的神经元结构相同,则将层4、层5及层6划分为一个执行流分段,即执行流分段stage3。
其中,在计算机视觉领域中,各层对应的神经元结构与各层的卷积层的特征图结构相对应。例如,在层1中,卷积层conv1的特征图结构为64*112*112,从而,在计算机视觉领域中,本实施例中所述的根据初始执行流中各层的神经元结构,将初始执行流划分为多个执行流分段又可以为:根据初始执行流中各层的特征图结构,将初始执行流划分为多个执行流分段,具体是将相邻的特征图结构相同的层划分为一个执行流分段。
步骤s130:根据多个执行流分段生成优化执行流,以供根据优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
根据步骤s120中划分的各个执行流分段,可生成相应的优化执行流,从而能够便于神经网络加速器基于该优化执行流进行神经网络运算。
其中,在神经网络加速器基于优化执行流执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作,而在执行流分段的内部不涉及外部存储器的读写操作。即使执行流分段包含多层,在执行过程中,具体是将该执行流分段中的非最后层的输出结果存储至片内存储器(如sram)中,即将该执行流分段中的中间处理结果存储至片内存储器中。
以图2所示的神经网络结构为例,其初始执行流如图4所示,即层1从外部存储器中读取数据进行运算后,并将输出结果写入外部存储器;层2从外部存储器中获取层1写入的数据,进行运算后再将层2运算结果写入外部存储器;同理,层3、层4、层5及层6依次从外部存储器中读取数据进行运算,并将运算结果再写回外部存储器中;而经过本实施例优化后,获得的优化执行流如图5所示,即仅在每个执行流分段(stage1-stage3)的初始位置从外部存储器中读取数据,并仅在每个执行流分段的结束位置将数据写入外部存储器中,如针对于执行流分段stage3,在stage3执行时,仅在层4开始运算时从外部存储器中读取数据,而层4的输出结果(即stage3的中间计算结果存储至片内存储器中),以供层5直接根据片内存储器中的数据进行运算,并进一步将层5的输出结果存储至片内存储器中,以供层6根据片内存储器中的数据进行运算,并在层6运算后将运算结果写入外部存储器中。从中可看出,采用优化执行流进行神经网络运算,能够大幅降低与外部存储器的交互次数,从而提升运算效率。
由此可见,本实施例通过对神经网络的初始执行流进行分段处理生成优化执行流,仅在执行流分段的起始及结束处对外部存储器进行读写操作,能够基于该优化执行流进行神经网络运算,从而大幅降低神经网络加速器与外部存储器的交互次数,降低运算延迟,提升运算效率,节约带宽资源;并且,本实施例所提供的方法简单易行,适于大规模应用与实施。
实施例二
图6示出了本发明实施例二提供的基于神经网络加速器的执行优化方法的流程图。其中,本实施例所提供的基于神经网络加速器的执行优化方法是针对于实施例一中执行优化方法的进一步优化,旨在进一步地提升神经网络的运算效率。
如图6所示,该方法包括:
步骤s610:对待优化的神经网络进行解析,获得该神经网络的初始执行流。
步骤s620:根据初始执行流中各层的神经元结构,将初始执行流划分为多个执行流分段。
其中,步骤s610及步骤s620的具体实施过程可参照实施例一中相应部分的描述,本实施例在此不做赘述。
步骤s630:针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,以获得与该执行流分段对应的至少一个执行流分段分片。
在实际的实施过程中,由于片内存储器容量的限制,无法将每层计算结果全部保存至片内存储器中,故此,本实施例可针对于至少一个执行流分段进行分片处理。
在具体的分片处理过程中,针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,从而获得与该执行流分段对应的至少一个执行流分段分片,进而能够根据多个执行流分段以及至少一个执行流分段对应的执行流分段分片,生成优化执行流。其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。具体地,当执行流分段包含多层时,分别对该多层中的每层进行分片处理,以获得与每层对应的层分片,并从每层中获取一个层分片组合构成该执行流分段的一个执行流分段分片。其中,该执行流分段所对应的执行流分段分片的数目,与该执行流分段包含的各层的层分片数目相同。
可选的,在具体的分片处理过程中,可根据该执行流分段所对应的神经元数量以及片内存储器容量,确定执行流分段所对应的分片数量;进而根据分片数量,对该执行流分段进行分片处理。其中,每个执行流分段的分片所需空间小于或等于片内存储器容量,例如可通过以下公式确定执行流分段所对应的分片数量:
max(ch[i]*w[i]*h[i]/n)≤sram_size;以及
max(ch[i]*w[i]*h[i]/(n-1))≥sram_size公式(2-1)
其中,n为执行流分段所对应的分片数量(即执行流分段包含的各层的层分片数量),n为大于或等于1的自然数;sram_size为神经网络加速器的片内存储器的容量,ch[i]为第i层特征图通道数,w[i]表示该层特征图宽度,h[i]表示该层特征图高度,ch[i]*w[i]*h[i]表示第i层神经元数目。在此本领域技术人员应当理解的是,在确定了执行流分段所对应的分片数量之后,本实施例对根据分片数量该执行流分段进行分片处理的方式不作限定,例如可采用按行分片、按列分片和/或按块分片等方式进行分片处理。
以下以一具体示例阐明根据多个执行流分段以及至少一个执行流分段对应的执行流分段分片生成的优化执行流:如图7所示,针对图3和/或图5中的执行流分段stage2,将该分段分为2等份,从而获得与执行流分段stage2对应的两个执行流分段分片,即stage2-1及stage2-2;在每个执行流分段分片中,均包含层2的层分片以及层3的层分片。在具体的执行过程中,执行流分段分片stage2-1及stage2-2仅在分段分片的起始读取外部存储器数据,即在层2分片处读取外部存储器数据,待层2分片读取外部存储器数据后进行运算,并将运算结果存储至片内存储器中,进而供层3分片进行运算,待层3分片运算完毕之后,将运算结果写入外部存储器,从而仅在分段分片的结束位置处将数据写入外部存储器,而每个分段分片的中间处理结果存储于片内存储器中。
步骤s640:对多个执行流分段中相邻的至少两个执行流分段进行合并处理,以生成与至少两个执行流分段对应的修正执行流分段。
为了进一步地减少与外部存储器的交互次数,从而进一步提升神经网络的运算效率,本实施例在对初始执行流进行分段划分之后,进一步地基于分段划分结果进行修正。
在实际的修正过程中,具体是判断划分后的多个执行流分段中相邻的多个执行流分段是否能够进行合并处理;若是,则对该多个执行流分段进行合并,从而生成相应的修正执行流分段,进而最终在生成优化执行流时,根据未进行合并处理的执行流分段以及修正执行流分段生成优化执行流;否则,则不对该多个执行流分段进行处理。
在一种可选的实施方式中,可根据至少两个执行流分段的神经元数量以及片内存储器容量,对多个执行流分段中相邻的至少两个执行流分段进行合并处理。即当相邻的多个执行流分段全部神经元均可保存至片内存储器上时,则确定该相邻的多个执行流分段能够进行合并处理,进而将该相邻的多个执行流分段合并为一个修正执行流分段。如图8所示的执行流分段stage3及stage4,其中,stage3所对应的神经元数目为256*28*28,stage4所对应的神经元数目为512*14*14,而片内存储器容量为256kb+256kb,则从中可看出stage3及stage4的神经元均可保存至该片内存储器上,从而将stage3及stage4合并为stage3′。
在又一种可选的实施方式中,可依据步骤s630中各个执行流分段所对应的分片数量,对多个执行流分段中相邻的至少两个执行流分段进行合并处理。具体地,当相邻的多个执行流分段所对应的分片数量均为1时,则将该多个执行流分段合并为一个修正执行流分段。仍如图8所示,stage3所对应的分片数量为1,stage4所对应的分片数量也为1,且stage3与stage4相邻,从而将stage3及stage4合并为stage3′。
步骤s650:生成优化执行流。
在具体的实施过程中,可根据步骤s620的初步分段结果、步骤s630对执行流分段的分片处理结果,和/或步骤s640的合并处理结果,生成最终的优化执行流。
由此可见,本实施例通过对神经网络的初始执行流进行分段处理生成优化执行流,仅在执行流分段的起始及结束处对外部存储器进行读写操作,从而神经网络加速器能够基于该优化执行流进行神经网络运算,降低运算延迟,提升运算效率,节约带宽资源;并且,本实施例所提供的方法简单易行,适于大规模应用与实施。
并且,本实施例还进一步地对执行流分段进行分片处理,并在每个执行流分段分片的起始及结束处对外部存储器进行读写操作,从而在保障神经网络运算精准计算的基础上,进一步地提升运算效率;而且,本实施例还进一步地基于执行流分段的划分结果对能够合并的执行流分段进行合并处理,从而进一步地减少与外部存储器的交互次数,提升神经网络的运算效率。
实施例三
图9示出了本发明实施例三提供的一种基于神经网络加速器的执行优化装置的功能结构示意图。如图9所示,该装置包括:解析模块91、分段划分模块92以及生成模块93。
解析模块91,适于对待优化的神经网络进行解析,获得与所述神经网络对应的初始执行流;
分段划分模块92,适于根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段;
生成模块93,适于根据所述多个执行流分段生成优化执行流,以供根据所述优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
可选的,所述分段划分模块进一步适于:将相邻的神经元结构相同的层聚合为一个执行流分段。
可选的,若执行流分段包含多层;
则在执行过程中,将该执行流分段中的非最后层的输出结果存储至片内存储器中。
可选的,所述装置还包括:分段分片模块,适于针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,以获得与该执行流分段对应的至少一个执行流分段分片;
所述生成模块进一步适于:根据所述多个执行流分段以及所述至少一个执行流分段对应的执行流分段分片,生成优化执行流;
其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。
可选的,所述分段分片模块进一步适于:
根据该执行流分段所对应的神经元数量以及片内存储器容量,确定该执行流分段所对应的分片数量;
根据所述分片数量,对该执行流分段进行分片处理。
可选的,所述装置还包括:合并模块,适于在所述根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段之后,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理,以生成与所述至少两个执行流分段对应的修正执行流分段;
则所述生成模块进一步适于:根据未进行合并处理的执行流分段以及所述修正执行流分段,生成优化执行流。
可选的,所述合并模块进一步适于:根据所述至少两个执行流分段的神经元数量以及片内存储器容量,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理。
其中,本实施例装置中各模块的具体实施过程可参照相应方法实施例中的描述,本实施例在此不做赘述。
由此可见,本实施例通过对神经网络的初始执行流进行分段处理生成优化执行流,仅在执行流分段的起始及结束处对外部存储器进行读写操作,从而神经网络加速器能够基于该优化执行流进行神经网络运算,降低运算延迟,提升运算效率,节约带宽资源;并且,本实施例所提供的方法简单易行,适于大规模应用与实施。
实施例四
根据本发明实施例四提供了一种计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的基于神经网络加速器的执行优化方法。
可执行指令具体可以用于使得处理器执行以下操作:
对待优化的神经网络进行解析,获得所述神经网络的初始执行流;
根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段;
根据所述多个执行流分段生成优化执行流,以供根据所述优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
将相邻的神经元结构相同的层聚合为一个执行流分段。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
若执行流分段包含多层;
则在执行过程中,将该执行流分段中的非最后层的输出结果存储至片内存储器中。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,以获得与该执行流分段对应的至少一个执行流分段分片;
根据所述多个执行流分段以及所述至少一个执行流分段对应的执行流分段分片,生成优化执行流;
其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
根据该执行流分段所对应的神经元数量以及片内存储器容量,确定该执行流分段所对应的分片数量;
根据所述分片数量,对该执行流分段进行分片处理。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理,以生成与所述至少两个执行流分段对应的修正执行流分段;
则所述根据所述多个执行流分段生成优化执行流进一步包括:根据未进行合并处理的执行流分段以及所述修正执行流分段,生成优化执行流。
在一种可选的实施方式中,可执行指令具体可以用于使得处理器执行以下操作:
根据所述至少两个执行流分段的神经元数量以及片内存储器容量,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理。
由此可见,本实施例通过对神经网络的初始执行流进行分段处理生成优化执行流,仅在执行流分段的起始及结束处对外部存储器进行读写操作,从而神经网络加速器能够基于该优化执行流进行神经网络运算,降低运算延迟,提升运算效率,节约带宽资源;并且,本实施例所提供的方法简单易行,适于大规模应用与实施。
实施例五
图10示出了本发明实施例五提供的计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图10所示,该计算设备可以包括:处理器(processor)1002、通信接口(communicationsinterface)1004、存储器(memory)1006、以及通信总线1008。
其中:处理器1002、通信接口1004、以及存储器1006通过通信总线1008完成相互间的通信。通信接口1004,用于与其它设备比如客户端或其它服务器等的网元通信。处理器1002,用于执行程序1010,具体可以执行上述方法实施例中的相关步骤。
具体地,程序1010可以包括程序代码,该程序代码包括计算机操作指令。
处理器1002可能是中央处理器cpu,或者是特定集成电路asic(applicationspecificintegratedcircuit),或者是被配置成实施本发明实施例的一个或多个集成电路。xxxxxx设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个cpu;也可以是不同类型的处理器,如一个或多个cpu以及一个或多个asic。
存储器1006,用于存放程序1010。存储器1006可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
程序1010具体可以用于使得处理器1002执行以下操作:
对待优化的神经网络进行解析,获得所述神经网络的初始执行流;
根据所述初始执行流中各层的神经元结构,将所述初始执行流划分为多个执行流分段;
根据所述多个执行流分段生成优化执行流,以供根据所述优化执行流执行神经网络运算;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
在一种可选的实施方式中,程序1010具体可以用于使得处理器1002执行以下操作:
将相邻的神经元结构相同的层聚合为一个执行流分段。
在一种可选的实施方式中,程序1010具体可以用于使得处理器1002执行以下操作:
若执行流分段包含多层;
则在执行过程中,将该执行流分段中的非最后层的输出结果存储至片内存储器中。
在一种可选的实施方式中,程序1010具体可以用于使得处理器1002执行以下操作:
针对于至少一个执行流分段中的任一执行流分段,对该执行流分段进行分片处理,以获得与该执行流分段对应的至少一个执行流分段分片;
根据所述多个执行流分段以及所述至少一个执行流分段对应的执行流分段分片,生成优化执行流;
其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。
在一种可选的实施方式中,程序1010具体可以用于使得处理器1002执行以下操作:
根据该执行流分段所对应的神经元数量以及片内存储器容量,确定该执行流分段所对应的分片数量;
根据所述分片数量,对该执行流分段进行分片处理。
在一种可选的实施方式中,程序1010具体可以用于使得处理器1002执行以下操作:
对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理,以生成与所述至少两个执行流分段对应的修正执行流分段;
则所述根据所述多个执行流分段生成优化执行流进一步包括:根据未进行合并处理的执行流分段以及所述修正执行流分段,生成优化执行流。
在一种可选的实施方式中,程序1010具体可以用于使得处理器1002执行以下操作:
根据所述至少两个执行流分段的神经元数量以及片内存储器容量,对所述多个执行流分段中相邻的至少两个执行流分段进行合并处理。
由此可见,本实施例通过对神经网络的初始执行流进行分段处理生成优化执行流,仅在执行流分段的起始及结束处对外部存储器进行读写操作,从而神经网络加速器能够基于该优化执行流进行神经网络运算,降低运算延迟,提升运算效率,节约带宽资源;并且,本实施例所提供的方法简单易行,适于大规模应用与实施。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(dsp)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。