神经网络的执行优化方法及装置
技术领域
本发明涉及计算机技术领域,具体涉及一种神经网络的执行优化方法及装置。
背景技术
随着科技及社会的不断进步,人工智能技术也取得了飞速的发展。其中,在人工智能领域,神经网络技术以其准确度高,适用范围广等特点被广泛应用。
目前,为提升神经网络的运算效率,申请公布号为CN 109784484A的中国发明专利申请公开了一种神经网络加速方法,其具体是由神经网络加速芯片在对神经网络当前层进行加速处理时,同时调度当前层的下一层的参数,从而提升神经网络的运算效率。
然而,发明人在实施过程中发现,现有技术中存在如下缺陷:CN109784484A所提供的技术方案仅能够减少相邻层之间的衔接调度时间,其对神经网络执行的优化程度较低,神经网络的加速效果较差。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的神经网络的执行优化方法及装置。
根据本发明的一个方面,提供了一种神经网络的执行优化方法,包括:
对待优化的神经网络进行解析,获得所述神经网络包含的网络层的原始执行顺序以及所述网络层的类型;
根据所述网络层的原始执行顺序以及所述网络层的类型,确定目标网络层;其中,所述目标网络层为能够并发执行的网络层;
根据所述网络层的原始执行顺序以及所述目标网络层,生成与所述神经网络对应的优化执行顺序,以供基于所述优化执行顺序执行神经网络运算;其中,所述优化执行顺序中所述目标网络层以并发方式执行。
可选的,所述根据所述网络层的原始执行顺序以及所述网络层的类型,确定目标网络层进一步包括:
根据所述网络层的原始执行顺序,获取原始串行执行的相邻的多个网络层;
根据所述网络层的类型,分别获取所述相邻的多个网络层映射的硬件指令;
基于所述相邻的多个网络层映射的硬件指令,确定所述多个网络层是否为目标网络层。
可选的,所述硬件指令包括:卷积关联计算指令以及向量计算指令;
其中,所述卷积关联计算指令用于与卷积关联的计算;所述向量计算指令用于向量计算。
可选的,所述基于所述相邻的多个网络层映射的硬件指令,确定所述多个网络层是否为目标网络层进一步包括:
若所述相邻的多个网络层映射的硬件指令分别为卷积关联计算指令以及向量计算指令,则确定所述多个网络层为目标网络层。
可选的,所述方法还包括:根据所述网络层的神经元结构,将所述原始执行顺序划分为多个执行流分段;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作;
则所述根据所述网络层的原始执行顺序以及所述目标网络层,生成与所述神经网络对应的优化执行顺序进一步包括:
根据所述网络层的原始执行顺序、所述目标网络层以及所述执行流分段,生成与所述神经网络对应的优化执行顺序。
可选的,所述方法还包括:通过对待优化的神经网络的解析,获得所述神经网络包含的网络层的结构参数;
则在所述生成优化执行顺序之后,所述方法还包括:根据所述优化执行顺序以及所述网络层的结构参数,生成参数配置文件。
可选的,所述方法还包括:
根据所述优化执行顺序以及所述参数配置文件生成优化执行文件,以供根据所述优化执行文件执行神经网络运算。
根据本发明的另一方面,提供了一种神经网络的执行优化装置,包括:
解析模块,适于对待优化的神经网络进行解析,获得所述神经网络包含的网络层的原始执行顺序以及所述网络层的类型;
并发确定模块,适于根据所述网络层的原始执行顺序以及所述网络层的类型,确定目标网络层;其中,所述目标网络层为能够并发执行的网络层;
生成模块,适于根据所述网络层的原始执行顺序以及所述目标网络层,生成与所述神经网络对应的优化执行顺序,以供基于所述优化执行顺序执行神经网络运算;其中,所述优化执行顺序中所述目标网络层以并发方式执行。
可选的,并发确定模块进一步根据所述网络层的原始执行顺序,获取原始串行执行的相邻的多个网络层;
根据所述网络层的类型,分别获取所述相邻的多个网络层映射的硬件指令;
基于所述相邻的多个网络层映射的硬件指令,确定所述多个网络层是否为目标网络层。
可选的,所述硬件指令包括:卷积关联计算指令以及向量计算指令;
其中,所述卷积关联计算指令用于与卷积关联的计算;所述向量计算指令用于向量计算。
可选的,所述并发确定模块进一步适于:
若所述相邻的多个网络层映射的硬件指令分别为卷积关联计算指令以及向量计算指令,则确定所述多个网络层为目标网络层。
可选的,所述装置还包括:分段优化模块,适于根据所述网络层的神经元结构,将所述原始执行顺序划分为多个执行流分段;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作;
则所述生成模块进一步适于:根据所述网络层的原始执行顺序、所述目标网络层以及所述执行流分段,生成与所述神经网络对应的优化执行顺序。
可选的,所述解析模块进一步适于:通过对待优化的神经网络的解析,获得所述神经网络包含的网络层的结构参数;
则所述装置还包括:配置文件生成模块,适于在所述生成优化执行顺序之后,根据所述优化执行顺序以及所述网络层的结构参数,生成参数配置文件。
可选的,所述装置还包括:优化执行文件生成模块,适于根据所述优化执行顺序以及所述参数配置文件生成优化执行文件,以供根据所述优化执行文件执行神经网络运算。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述神经网络的执行优化方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述神经网络的执行优化方法对应的操作。
根据本发明提供的神经网络的执行优化方法及装置,首先对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序以及网络层的类型;进一步地根据网络层的原始执行顺序以及网络层的类型,确定目标网络层;其中,目标网络层为能够并发执行的网络层;最终根据网络层的原始执行顺序以及目标网络层,生成与神经网络对应的优化执行顺序,以供基于优化执行顺序执行神经网络运算;其中,优化执行顺序中目标网络层以并发方式执行。本方案通过对神经网络的原始执行顺序进行优化,将原本串行执行的网络层以并发方式执行,从而在保障神经网络计算精度的基础上,提升神经网络的执行效率,实现对神经网络的加速;并且,本方案简单易行,适于大规模应用与实施。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例一提供的一种神经网络的执行优化方法的流程示意图;
图2示出了本发明提供的一种目标网络层确定方法的流程示意图;
图3示出了本发明实施例二提供的一种神经网络的执行优化方法的流程示意图;
图4示出了本发明实施例三提供的一种神经网络的执行优化装置的功能结构示意图;
图5示出了本发明实施例五提供的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
实施例一
图1示出了本发明实施例一提供的一种神经网络的执行优化方法的流程示意图。其中,本实施例所提供的神经网络的执行优化方法可以以软件模块的形式执行,也可以封装为预制函数供神经网络加速器进行调用,总之,本实施例对此不作限定。
如图1所示,该方法包括:
步骤S110:对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序以及网络层的类型。
本实施例中首先获取有待优化的神经网络,其中,本实施例对获取到的神经网络的具体类型不作限定。例如,该神经网络可以为CNN(Convolutional neural networks,卷积神经网络)、DN((Deconvolutional networks,反卷积神经网络)、以及RNN(Recurrentneural networks,循环神经网络)等等。
进一步地,本实施例对获取到的神经网络进行解析,通过对神经网络的解析能够获得该神经网络包含的各个网络层的相关信息。其中,本实施例对具体的解析方法不作限定,本领域技术人员可根据实际的业务需求选择相应的解析方法。
在具体的实施过程中,各个网络层的相关信息包含有:网络层的原始执行顺序以及网络层的类型。其中,网络层的原始执行顺序通常为各个网络层的串行执行顺序,即在现有的神经网络中其各网络层通常以串行的方式执行;而本实施例中各网络层的类型包括但不限于:卷积层(Conv层)、池化层(Pooling层)、BN层(BatchNorm层)、Eltwise层,Relu层,以及全连接层(FC层,fullyconnectedlayers)等等。
步骤S120:根据网络层的原始执行顺序以及网络层的类型,确定目标网络层;其中,目标网络层为能够并发执行的网络层。
不同于现有技术中神经网络中的各网络层以串行方式执行,本实施例具体通过步骤S120及步骤S130对神经网络中原有的执行过程进行优化,从而修改神经网络中网络层的执行顺序,以提升神经网络的执行效率。
在具体的优化过程中,首先通过本步骤确定出待进行优化的网络层,即从神经网络包含的网络层中确定出能够进行执行顺序调整的网络层,该待进行优化的网络层即为目标网络层。其中,该目标网络层在原始执行顺序中以串行方式执行,但其能够并发执行而不影响神经网络的计算结果。
在一种可选的实施方式中,本实施例具体可根据网络层与硬件指令的映射,快速准确地确定出目标网络层,如图2所示,其具体实施过程包括以下步骤:
步骤S121:根据网络层的原始执行顺序,获取原始串行执行的相邻的多个网络层。在实际的实施过程中,可依次获取串行执行的相邻的两个网络层,并通过后续步骤判断该串行的相邻的两个网络层是否为能够并发执行的网络层,即判断该两个网络层是否为目标网络层。
步骤S122:根据网络层的类型,分别获取相邻的多个网络层映射的硬件指令。为便于快速地获取到网络层映射的硬件指令,本实施例可预先生成网络层与硬件指令的映射表。其中,硬件指令可以包括:卷积关联计算指令(简称CME指令)以及向量计算指令(简称VE指令)、和/或DMA指令等。该CME指令一般用于与卷积关联的计算,如卷积计算、卷积加速及矩阵乘法操作,VE指令一般用于向量操作,而DMA指令一般用于数据读写操作。其中,在该映射表中,与CME指令映射的网络层包括以下网络层中的至少一种:卷积层、全连接层和/或BN层以及其他可以和卷积操作共享硬件结构的操作对应的网络层等等;,与VE指令映射的网络层包括以下网络层中的至少一种:池化层、Eltwise层、以及Relu层等向量操作对应的网络层。
步骤S123:基于该相邻的多个网络层映射的硬件指令,确定该多个网络层是否为目标网络层。在具体的实施过程中,若相邻的多个网络层映射的硬件指令分别为CME指令以及VE指令,则确定该多个网络层为目标网络层。例如,串行执行且相邻的两个网络层分别为卷积层及pooling层,而卷积层与CME指令具有映射关系,pooling层与VE指令具有映射关系,则确定该卷积层和该pooling层能够并发执行,即该卷积层与该pooling层为目标网络层。
步骤S130:根据网络层的原始执行顺序以及目标网络层,生成与神经网络对应的优化执行顺序,以供基于优化执行顺序执行神经网络运算;其中,优化执行顺序中目标网络层以并发方式执行。
具体地,根据步骤S120中确定出的目标网络层,对神经网络的原始执行顺序进行调整,即将原始执行顺序中串行执行的目标网络层修改为并发执行,从而生成优化执行顺序,以供基于优化执行顺序执行神经网络运算。由于该优化执行顺序中目标网络层以并发执行的方式执行,从而大幅提升了神经网络的运算效率,并保障了神经网络的运算精度。
由此可见,本实施例首先对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序以及网络层的类型;进一步地根据网络层的原始执行顺序以及网络层的类型,确定目标网络层;其中,目标网络层为能够并发执行的网络层;最终根据网络层的原始执行顺序以及目标网络层,生成与神经网络对应的优化执行顺序,以供基于优化执行顺序执行神经网络运算;其中,优化执行顺序中目标网络层以并发方式执行。
本方案通过对神经网络的原始执行顺序进行优化,将原本串行执行的网络层以并发方式执行,从而在保障神经网络计算精度的基础上,提升神经网络的执行效率,实现对神经网络的加速;并且,本方案简单易行,适于大规模应用与实施。
实施例二
图3示出了本发明实施例二提供的一种神经网络的执行优化方法的流程示意图。其中,本实施例所提供的神经网络的执行优化方法是针对于实施例一中方法的进一步优化,以便全方位地对神经网络的执行进行优化,从而进一步提升神经网络的执行效率。
如图3所示,该方法包括:
步骤S310:对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序、网络层的类型以及网络层的结构参数。
本实施例中,通过对待优化的神经网络的解析,能够获得关于神经网络包含的各个网络层的相关信息。该相关信息包括:网络层的原始执行顺序、网络层的类型以及网络层的结构参数。
其中,本实施例对解析出的网络层的具体结构参数不作限定。例如,卷积层的结构参数可以包含有:特征图参数(如输入特征图大小和/或输出特征图大小)、通道数(如输入通道数和/或输出通道数)、和/或滤波器参数(如滤波器窗口大小、步长和/或分组数量);池化层的结构参数可以包含有:特征图参数(如输入特征图大小和/或输出特征图大小)、通道数(如输入通道数和/或输出通道数)、和/或滤波器参数(如滤波器窗口大小、步长)和/或池化方法(如max pooling和/或average pooling)等;BN层的结构参数可以包含有:特征图参数(如输入特征图大小和/或输出特征图大小)、通道数(如输入通道数和/或输出通道数)、和/或均值及方差等;而Eltwise层,Relu层以及全连接层的结构参数可以包含有:特征图参数(如输入特征图大小和/或输出特征图大小)、和/或通道数(如输入通道数和/或输出通道数)等。其中,根据网络层的结构参数能够获得网络层的神经元结构,网络层的神经元结构与该网络层的特征图结构相对应。
步骤S320:根据网络层的原始执行顺序以及网络层的类型,确定目标网络层,并生成并发执行优化信息。
其中,根据网络层的原始执行顺序以及网络层的类型,确定目标网络层的具体过程可参照实施例一中相应部分的描述,本步骤在此不做赘述。
在确定目标网络层之后,可进一步基于该目标网络层生成并发执行优化信息,该并发执行优化信息具体可以为基于目标网络层的并发执行策略。
步骤S330:根据网络层的神经元结构,将原始执行顺序划分为多个执行流分段,并生成分段执行优化信息;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作。
为了降低对外部存储器的访存,从而进一步提升神经网络的执行效率,本实施例除了对原始执行顺序进行并发优化之外,还进一步地对神经网络进行分段优化。
在具体的实施过程中,根据网络层的神经元结构,将原始执行顺序划分为多个执行流分段。具体是将相邻的神经元结构相同的层聚合为一个执行流分段。其中,本步骤所述的层具体为卷积层与位于卷积层后的运算层,该运算层包括线性运算层或非线性运算层(如BN层或relu层)的组合。
划分的执行流分段在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作,而在执行流分段的内部不涉及外部存储器的读写操作。即使执行流分段包含多层,在执行过程中,具体是将该执行流分段中的非最后层的输出结果存储至片内存储器(如SRAM)中,即将该执行流分段中的中间处理结果存储至片内存储器中,从而能够大幅降低对外部存储器的访存,提升神经网络的执行效率。
可选的,在实际的实施过程中,由于片内存储器容量的限制,无法将每层计算结果全部保存至片内存储器中,故此,本实施例可针对于至少一个执行流分段进行分片处理。通过对该执行流分段进行分片处理,能够获得与该执行流分段对应的至少一个执行流分段分片,其中,在执行过程中,仅在执行流分段分片的起始及结束处对外部存储器进行读写操作。具体地,当执行流分段包含多层时,分别对该多层中的每层进行分片处理,以获得与每层对应的层分片,并从每层中获取一个层分片组合构成该执行流分段的一个执行流分段分片。其中,该执行流分段所对应的执行流分段分片的数目,与该执行流分段包含的各层的层分片数目相同。
进一步可选的,在具体的分片处理过程中,可根据该执行流分段所对应的神经元数量以及片内存储器容量,确定执行流分段所对应的分片数量;进而根据分片数量,对该执行流分段进行分片处理。其中,每个执行流分段的分片所需空间小于或等于片内存储器容量。
其中,本实施例对步骤S320及步骤S330的执行顺序不做限定,两者可依次顺序执行,如先确定出神经网络包含的网络层中能够并发执行的网络层,从而对原始执行顺序进行并行优化,而后基于并发执行优化结果进行分段优化;又或者,可先对初始执行顺序进行分段优化,从而获得各个分段执行流,再针对于各个分段执行流进行并行优化;还可以使步骤S320与步骤S330并发执行,从而提升本方法的整体执行效率。
步骤S340:根据并发执行优化信息以及分段执行优化信息,生成优化执行顺序,以供基于优化执行顺序执行神经网络运算。
根据步骤S320中生成的并发执行优化信息以及步骤S330中生成的分段执行优化信息,可对原始执行顺序进行优化,从而获得优化执行顺序。即根据网络层的原始执行顺序、目标网络层以及执行流分段,生成与神经网络对应的优化执行顺序。在该优化执行顺序中,目标网络层以并发方式执行,并且仅在每个执行流分段的起始及结束位置处对外部存储器进行读写操作。
可选的,在实际的实施过程中,为了便于本方法的实施及调用,本实施例可根据优化执行顺序以及网络层的结构参数,生成参数配置文件。在该参数配置文件中,通常包含有硬件指令对应的相关参数。如CME指令的配置参数可以包含:输入特征图大小、输出特征图大小,输入地址、输出地址、输入通道数、输出通道数,和/或参数地址等;而VE指令的配置参数可以包括:输入特征图大小、输出特征图大小,输入地址、输出地址、输入通道数、和/或输出通道数等;DMA指令的配置参数可以包括:读取或写入地址、数据大小等。
进一步地根据优化执行顺序以及参数配置文件生成优化执行文件,以供根据优化执行文件执行神经网络运算。
由此可见,本实施例能够对待优化的神经网络进行解析,获得神经网络包含的网络层的相关信息,进而基于该相关信息确定出并发执行而不影响神经网络运算结果的目标网络层,继而基于该目标网络层生成并发优化信息,从而通过对神经网络的原始执行顺序进行优化,将原本串行执行的网络层以并发方式执行,从而在保障神经网络计算精度的基础上,提升神经网络的执行效率,实现对神经网络的加速。
而且,本实施例还通过对神经网络的初始执行流进行分段处理,仅在执行流分段的起始及结束处对外部存储器进行读写操作,而执行流分段中的中间处理结果存储至片内存储器中,从而大幅降低对外部存储器的访存,降低运算延迟,提升运算效率,节约带宽资源。
此外,本实施例所提供的方法能够以函数或执行文件的方式供神经网络加速器等利用,实施过程简单易行,适于大规模应用与实施。
实施例三
图4示出了本发明实施例三提供的一种神经网络的执行优化装置的功能结构示意图。如图4所示,该装置包括:解析模块41、并发确定模块42以及生成模块43。
其中,解析模块41,适于对待优化的神经网络进行解析,获得所述神经网络包含的网络层的原始执行顺序以及所述网络层的类型;
并发确定模块42,适于根据所述网络层的原始执行顺序以及所述网络层的类型,确定目标网络层;其中,所述目标网络层为能够并发执行的网络层;
生成模块43,适于根据所述网络层的原始执行顺序以及所述目标网络层,生成与所述神经网络对应的优化执行顺序,以供基于所述优化执行顺序执行神经网络运算;其中,所述优化执行顺序中所述目标网络层以并发方式执行。
在一种可选的实施方式中,并发确定模块进一步根据所述网络层的原始执行顺序,获取原始串行执行的相邻的多个网络层;
根据所述网络层的类型,分别获取所述相邻的多个网络层映射的硬件指令;
基于所述相邻的多个网络层映射的硬件指令,确定所述多个网络层是否为目标网络层。
在一种可选的实施方式中,所述硬件指令包括:卷积关联计算指令以及向量计算指令;
其中,所述卷积关联计算指令用于与卷积关联的计算;所述向量计算指令用于向量计算。
在一种可选的实施方式中,所述并发确定模块进一步适于:
若所述相邻的多个网络层映射的硬件指令分别为卷积关联计算指令以及向量计算指令,则确定所述多个网络层为目标网络层。
在一种可选的实施方式中,所述装置还包括:分段优化模块(图中未示出),适于根据所述网络层的神经元结构,将所述原始执行顺序划分为多个执行流分段;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作;
则所述生成模块进一步适于:根据所述网络层的原始执行顺序、所述目标网络层以及所述执行流分段,生成与所述神经网络对应的优化执行顺序。
在一种可选的实施方式中,所述解析模块进一步适于:通过对待优化的神经网络的解析,获得所述神经网络包含的网络层的结构参数;
则所述装置还包括:配置文件生成模块(图中未示出),适于在所述生成优化执行顺序之后,根据所述优化执行顺序以及所述网络层的结构参数,生成参数配置文件。
在一种可选的实施方式中,所述装置还包括:优化执行文件生成模块(图中未示出),适于根据所述优化执行顺序以及所述参数配置文件生成优化执行文件,以供根据所述优化执行文件执行神经网络运算。
其中,本实施例中各模块的具体执行过程可参照实施例一和/或实施例二中相应步骤的描述,本实施例在此不做赘述。
由此可见,本实施例首先对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序以及网络层的类型;进一步地根据网络层的原始执行顺序以及网络层的类型,确定目标网络层;其中,目标网络层为能够并发执行的网络层;最终根据网络层的原始执行顺序以及目标网络层,生成与神经网络对应的优化执行顺序,以供基于优化执行顺序执行神经网络运算;其中,优化执行顺序中目标网络层以并发方式执行。本方案通过对神经网络的原始执行顺序进行优化,将原本串行执行的网络层以并发方式执行,从而在保障神经网络计算精度的基础上,提升神经网络的执行效率,实现对神经网络的加速;并且,本方案简单易行,适于大规模应用与实施。
实施例四
本发明实施例四提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的方法。
可执行指令具体可以用于使得处理器执行以下操作:
对待优化的神经网络进行解析,获得所述神经网络包含的网络层的原始执行顺序以及所述网络层的类型;
根据所述网络层的原始执行顺序以及所述网络层的类型,确定目标网络层;其中,所述目标网络层为能够并发执行的网络层;
根据所述网络层的原始执行顺序以及所述目标网络层,生成与所述神经网络对应的优化执行顺序,以供基于所述优化执行顺序执行神经网络运算;其中,所述优化执行顺序中所述目标网络层以并发方式执行。
在一种可选的方式中,可执行指令具体可以用于使得处理器执行以下操作:
根据所述网络层的原始执行顺序,获取原始串行执行的相邻的多个网络层;
根据所述网络层的类型,分别获取所述相邻的多个网络层映射的硬件指令;
基于所述相邻的多个网络层映射的硬件指令,确定所述多个网络层是否为目标网络层。
在一种可选的方式中,所述硬件指令包括:卷积关联计算指令以及向量计算指令;
其中,所述卷积关联计算指令用于与卷积关联的计算;所述向量计算指令用于向量计算。
在一种可选的方式中,可执行指令具体可以用于使得处理器执行以下操作:
若所述相邻的多个网络层映射的硬件指令分别为卷积关联计算指令以及向量计算指令,则确定所述多个网络层为目标网络层。
在一种可选的方式中,可执行指令具体可以用于使得处理器执行以下操作:
根据所述网络层的神经元结构,将所述原始执行顺序划分为多个执行流分段;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作;
根据所述网络层的原始执行顺序、所述目标网络层以及所述执行流分段,生成与所述神经网络对应的优化执行顺序。
在一种可选的方式中,可执行指令具体可以用于使得处理器执行以下操作:
通过对待优化的神经网络的解析,获得所述神经网络包含的网络层的结构参数;
则在所述生成优化执行顺序之后,根据所述优化执行顺序以及所述网络层的结构参数,生成参数配置文件。
在一种可选的方式中,可执行指令具体可以用于使得处理器执行以下操作:
根据所述优化执行顺序以及所述参数配置文件生成优化执行文件,以供根据所述优化执行文件执行神经网络运算。
由此可见,本实施例首先对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序以及网络层的类型;进一步地根据网络层的原始执行顺序以及网络层的类型,确定目标网络层;其中,目标网络层为能够并发执行的网络层;最终根据网络层的原始执行顺序以及目标网络层,生成与神经网络对应的优化执行顺序,以供基于优化执行顺序执行神经网络运算;其中,优化执行顺序中目标网络层以并发方式执行。本方案通过对神经网络的原始执行顺序进行优化,将原本串行执行的网络层以并发方式执行,从而在保障神经网络计算精度的基础上,提升神经网络的执行效率,实现对神经网络的加速;并且,本方案简单易行,适于大规模应用与实施。
实施例五
图5示出了本发明实施例五提供的计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图5所示,该计算设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。
其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。处理器502,用于执行程序510,具体可以执行上述任意方法实施例中的相关步骤。
具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。
处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:
对待优化的神经网络进行解析,获得所述神经网络包含的网络层的原始执行顺序以及所述网络层的类型;
根据所述网络层的原始执行顺序以及所述网络层的类型,确定目标网络层;其中,所述目标网络层为能够并发执行的网络层;
根据所述网络层的原始执行顺序以及所述目标网络层,生成与所述神经网络对应的优化执行顺序,以供基于所述优化执行顺序执行神经网络运算;其中,所述优化执行顺序中所述目标网络层以并发方式执行。
在一种可选的方式中,程序510具体可以用于使得处理器502执行以下操作:根据所述网络层的原始执行顺序,获取原始串行执行的相邻的多个网络层;
根据所述网络层的类型,分别获取所述相邻的多个网络层映射的硬件指令;
基于所述相邻的多个网络层映射的硬件指令,确定所述多个网络层是否为目标网络层。
在一种可选的方式中,所述硬件指令包括:卷积关联计算指令以及向量计算指令;
其中,所述卷积关联计算指令用于与卷积关联的计算;所述向量计算指令用于向量计算。
在一种可选的方式中,程序510具体可以用于使得处理器502执行以下操作:若所述相邻的多个网络层映射的硬件指令分别为卷积关联计算指令以及向量计算指令,则确定所述多个网络层为目标网络层。
在一种可选的方式中,程序510具体可以用于使得处理器502执行以下操作:根据所述网络层的神经元结构,将所述原始执行顺序划分为多个执行流分段;其中,在执行过程中,仅在执行流分段的起始及结束处对外部存储器进行读写操作;
根据所述网络层的原始执行顺序、所述目标网络层以及所述执行流分段,生成与所述神经网络对应的优化执行顺序。
在一种可选的方式中,程序510具体可以用于使得处理器502执行以下操作:通过对待优化的神经网络的解析,获得所述神经网络包含的网络层的结构参数;
则在所述生成优化执行顺序之后,根据所述优化执行顺序以及所述网络层的结构参数,生成参数配置文件。
在一种可选的方式中,程序510具体可以用于使得处理器502执行以下操作:根据所述优化执行顺序以及所述参数配置文件生成优化执行文件,以供根据所述优化执行文件执行神经网络运算。
由此可见,本实施例首先对待优化的神经网络进行解析,获得神经网络包含的网络层的原始执行顺序以及网络层的类型;进一步地根据网络层的原始执行顺序以及网络层的类型,确定目标网络层;其中,目标网络层为能够并发执行的网络层;最终根据网络层的原始执行顺序以及目标网络层,生成与神经网络对应的优化执行顺序,以供基于优化执行顺序执行神经网络运算;其中,优化执行顺序中目标网络层以并发方式执行。本方案通过对神经网络的原始执行顺序进行优化,将原本串行执行的网络层以并发方式执行,从而在保障神经网络计算精度的基础上,提升神经网络的执行效率,实现对神经网络的加速;并且,本方案简单易行,适于大规模应用与实施。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。