CN109919315A - 一种神经网络的前向推理方法、装置、设备及存储介质 - Google Patents
一种神经网络的前向推理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN109919315A CN109919315A CN201910188467.6A CN201910188467A CN109919315A CN 109919315 A CN109919315 A CN 109919315A CN 201910188467 A CN201910188467 A CN 201910188467A CN 109919315 A CN109919315 A CN 109919315A
- Authority
- CN
- China
- Prior art keywords
- network
- target nerve
- sub
- nerve network
- inference
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
- Feedback Control In General (AREA)
Abstract
本申请提供了一种神经网络的前向推理方法、装置、设备及存储介质,其中,方法包括:将目标神经网络划分为多个子网络,任一子网络包括目标神经网络的至少一个隐层,在推理平台的硬件设备上创建多个子网络分别对应的推理实例和推理引擎,基于多个子网络分别对应的推理实例和推理引擎,对目标神经网络进行前向推理。由于一个推理引擎只负责神经网络的一部分隐层,同一时刻可以有多个数据输入在不同的推理引擎内并行执行,因此,本申请提供的前向推理方法具有较高的推理效率和数据吞吐量,且推理平台的硬件资源得到充分利用。
Description
技术领域
本申请涉及并行计算技术领域,更具体地说,涉及一种神经网络的前向推理方法、装置、设备及存储介质。
背景技术
神经网络的前向推理指的是,针对待推理神经网络在推理平台上创建推理实例和推理引擎,推理引擎基于神经网络输入层的输入数据和推理实例对神经网络的各层进行运算。
目前的推理方案为:针对待推理神经网络创建一个推理实例,并在该推理实例内创建一个推理引擎,推理引擎接收输入数据,基于推理实例对整个神经网络的各层按顺序进行运算,即,一个输入数据在不同层上的操作严格串行,并且,不同输入之间也严格串行,即后一输入数据必须等前一输入数据的输出结果获取后才能运算。
由上述现有的推理方案可知,随着神经网络层数的加深,完成一条数据的输入到输出的计算时间会越来越长,整体的吞吐量越来越小。同时,随着芯片技术的不断发展,各种适用于神经网络的硬件设备的计算能力均得到极大提升,而现有的推理方案使得硬件设备的利用率很低,严重浪费了硬件资源。
发明内容
有鉴于此,本申请提供了一种神经网络的前向推理方法、装置、设备及可读存储介质,用以解决现有的推理方案耗时长、效率低,且硬件资源利用率低的问题,其技术方案如下:
一种神经网络的前向推理方法,包括:
将目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层;
在推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎;
基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
可选的,所述将目标神经网络划分为多个子网络,包括:
获取所述推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间;
基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络。
其中,所述推理平台的硬件设备信息包括以下信息中的一种或多种:
硬件设备的个数、硬件设备的计算能力、硬件设备的存储容量、硬件设备间的传输带宽。
可选的,获取所述目标神经网络的计算量和所需的存储空间,包括:
根据所述目标神经网络的网络参数,构建所述目标神经网络的计算图;
根据所述目标神经网络的计算图,确定所述目标神经网络各层的计算量和所需的存储空间;
通过所述目标神经网络各层的计算量和所需的存储空间,确定整个所述目标神经网络的计算量和所需的存储空间。
可选的,所述基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络,包括:
基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,其中,所述并行模式包括单设备并行模式和多设备并行模式,在所述单设备并行模式下,所述目标神经网络的前向推理基于单个设备实现,在所述多设备并行模式下,所述目标神经网络的前向推理基于多个设备实现;
基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络。
可选的,所述基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,包括:
若整个所述目标神经网络的计算量大于单个设备的计算能力,和/或,整个所述目标神经网络所需的存储空间大于单个设备的存储容量,则确定适合所述目标神经网络的并行模式为所述多设备并行模式;
若整个所述目标神经网络的计算量小于或等于所述单个设备的计算能力,并且,整个所述目标神经网络所需的存储空间小于或等于所述单个设备的存储容量,则基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式。
可选的,所述基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式,包括:
当所述用户配置的并行模式为所述单设备并行模式时,确定适合所述目标神经网络的并行模式为所述单设备并行模式;
当所述用户配置的并行模式为所述多设备并行模式时,若设备间的传输时间大于预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述单设备并行模式,若所述设备间传输时间小于或等于所述预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述多设备并行模式。
可选的,所述基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络,包括:
若适合所述目标神经网络的并行模式为所述多设备并行模式,则基于所述硬件设备的个数获得子网络的划分个数,基于所述子网络的划分个数对所述目标神经网络进行划分;
若适合所述目标神经网络的并行模式为所述单设备并行模式,基于预先设定的子网络划分个数对所述目标神经网络进行划分。
可选的,所述基于所述子网络的划分个数对所述目标神经网络进行划分,包括:
基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分;
其中,所述单设备负责的理论计算量通过整个所述目标神经网络的计算量和所述子网络的划分个数确定,所述设备间传输的最大数据量通过预先设置的子网络的最大执行时间和设备间的传输带宽确定。
可选的,所述基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分,包括:
从所述目标神经网络的输入层开始依次向后遍历:依次叠加各隐层的计算量,并在当前叠加得到的计算量接近所述单设备负责的理论计算量时,获得进行叠加的多个相邻隐层组成的子网络作为候选子网络;
若所述候选子网络的输出数据量小于或等于所述设备间传输的最大数据量,则将所述候选子网络作为划分得到的一个子网络;若所述候选子网络的输出数量大于所述设备间传输的最大数据量,则从所述候选子网络中由后向前逐个移除隐层,直至移除后的子网络的输出数据量小于或等于所述设备间传输的最大数据量,移除隐层后的子网络作为划分得到的一个子网络;
继续向后遍历,直至获得所有的子网络,其中,每获得一个子网络后,重新对该子网络后的隐层的计算量进行叠加。
可选的,所述基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理,包括:
根据所述多个子网络之间的依赖关系,确定所述多个子网络分别对应的推理引擎之间的依赖关系;
按顺序向所述多个子网络分别对应的推理引擎输入数据,以使每个推理引擎基于输入数据和对应的推理实例对其对应的子网络进行运算。
一种神经网络的前向推理装置,包括:网络处理模块、实例和引擎创建模块和推理模块;
所述网络处理模块,用于将所述目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层;
所述实例和引擎创建模块,用于在推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎;
所述推理模块,用于基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
可选的,所述网络处理模块包括:信息获取模块和子网络划分模块;
所述信息获取模块,获取所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间;
所述子网络划分模块,用于基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络。
其中,所述推理平台的硬件设备信息包括以下信息中的一种或多种:
硬件设备的个数、硬件设备的计算能力、硬件设备的存储容量、硬件设备间的传输带宽。
可选的,所述信息获取模块包括:计算图构建子模块,以及计算量和存储空间确定子模块;
所述计算图构建子模块,用于根据所述目标神经网络的网络参数,构建所述目标神经网络的计算图;
所述计算量和存储空间确定子模块,用于根据所述目标神经网络的计算图,确定所述目标神经网络各层的计算量和所需的存储空间,通过所述目标神经网络各层的计算量和所需的存储空间,确定整个所述目标神经网络的计算量和所需的存储空间。
可选的,所述子网络划分模块包括:并行模式确定子模块和子网络划分子模块;
所述并行模式确定子模块,用于基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,其中,所述并行模式包括单设备并行模式和多设备并行模式,在所述单设备并行模式下,所述目标神经网络的前向推理基于单个设备实现,在所述多设备并行模式下,所述目标神经网络的前向推理基于多个设备实现;
所述子网络划分子模块,用于基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络。
可选的,所述并行模式确定子模块包括:第一确定子模块和第二确定子模块;
所述第一确定子模块,用于当整个所述目标神经网络的计算量大于单个设备的计算能力,和/或,整个所述目标神经网络所需的存储空间大于单个设备的存储容量时,确定适合所述目标神经网络的并行模式为所述多设备并行模式;
所述第二确定子模块,用于当整个所述目标神经网络的计算量小于或等于所述单个设备的计算能力,并且,整个所述目标神经网络所需的存储空间小于或等于所述单个设备的存储容量时,基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式。
可选的,所述第二确定子模块,具体用于当所述用户配置的并行模式为所述单设备并行模式时,确定适合所述目标神经网络的并行模式为所述单设备并行模式;当所述用户配置的并行模式为所述多设备并行模式时,若设备间的传输时间大于预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述单设备并行模式,若所述设备间传输时间小于或等于所述预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述多设备并行模式。
可选的,所述子网络划分子模块包括:第一划分子模块和第二划分子模块;
所述第一划分子模块,用于当适合所述目标神经网络的并行模式为所述多设备并行模式时,基于所述硬件设备的个数获得子网络的划分个数,并基于所述子网络的划分个数对所述目标神经网络进行划分;
所述第二划分子模块,用于当适合所述目标神经网络的并行模式为所述单设备并行模式时,基于预先设定的子网络划分个数对所述目标神经网络进行划分。
可选的,所述第一划分子模块,具体用于基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分;
其中,所述单设备负责的理论计算量通过整个所述目标神经网络的计算量和所述子网络的划分个数确定,所述设备间传输的最大数据量通过预先设置的子网络的最大执行时间和设备间的传输带宽确定。
可选的,所述第一划分子模块,具体用于从所述目标神经网络的输入层开始依次向后遍历:依次叠加各隐层的计算量,并在当前叠加得到的计算量接近所述单设备负责的理论计算量时,获得进行叠加的多个相邻隐层组成的子网络作为候选子网络;若所述候选子网络的输出数据量小于或等于所述设备间传输的最大数据量,则将所述候选子网络作为划分得到的一个子网络;若所述候选子网络的输出数量大于所述设备间传输的最大数据量,则从所述候选子网络中由后向前逐个移除隐层,直至移除后的子网络的输出数据量小于或等于所述设备间传输的最大数据量,移除隐层后的子网络作为划分得到的一个子网络;继续向后遍历,直至获得所有的子网络,其中,每获得一个子网络后,重新对该子网络后的隐层的计算量进行叠加。
可选的,所述推理模块,具体用于根据所述多个子网络之间的依赖关系,确定所述多个子网络分别对应的推理引擎之间的依赖关系;按顺序向所述多个子网络分别对应的推理引擎输入数据,以使每个推理引擎基于输入数据和对应的推理实例对其对应的子网络进行运算。
一种神经网络的前向推理设备,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现所述神经网络的前向推理方法的各个步骤。
一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现所述神经网络的前向推理方法的各个步骤。
从上述的技术方案可以看出,本申请提供的神经网络的前向推理方法,首先将目标神经网络划分为多个子网络,然后在推理平台上为多个子网络分别创建推理实例和推理引擎,最后基于多个子网络分别对应的推理实例和推理引擎,对目标神经网络进行前向推理,由于推理引擎有多个,且一个推理引擎只负责目标神经网络的一部分隐层,这使得同一时刻可以有多个数据输入至不同的推理引擎内并行执行对应子网络的运算,与现有的推理方案相比,由于同一时刻有多个推理引擎基于多个输入数据同时进行运算,因此,硬件资源得到充分利用,即提高了硬件资源的利用率,同时,提高了推理效率,提升了数据吞吐量,且在存储资源不变的前提下,节省了存储空间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为包含一个推理实例的前向推理过程的示意图;
图2为本申请实施例提供的包含多个推理实例的前向推理过程的示意图;
图3为本申请实施例提供的神经网络的前向推理方法的流程示意图;
图4为本申请实施例提供的获取目标神经网络的计算量和所需的存储空间的流程示意图;
图5为本申请实施例提供的基于推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间,将目标神经网络划分为多个子网络的流程示意图;
图6为本申请实施例提供的基于推理平台的硬件设备信息、目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合目标神经网络的并行模式的一种可选的具体实现方式的流程示意图;
图7为本申请实施例提供的对神经网络进行子网络划分的一示例的示意图;
图8为本申请实施例提供的多设备并行模式下创建推理引擎的示意图;
图9为本申请实施例提供的神经网络的推理过程的一示例的示意图;
图10本申请实施例提供的神经网络的前向推理装置的结构图;
图11本申请实施例提供的神经网络的前向推理设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
发明人在实现本发明创造的过程中发现:现有的推理方案针对整个神经网络创建一个推理实例和一个推理引擎,即现有的推理方案基于一个推理实例和一个推理引擎实现整个神经网络的推理,具体的:
首先,根据待推理神经网络的参数构建计算图,然后依据计算图确定待推理神经网络整体的执行顺序,接着,基于待推理神经网络整体的执行顺序和推理实例将不同隐层的执行函数依次送入推理引擎执行队列等待执行,当输入数据到来后,推理引擎根据其内部执行队列中执行函数的顺序进行各隐层的运算,即,整个神经网络不同隐层之间串行执行,并且,推理引擎只有在针对一输入数据将各隐层的运算全部执行完后,才会接收下一个输入数据,也就是说,现有的推理方案中,单个输入的前向推理在推理引擎的执行队列内部严格串行,并且,不同输入数据之间也严格串行。
如图1所示,针对有N个隐层的神经网络,在推理平台创建一推理实例,输入数据X进入网络后,顺序经过N个隐层的运算,最后获得输出Y,整个网络的执行时间T=T1+T2+…+TN,其中,Ti表示第i个隐层的执行时间,对于深度神经网络,隐层个数越多,一次前向推理所需的时间越长,而任一时刻只有一个隐层在执行,其它层全部空闲,这导致基于单实例进行前向推理时,计算吞吐量有限。其中,吞吐量是指单位时间内处理的输入数据的个数。
随着芯片技术的不断发展,各种适用于深度学习的硬件设备的计算能力均得到极大提升,以英伟达的GPU(Graphics Processing Unit,图形处理器)为例,M40单精度计算能力达到7Tflops(即每秒浮点运算次数达到7T),P40达到12Tflops(即每秒浮点运算次数达到12T),V100达到15Tflops(即每秒浮点运算次数达到15T),而新添加的TensorCore理论最高可达120Tflops,现有的前向推理方案中,单个推理引擎在同一时刻只执行单个隐层的运算,而单个隐层的计算量很难使GPU满载,即现有的前向推理方案使得硬件设备的利用率很低,严重浪费了硬件资源。
为了提高前向推理的速度,提高硬件设备的利用率,本案发明人进行了深入研究:
起初的思路是:为了充分利用硬件计算资源,创建多个推理实例,一个推理实例负责一个输入数据,其基于该输入数据对整个网络进行运算,在进行前行推理时,开启多个推理实例同时进行推理,如图2所示,同时开启4个推理实例进行推理。
发明人经研究发现:虽然上述思路在一定程度上能够发挥硬件设备强大的计算能力,但每个实例内部仍然是串行的关系(如图2所示,实例0~实例4内部均是串行关系,当实例0中的输入数据X0进入网络后,顺序经过N个隐层的运算,最后获得输出Y0,获得输出Y0后,输入数据X4才能进入该实例进行运算),并没有得到改善,且对于每个推理实例需要开辟一份存储资源,当神经网络的层数很多时,整个网络的存储需求可能达到GB的级别,存储需求的增加将导致硬件价格提高,进而导致前向推理的成本提高。
鉴于上述问题,本案发明人进一步进行了深入研究,最终提出了一种效果较好的前向推理方案。接下来通过下述实施例对本申请提供的神经网络的前向推理方法进行介绍。
请参阅图3,示出了本申请实施例提供的神经网络的前向推理方法的流程示意图,该方法可以包括:
步骤S301:将目标神经网络划分为多个子网络。
其中,目标神经网络为待推理的神经网络,可以理解的是,目标神经网络一般包括多个隐层,每个隐层之间按顺序执行运算,对于划分得到的多个子网络而言,每个子网络可以包括一个隐层,也可以包括多个连续的相邻隐层,多个子网络之间具有先后依赖关系。
具体的,将目标神经网络划分为多个子网络的过程可以包括:
步骤S3011、获取推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间。
其中,推理平台可以但不限定为GPU服务器、TPU(Tensor Processing Unit,张量处理单元)服务器等,推理平台的硬件设备可以为具有存储能力和计算能力的设备,比如显卡。
其中,硬件设备信息可以包括硬件设备的个数、硬件设备的计算能力、硬件设备的存储容量、硬件设备间的传输带宽中的一种或多种,优选为同时包括上述四种信息。在一种可能的实现方式,可在启动推理框架时,调用内部函数获取推理平台的硬件设备信息。
示例性的,推理平台为4卡P40显卡的GPU(Graphics Processing Unit,图形处理器)服务器,可调用cuda函数接口获取硬件设备信息如下:硬件设备个数为4,硬件设备的计算能力为6.2,查表获取单精度吞吐12Tflops即每秒浮点运算次数达到12T,每个硬件设备的存储容量为24G,PCIE接口设备间带宽为10G/s或者nvlink带宽达100G/s。
其中,目标神经网络的计算量指的是整个目标神经网络的计算量,其可通过目标神经网络各隐层的计算量确定,目标神经网络所需的存储空间指的是对整个神经网络的各隐层进行运算所需的总存储空间,其可通过目标神经网络各隐层所需的存储空间确定。获取目标神经网络的计算量和所需的存储空间的具体过程可参见后续实施例的说明。
步骤S3012、基于推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间,将目标神经网络划分为多个子网络。
需要说明的是,推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间决定了目标神经网络的划分个数以及在基于子网络的划分个数对目标神经网络进行划分时每个子网络所包含的隐层,基于此,本实施例将推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间作为对目标神经网络进行子网络划分的划分依据。
步骤S302:在推理平台的硬件设备上创建多个子网络分别对应的推理实例和推理引擎。
具体地,将目标神经网络划分为多个子网络之后,需要为每个子网络创建一个推理实例以及一个推理引擎,其中,推理实例负责其对应的子网络中各隐层的运算,而推理引擎负责接收输入数据,基于输入数据和对应的推理实例完成对应子网络的运算。
步骤S303:基于多个子网络分别对应的推理实例和推理引擎,对目标神经网络进行前向推理。
由于目标神经网络划分为多个子网络,每个子网络对应一推理引擎和推理实例,因此,一个推理引擎只负责一个子网络(即部分隐层),这使得同一时刻可以有多个输入数据输入至多个不同的推理引擎,即同一时刻有多个推理引擎基于输入数据和对应的推理实例进行并行运算。
本申请实施例提供的神经网络的前向推理方法,首先将目标神经网络划分为多个子网络,然后为多个子网络分别创建推理实例和推理引擎,最后基于多个子网络分别对应的推理实例和推理引擎,对目标神经网络进行前向推理,由于推理引擎有多个,且一个推理引擎只负责目标神经网络的一部分隐层,这使得同一时刻可以有多个数据输入至不同的推理引擎内并行执行对应子网络的运算,与现有的推理方案相比,由于同一时刻有多个推理引擎基于多个输入数据同时进行运算,因此,硬件资源得到充分利用,即提高了硬件资源的利用率,同时,提高了推理效率,提升了数据吞吐量,且在存储资源不变的前提下,节省了存储空间。
以下对上述步骤S3011中获取目标神经网络的计算量和所需的存储空间的过程进行说明。
请参阅图4,示出了获取目标神经网络的计算量和所需的存储空间的流程示意图,可以包括:
步骤S401:根据目标神经网络的网络参数,构建目标神经网络的计算图。
其中,目标神经网络包含输入层、多个隐层和输出层,输入数据由输入层输入,依次经过各个隐层的运算(前一个隐层的输出为后一个隐层的输入),各个隐层的最终运算结果由输出层输出,本实施例中,目标神经网络的网络参数可以包括目标神经网络隐层的个数、每个隐层神经元的个数、各个隐层的连接关系、输入输出节点序号等,这些网络参数反映了目标神经网络的复杂度,与目标神经网络的计算量和所需的存储空间有关。
可选的,本实施例可基于目标神经网络的网络参数和预设的深度优先搜索算法创建计算图。其中,目标神经网络的计算图为能够反映出目标神经网络的计算过程的图,其包括节点和边,边代表各隐层执行函数的操作,节点代表执行函数的输入。
步骤S402:根据目标神经网络的计算图,确定目标神经网络各层的计算量和所需的存储空间。
在获得目标神经网络的计算图后,遍历计算图以获得每个隐层的计算量和所需的存储空间。为了获得每个隐层的计算量和所需的存储空间,可预先为每个隐层设置计算量的计算函数和所需存储空间的计算函数,并将其与隐层关联或绑定,需要说明的是,隐层的类型有多种,比如卷积层、池化层、全连接层等,需要为不同类型的隐层设置不同的计算函数。
可选的,本实施例可使用完成一个隐层所需要的乘加次数来表示一个隐层的计算量。示例性的,输入维度为r*k、神经元数目为n的全连接层的计算量为r*k*n*2,所需的存储空间为r*k+k*n+r*n;输入维度为v*c*h*w、卷积核为kh*kw、步长为sh*sw、输出通道数为f的卷积层的计算量约为(v*c*h*w*kh*kw*f*2)/(sh*sw),所需的存储空间约为v*c*h*w+f*c*kh*kw。
步骤S403:通过目标神经网络各层的计算量和所需的存储空间,确定整个目标神经网络的计算量和所需的存储空间。
在获得目标神经网络各隐层的计算量和所需的存储空间后,将目标神经网络各隐层的计算量累加,获得整个目标神经网络的计算量;同样的,将目标神经网络各隐层所需的存储空间累加,获得整个目标神经网络所需的存储空间。
在获得推理平台的硬件设备信息以及整个目标神经网络的计算量和所需的存储空间后,以这些信息为依据,对目标神经网络进行子网络的划分。
以下对上述实施例中的“步骤S3012:基于推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间,将目标神经网络划分为多个子网络”的实现过程进行介绍,请参阅图5,示出了该实现过程的流程示意图,可以包括:
步骤S501:基于推理平台的硬件设备信息、目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合目标神经网络的并行模式。
其中,并行模式包括单设备并行模式和多设备并行模式,在单设备并行模式下,整个目标神经网络的前向推理过程基于单个设备实现,在多设备并行模式下,整个目标神经网络的前向推理过程基于多个设备(多个设备可以为推理平台上的所有硬件设备,也可以为部分硬件设备)实现。
需要说明的是,用户配置的并行模式可能为适合目标神经网络的并行模式,也可能为不适合目标神经网络的并行模式,比如,用户配置的并行模式可能无法支持目标神经网络所需的计算量,或者无法支持目标神经网络所需的存储空间,有鉴于此,需要确定出真正适合目标神经网络的并行模式,确定适合目标神经网络的并行模式时,既要考虑硬件设备的计算能力和存储能力,又要考虑目标神经网络的运算需求,还要考虑用户配置的并行模式。
步骤S502:基于适合目标神经网络的并行模式,将目标神经网络划分为多个子网络。
在确定出适合目标神经网络的并行模式后,可基于该适合目标神经网络的并行模式确定子网络划分个数,基于确定出的子网络划分个数对目标神经网络进行划分。
以下先对上述“步骤S501:基于推理平台的硬件设备信息、目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合目标神经网络的并行模式”的实现过程进行介绍。
基于推理平台的硬件设备信息、目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合目标神经网络的并行模式的过程可以包括:若整个目标神经网络的计算量大于单个设备的计算能力,和/或,整个目标神经网络所需的存储空间大于单个设备的存储容量,则确定适合目标神经网络的并行模式为多设备并行模式;若整个目标神经网络的计算量小于或等于单个设备的计算能力,并且,整个目标神经网络所需的存储空间小于或等于单个设备的存储容量,则基于用户配置的并行模式确定适合目标神经网络的并行模式。
需要说明的是,整个目标神经网络的计算量大于单个设备的计算能力,或者,整个目标神经网络所需的存储空间大于单个设备的存储容量,表明单个设备无法满足目标神经网络运算需求,无论用户配置的并行模式为何种并行模式,都需要使最终的并行模式为多设备并行模式,也就是说,若用户设置的并行模式为单设备并行模式,则需要将单设备并行模式调整为多设备并行模式,若用户设置的并行模式为多设备并行模式,则保持多设备并行模式不变。
需要说明的是,若整个目标神经网络的计算量小于或等于单个设备的计算能力,并且,整个目标神经网络所需的存储空间小于或等于单个设备的存储容量,表明单个设备能够满足目标神经网络运算需求,此时,单设备并行模式和多设备并行模式均能满足目标神经网络的运算需求,在这种情况下,可基于用户配置的并行模式确定适合目标神经网络的并行模式。
进一步的,基于用户配置的并行模式确定适合目标神经网络的并行模式的实现过程包括:当用户配置的并行模式为单设备并行模式时,可直接将单设备并行模式作为适合目标神经网络的并行模式;当用户配置的并行模式为多设备并行模式时,一种可选的实现方式为,直接将多设备并行模式作为适合目标神经网络的并行模式,然而,考虑到多设备并行模式下,存在设备间的数据传输,若设备间的数据传输时间太长,势必会影响目标神经网络的推理速率,此时,使用多设备并行模式不是一种优选的方案。
比如,对于PCIE连接的P40而言,传输带宽只有10G/s,单精度计算吞吐可以达到12TFlops即每秒浮点运算次数达到12T,是传输的1200倍,以输入维度为m*k,神经元个数为n的全连接层为例,该层计算量为m*n*k*2,输出数据量为m*n,当k值不大时,由于设备之间的传输时间大于设备本身的计算时间,设备需要挂起等待数据的到来,浪费计算资源,加大了推理的总时间,这时使用多卡并行模式来进行推理并不佳。
有鉴于此,在一种优选的实现方式中,可基于设备间传输时间和预先设置的子网络的最大执行时间确定适合目标神经网络的并行模式,具体的,若设备间的传输时间大于预先设置的子网络的最大执行时间,则确定适合目标神经网络的并行模式为单设备并行模式,若设备间传输时间小于或等于预先设置的子网络的最大执行时间,则确定适合目标神经网络的并行模式为多设备并行模式。
请参阅图6,示出了基于推理平台的硬件设备信息、目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合目标神经网络的并行模式的一种可选的具体实现方式的流程示意图,可以包括:
步骤S601:判断目标神经网络的计算量是否大于单个设备的计算能力,若否,则执行步骤S602;若是,则执行步骤S603。
步骤S602:判断目标神经网络所需的存储空间是否大于单个设备的存储容量,若是,则执行步骤S603;若否,则执行步骤S604。
需要说明的是,本实施例并不限定步骤S601与步骤S602的执行顺序为上述顺序,比如,可先执行步骤S602,再执行步骤S601,还可步骤S601和步骤S602并行执行。不管采用何种顺序执行,均是在任一判断结果为是时,执行S603,两个判断结果均为否时,执行步骤S604。
步骤S603:确定适合目标神经网络的并行模式为多设备并行模式。
步骤S604:判断用户配置的并行模式是否为多设备并行模式,如果否,则执行步骤S605;若是,则执行步骤S606。
步骤S605:确定适合目标神经网络的并行模式为单设备并行模式。
步骤S606:判断设备间的传输时间是否大于预先设置的子网络的最大执行时间,若是,执行步骤S605;若否,则执行步骤S603。
下面通过一具体实例对基于推理平台的硬件设备信息、目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合目标神经网络的并行模式进行进一步说明:
推理平台的硬件设备为P40显卡,单个P40显卡的实际存储容量为24GB,由于要去除一些***空间和预留空间,单个P40显卡的存储容量为22GB,P40显卡的单精度峰值计算能力是12TFlops,由于实际情况下很难达到这个理论峰值,同时考虑到计算规模、读写延迟等影响,以8TFlops作为单个P40显卡的平均计算能力,推理平台的并行模式包括单卡并行模式和多卡并行模式,,目标神经网络的计算量为S,所需的存储空间为M,确定适合目标神经网络的并行模式的过程:
若M>22G或S/(8*1012)>T1max(即整个目标神经网络的存储需求大于单卡的可用显存,或者,整个目标神经网络的计算量大于单卡的平均计算能力),则表明单卡无法完成整个目标神经网络的前向推理任务,此时,确定多卡并行模式为适合目标神经网络的并行模式。其中,T1max为用户设置的、单卡完成一个输入运行占用的最大执行之间。需要说明的时,在M>22G或S/(8*1012)>T1max时,无论用户配置的并行模式为何种模式,都将多卡并行模式确定为适合目标神经网络的并行模式。
若M≤22G且S/(8*1012)≤T1max(即整个目标神经网络的存储需求小于或等于单卡的可用显存,且整个目标神经网络的计算量小于或等于单卡的平均计算能力),则表明单卡能够完成整个目标神经网络的前向推理任务,此时,基于用户配置的并行模式确定适合目标神经网络的并行模式。具体的,若用户配置的并行模式为单卡并行模式,则确定适合目标神经网络的并行模式为单卡并行模式;若用户配置的并行模式为多卡并行模式,进一步基于卡间传输时间Tt和预先设置的子网络的最大执行时间T2max确定适合目标神经网络的并行模式,具体的,若卡间传输时间Tt>T2max,则确定适合目标神经网络的并行模式为单设备并行模式,若Tt≤T2max,则确定适合目标神经网络的并行模式为多设备并行模式。其中,卡间传输时间Tt=m/B,m为子网络间的数据交互量,B为卡间传输带宽。
在确定出适合目标神经网络的并行模式后,便可基于适合目标神经网络的并行模式将目标神经网络划分为多个子网络。以下对基于适合目标神经网络的并行模式将目标神经网络划分为多个子网络进行介绍。
基于适合目标神经网络的并行模式,将目标神经网络划分为多个子网络的实现过程可以包括:若适合目标神经网络的并行模式为多设备并行模式,则基于硬件设备的个数获得子网络划分个数,基于该子网络划分个数对目标神经网络进行划分;若适合目标神经网络的并行模式为单设备并行模式,基于预先设定的子网络划分个数对目标神经网络进行划分。
需要说明的是,在多设备并行模式时,若设备个数多于两个,可基于每个硬件设备的信息以及目标神经网络的运算需求,确定在多设备并行模式下实际使用的硬件设备的数量,比如,推理平台上有5个硬件设备,则可只使用3个硬件设备,当然,也可直接使用推理平台上的所有硬件设备。即,当适合目标神经网络的并行模式为多设备并行模式时,可将P(2<=P<=M,M为推理平台上硬件设备的个数)作为子网络的划分个数,将目标神经网络划分为P个子网络,每个设备负责S/P的计算量,优选的,可将M即推理平台上硬件设备的个数作为子网络的划分个数,将目标神经网络划分为M个子网络,即每个设备负责S/M的计算量,其中,S为整个目标神经网络的计算量。
以下对当适合目标神经网络的并行模式为多设备并行模式时,基于确定的子网络划分个数,对目标神经网络进行划分的过程进行介绍。
在一种可能的实现方式中,基于子网络划分个数对目标神经网络进行划分的过程可以包括:基于子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对目标神经网络进行划分。
其中,单设备负责的理论计算量通过整个目标神经网络的计算量和子网络的划分个数确定,具体的,若整个目标神经网络的计算量为S,子网络的划分个数为M,则单设备负责的理论计算量为S/M;设备间传输的最大数据量通过预先设置的子网络的最大执行时间和设备间的传输带宽确定,具体的,若预先设置的子网络的最大执行时间为T2max,设备间的传输带宽为B,则设备间传输的最大数据量mmax=T2max*B。
进一步的,基于子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对目标神经网络进行划分的过程可以包括:从目标神经网络的输入层开始依次向后遍历:依次叠加各隐层的计算量,并在当前叠加得到的计算量接近单设备负责的理论计算量(比如S/M)时,获得进行叠加的多个相邻隐层组成的子网络作为候选子网络;若候选子网络的输出数据量(即该候选子网络的最后一个隐层输出的数据量)小于或等于设备间传输的最大数据量mmax,则将该候选子网络作为划分得到的一个子网络;若该候选子网络的输出数量大于设备间传输的最大数据量mmax,则从该候选子网络中由后向前逐个移除隐层,直至移除后的子网络的输出数据量小于或等于设备间传输的最大数据量mmax,移除隐层后的子网络作为划分得到的一个子网络;继续向后遍历,直至获得所有的子网络,其中,每获得一个子网络后,重新对该子网络后的隐层的计算量进行叠加。
示例性的,如图7所示,目标神经网络包括Q个隐层,按顺序依次为Layer 1,Layer2,…,LayerQ,从输入层开始向后遍历,依次叠加各隐层的计算量得到Ssum(i),比如,当遍历到第一个隐层时,Ssum(1)为第一个隐层的计算量,当遍历到第二个隐层时,Ssum(2)为第一个隐层的计算量与第二个隐层的计算量的和,以此类推,当Ssum(K)接近或等于单设备负责的理论计算量时,将Layer 1~LayerK作为一个候选子网络,进一步将该候选子网络的输出数据量与设备间传输的最大数据量进行比较,若该候选子网络的输出数据量小于或等于设备间传输的最大数据量,则将该候选子网络作为划分得到的第一个子网络,若该候选子网络的输出数据量大于设备间传输的最大数据量,则从该候选子网络中由后向前逐个移除隐层,直至移除隐层后的子网络的输出数据量小于或等于设备间传输的最大数据量,比如,将LayerK和LayerK-1移除后的子网络的输出数据量小于或等于设备间传输的最大数据量,则将Layer1~LayerK-2作为划分得到的第一个子网络,然后按照相同的策略,逐步获得后续的各个子网络。需要说明的是,每获得一个子网络,从该子网络后第一个隐层开始重新叠加计算量。
以下对当适合目标神经网络的并行模式为单设备并行模式时,基于预先设定的子网络划分个数对目标神经网络进行划分的过程进行介绍。
当采用单设备并行模式时,可按预设的子网络划分个数对目标神经网络进行划分,需要说明的是,子网络划分个数应设置的合适,不宜过大,子网络划分个数过大会导致单个子网络的计算量变得很小,此时,子网络间的数据同步时间相对于子网络的计算时间所占比重会加大,进而拉低子网络的吞吐量。在单设备并行模式下,可基于平均计算量(整个目标神经网络的计算量/预先设定的子网络划分个数)对目标神经网络进行划分。示例性的,预先设定的子网络划分个数为8,整个目标神经网络的计算量为S,则平均计算量为S/8,在对目标神经网络进行划分,依次叠加各隐层的计算量,并在当前叠加得到的计算量接近或等于S/8时,获得进行叠加的多个相邻隐层组成的子网络作一个划分得到的一个子网络,然后从该子网络后的第一个隐层开始重新叠加计算量,当叠加得到的计算量接近或等于S/8时,获得进行此轮叠加的多个相邻隐层组成的子网络作划分得到的又一个子网络,以此类推,获得所有的子网络,每个子网络的计算量均接近或等于S/8。
需要说明的是,在单设备并行模式,可对整个目标神经网络进行子网络的划分,对于多卡并行模式下的单个设备,可对划分得到的子网络进行更进一步的划分,其具体划分方式可参考单设备并行模式下,对整个目标神经网络进行划分的划分方式。
在将目标神经网络划分为多个子网络后,需要在推理平台的硬件设备上为各个子网络创建推理实例和推理引擎。具体的,对于多设备并行模式,需要分别为每个子网络在对应的硬件设备上创建推理实例和推理引擎,请参阅图8,示出了多设备并行模式下创建推理引擎的示意图,图8示出的神经网络被划分为4个子网络,每个子网络对应一个硬件设备,在创建推理引擎时,在4个硬件设备上各创建一个推理引擎;对于单设备并行模式,需要在一个设备上分别为各个子网络创建对应的推理实例和推理引擎。
在创建完多个子网络分别对应的推理实例和推理引擎后,基于多个子网络分别对应的推理实例和推理引擎对整个目标神经网络进行前向推理。由于多个子网络间具有先后依赖关系,因此,在基于多个子网络分别对应的推理实例和推理引擎对整个目标神经网络进行前向推理时,首先,基于多个子网络间的先后依赖关系建立多个子网络对应的推理引擎间的先后依赖关系,具体的,可基于多个子网络的先后依赖关系在多个子网络分别对应的推理引擎间建立读写标志(如图8所示,在设备1上创建的推理引擎与设备2上创建的推理引擎之间、设备2上创建的推理引擎与设备3上创建的推理引擎之间、设备3上创建的推理引擎与设备4上创建的推理引擎之间分别建立读写标志),然后,按顺序向多个子网络分别对应的推理引擎输入数据,以使每个推理引擎基于输入数据和对应的推理实例对其对应的子网络进行运算。
图8中的神经网络进行推理的过程为:将数据1依次输入设备1(完成子网络1的运算)、设备2(完成子网络2的运算)、设备3(完成子网络3的运算)和设备4(完成子网络4的运算),以此完成针对数据1的前向推理过程,需要重点说明的是,当设备1针对数据1的输出送入设备2的同时,数据2会输入设备1,由此可见,在同一时刻,有多个输入数据在不同的推理引擎内并行执行。
下面结合图9对神经网络的推理过程进一步进行说明:
图9中包括N个推理引擎,依次为Engine1、Engine2、…、EngineN,在任意时刻T1,将新的输入数据dataN送入推理引擎Engine1进行运算,在data N送入推理引擎Engine1进行运算的同时,dataN-1(实质指的是Engine1针对dataN-1的运算结果)送入推理引擎Engine2进行运算,dataN-2(实质指的是Engine2针对dataN-2的运算结果)送入推理引擎Engine3进行运算,以此类推,data 1(实质指的是EngineN-1针对data1的运算结果)送入推理引擎EngineN进行运算,由此可见,在同一时刻T1,推理引擎Engine1~推理引擎EngineN同时进行运算。
对比现有技术中的推理方法(同一时刻只有一个推理引擎进行运算,且,一个推理引擎针对整个网络进行运算)与本申请提供的推理方法发现:假设有x个输入数据,现有技术中的推理方法所需的推理时间为x*t,其中,t为一个输入数据所需要的推理时间,本申请提供的推理方法所需的推理时间为t/N*(2*x-1),其中,N为推理引擎的个数,当N较大时,整个目标神经网络的吞吐量接近现有推理方案的N/2倍,大大提高了推理效率。
本申请实施例提供的神经网络的前向推理方法,由于将神经网络划分为多个子网络,每个子网络对应一推理引擎,因此,每个推理引擎只负责目标神经网络的一部分隐层,这使得同一时刻可以有多个数据输入至不同的推理引擎进行运算,同一时刻有多个推理引擎并行运算使得推理平台的硬件资源得到充分利用,且使推理效率显著提高、数据吞吐量大大增加。
本申请实施例还提供了一种神经网络的前向推理装置,下面对本申请实施例提供的神经网络的前向推理装置进行描述,下文描述的神经网络的前向推理装置与上文描述的神经网络的前向推理方法可相互对应参照。
请参阅图10,示出了本申请实施例提供的一种神经网络的前向推理装置的结构示意图,如图10所示,该装置可以包括:网络处理模块1001、实例和引擎创建模块1002和推理模块1003。
网络处理模块1001,用于将目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层。
实例和引擎创建模块1002,用于在所述推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎。
推理模块1003,用于基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
本申请实施例提供的神经网络的前向推理装置,可将目标神经网络划分为多个子网络,然后为多个子网络分别创建推理实例和推理引擎,进而基于多个子网络分别对应的推理实例和推理引擎,对目标神经网络进行前向推理,由于推理引擎有多个,且一个推理引擎只负责目标神经网络的一部分隐层,这使得同一时刻可以有多个数据输入至不同的推理引擎内并行运算,与现有的推理方案相比,由于同一时刻有多个推理引擎并行运算,因此,硬件资源得到充分利用,即提高了硬件资源的利用率,同时,提高了推理效率,提升了数据吞吐量,且在存储资源不变的前提下,节省了存储空间。
在一种可能的实现方式中,上述实施例提供的神经网络的前向推理装置中,网络处理模块1001可以包括:信息获取模块和子网络划分模块。
所述信息获取模块,用于获取所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间。
所述子网络划分模块,用于基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络。
上述实施例提供的神经网络的前向推理装置中,信息获取模块可以包括硬件信息获取子模块。
所述硬件信息获取子模块,用于获取以下信息中的一种或多种:硬件设备的个数、硬件设备的计算能力、硬件设备的存储容量、硬件设备间的传输带宽。
在一种可能的实现方式中,信息获取模块还包括:计算图构建子模块,以及计算量和存储空间确定子模块。
所述计算图构建子模块,用于根据所述目标神经网络的网络参数,构建所述目标神经网络的计算图。
所述计算量和存储空间确定子模块,用于根据所述目标神经网络的计算图,确定所述目标神经网络各层的计算量和所需的存储空间,通过所述目标神经网络各层的计算量和所需的存储空间,确定整个所述目标神经网络的计算量和所需的存储空间。
在一种可能的实现方式中,上述实施例提供的神经网络的前向推理装置中的子网络划分模块可以包括:并行模式确定子模块和子网络划分子模块。
所述并行模式确定子模块,用于基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,其中,所述并行模式包括单设备并行模式和多设备并行模式,在所述单设备并行模式下,所述目标神经网络的前向推理基于单个设备实现,在所述多设备并行模式下,所述目标神经网络的前向推理基于多个设备实现;
所述子网络划分子模块,用于基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络。
在一种可能的实现方式中,所述并行模式确定子模块包括:第一确定子模块和第二确定子模块。
所述第一确定子模块,用于当整个所述目标神经网络的计算量大于单个设备的计算能力,和/或,整个所述目标神经网络所需的存储空间大于单个设备的存储容量时,确定适合所述目标神经网络的并行模式为所述多设备并行模式。
所述第二确定子模块,用于当整个所述目标神经网络的计算量小于或等于所述单个设备的计算能力,并且,整个所述目标神经网络所需的存储空间小于或等于所述单个设备的存储容量时,基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式。
在一种可能的实现方式中,所述第二确定子模块,具体用于当所述用户配置的并行模式为所述单设备并行模式时,确定适合所述目标神经网络的并行模式为所述单设备并行模式;当所述用户配置的并行模式为所述多设备并行模式时,若设备间的传输时间大于预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述单设备并行模式,若所述设备间传输时间小于或等于所述预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述多设备并行模式。
在一种可能的实现方式中,所述子网络划分子模块包括:第一划分子模块和第二划分子模块。
所述第一划分子模块,用于当适合所述目标神经网络的并行模式为所述多设备并行模式时,基于所述硬件设备的个数获得子网络的划分个数,并基于所述子网络的划分个数对所述目标神经网络进行划分。
所述第二划分子模块,用于当适合所述目标神经网络的并行模式为所述单设备并行模式时,基于预先设定的子网络划分个数对所述目标神经网络进行划分。
在一种可能的实现方式中,所述第一划分子模块,具体用于基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分。
其中,所述单设备负责的理论计算量通过整个所述目标神经网络的计算量和所述子网络的划分个数确定,所述设备间传输的最大数据量通过预先设置的子网络的最大执行时间和设备间的传输带宽确定。
在一种可能的实现方式中,所述第一划分子模块,具体用于从所述目标神经网络的输入层开始依次向后遍历:依次叠加各隐层的计算量,并在当前叠加得到的计算量接近所述单设备负责的理论计算量时,获得进行叠加的多个相邻隐层组成的子网络作为候选子网络;若所述候选子网络的输出数据量小于或等于所述设备间传输的最大数据量,则将所述候选子网络作为划分得到的一个子网络;若所述候选子网络的输出数量大于所述设备间传输的最大数据量,则从所述候选子网络中由后向前逐个移除隐层,直至移除后的子网络的输出数据量小于或等于所述设备间传输的最大数据量,移除隐层后的子网络作为划分得到的一个子网络;继续向后遍历,直至获得所有的子网络,其中,每获得一个子网络后,重新对该子网络后的隐层的计算量进行叠加。
在一种可能的实现方式中,推理模块1003,具体用于根据所述多个子网络之间的依赖关系,确定所述多个子网络分别对应的推理引擎之间的依赖关系;按顺序向所述多个子网络分别对应的推理引擎输入数据,以使每个推理引擎基于输入数据和对应的推理实例对其对应的子网络进行运算。
本申请实施例还提供了一种神经网络的前向推理设备,请参阅图11,示出了该前向推理设备的结构示意图,该设备可以包括:至少一个处理器1101,至少一个通信接口1102,至少一个存储器1103和至少一个通信总线1104;
在本申请实施例中,处理器1101、通信接口1102、存储器1103、通信总线1104的数量为至少一个,且处理器1101、通信接口1102、存储器1103通过通信总线1104完成相互间的通信;
处理器1101可能是一个中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器1103可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory)等,例如至少一个磁盘存储器;
其中,存储器存储有程序,处理器可调用存储器存储的程序,所述程序用于:
将目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层;
在推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎;
基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
本申请实施例还提供一种可读存储介质,该可读存储介质可存储有适于处理器执行的程序,所述程序用于:
将目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层;
在推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎;
基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
可选的,所述程序的细化功能和扩展功能可参照上文描述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (24)
1.一种神经网络的前向推理方法,其特征在于,包括:
将目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层;
在推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎;
基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
2.根据权利要求1所述的神经网络的前向推理方法,其特征在于,所述将目标神经网络划分为多个子网络,包括:
获取所述推理平台的硬件设备信息以及目标神经网络的计算量和所需的存储空间;
基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络。
3.根据权利要求2所述的神经网络的前向推理方法,其特征在于,所述推理平台的硬件设备信息包括以下信息中的一种或多种:
硬件设备的个数、硬件设备的计算能力、硬件设备的存储容量、硬件设备间的传输带宽。
4.根据权利要求2或3所述的神经网络的前向推理方法,其特征在于,获取所述目标神经网络的计算量和所需的存储空间,包括:
根据所述目标神经网络的网络参数,构建所述目标神经网络的计算图;
根据所述目标神经网络的计算图,确定所述目标神经网络各层的计算量和所需的存储空间;
通过所述目标神经网络各层的计算量和所需的存储空间,确定整个所述目标神经网络的计算量和所需的存储空间。
5.根据权利要求2或3所述的神经网络的前向推理方法,其特征在于,所述基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络,包括:
基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,其中,所述并行模式包括单设备并行模式和多设备并行模式,在所述单设备并行模式下,所述目标神经网络的前向推理基于单个设备实现,在所述多设备并行模式下,所述目标神经网络的前向推理基于多个设备实现;
基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络。
6.根据权利要求5所述的神经网络的前向推理方法,其特征在于,所述基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,包括:
若整个所述目标神经网络的计算量大于单个设备的计算能力,和/或,整个所述目标神经网络所需的存储空间大于单个设备的存储容量,则确定适合所述目标神经网络的并行模式为所述多设备并行模式;
若整个所述目标神经网络的计算量小于或等于所述单个设备的计算能力,并且,整个所述目标神经网络所需的存储空间小于或等于所述单个设备的存储容量,则基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式。
7.根据权利要求6所述的神经网络的前向推理方法,其特征在于,所述基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式,包括:
当所述用户配置的并行模式为所述单设备并行模式时,确定适合所述目标神经网络的并行模式为所述单设备并行模式;
当所述用户配置的并行模式为所述多设备并行模式时,若设备间的传输时间大于预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述单设备并行模式,若所述设备间传输时间小于或等于所述预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述多设备并行模式。
8.根据权利要求5所述的神经网络的前向推理方法,其特征在于,所述基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络,包括:
若适合所述目标神经网络的并行模式为所述多设备并行模式,则基于所述硬件设备的个数获得子网络的划分个数,基于所述子网络的划分个数对所述目标神经网络进行划分;
若适合所述目标神经网络的并行模式为所述单设备并行模式,基于预先设定的子网络划分个数对所述目标神经网络进行划分。
9.根据权利要求6所述的神经网络的前向推理方法,其特征在于,所述基于所述子网络的划分个数对所述目标神经网络进行划分,包括:
基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分;
其中,所述单设备负责的理论计算量通过整个所述目标神经网络的计算量和所述子网络的划分个数确定,所述设备间传输的最大数据量通过预先设置的子网络的最大执行时间和设备间的传输带宽确定。
10.根据权利要求7所述的神经网络的前向推理方法,其特征在于,所述基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分,包括:
从所述目标神经网络的输入层开始依次向后遍历:依次叠加各隐层的计算量,并在当前叠加得到的计算量接近所述单设备负责的理论计算量时,获得进行叠加的多个相邻隐层组成的子网络作为候选子网络;
若所述候选子网络的输出数据量小于或等于所述设备间传输的最大数据量,则将所述候选子网络作为划分得到的一个子网络;若所述候选子网络的输出数量大于所述设备间传输的最大数据量,则从所述候选子网络中由后向前逐个移除隐层,直至移除后的子网络的输出数据量小于或等于所述设备间传输的最大数据量,移除隐层后的子网络作为划分得到的一个子网络;
继续向后遍历,直至获得所有的子网络,其中,每获得一个子网络后,重新对该子网络后的隐层的计算量进行叠加。
11.根据权利要求1所述的神经网络的前向推理方法,其特征在于,所述基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理,包括:
根据所述多个子网络之间的依赖关系,确定所述多个子网络分别对应的推理引擎之间的依赖关系;
按顺序向所述多个子网络分别对应的推理引擎输入数据,以使每个推理引擎基于输入数据和对应的推理实例对其对应的子网络进行运算。
12.一种神经网络的前向推理装置,其特征在于,包括:网络处理模块、实例和引擎创建模块和推理模块;
所述网络处理模块,用将目标神经网络划分为多个子网络,其中,任一子网络包括所述目标神经网络的至少一个隐层;
所述实例和引擎创建模块,用于在推理平台的硬件设备上创建所述多个子网络分别对应的推理实例和推理引擎;
所述推理模块,用于基于所述多个子网络分别对应的推理实例和推理引擎,对所述目标神经网络进行前向推理。
13.根据权利要求12所述的前向推理装置,其特征在于,所述网络处理模块包括:信息获取模块和子网络划分模块;
所述信息获取模块,用于获取所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间;
所述子网络划分模块,用于基于所述推理平台的硬件设备信息以及所述目标神经网络的计算量和所需的存储空间,将所述目标神经网络划分为多个子网络。
14.根据权利要求13所述的神经网络的前向推理装置,其特征在于,所述推理平台的硬件设备信息包括以下信息中的一种或多种:
硬件设备的个数、硬件设备的计算能力、硬件设备的存储容量、硬件设备间的传输带宽。
15.根据权利要求13或14所述的神经网络的前向推理装置,其特征在于,所述信息获取模块包括:计算图构建子模块,以及计算量和存储空间确定子模块;
所述计算图构建子模块,用于根据所述目标神经网络的网络参数,构建所述目标神经网络的计算图;
所述计算量和存储空间确定子模块,用于根据所述目标神经网络的计算图,确定所述目标神经网络各层的计算量和所需的存储空间,通过所述目标神经网络各层的计算量和所需的存储空间,确定整个所述目标神经网络的计算量和所需的存储空间。
16.根据权利要求13或14所述的神经网络的前向推理方法,其特征在于,所述子网络划分模块包括:并行模式确定子模块和子网络划分子模块;
所述并行模式确定子模块,用于基于所述推理平台的硬件设备信息、所述目标神经网络的计算量和所需的存储空间以及用户配置的并行模式,确定适合所述目标神经网络的并行模式,其中,所述并行模式包括单设备并行模式和多设备并行模式,在所述单设备并行模式下,所述目标神经网络的前向推理基于单个设备实现,在所述多设备并行模式下,所述目标神经网络的前向推理基于多个设备实现;
所述子网络划分子模块,用于基于适合所述目标神经网络的并行模式,将所述目标神经网络划分为多个子网络。
17.根据权利要求16所述的神经网络的前向推理装置,其特征在于,所述并行模式确定子模块包括:第一确定子模块和第二确定子模块;
所述第一确定子模块,用于当整个所述目标神经网络的计算量大于单个设备的计算能力,和/或,整个所述目标神经网络所需的存储空间大于单个设备的存储容量时,确定适合所述目标神经网络的并行模式为所述多设备并行模式;
所述第二确定子模块,用于当整个所述目标神经网络的计算量小于或等于所述单个设备的计算能力,并且,整个所述目标神经网络所需的存储空间小于或等于所述单个设备的存储容量时,基于所述用户配置的并行模式确定适合所述目标神经网络的并行模式。
18.根据权利要求17所述的神经网络的前向推理装置,其特征在于,所述第二确定子模块,具体用于当所述用户配置的并行模式为所述单设备并行模式时,确定适合所述目标神经网络的并行模式为所述单设备并行模式;当所述用户配置的并行模式为所述多设备并行模式时,若设备间的传输时间大于预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述单设备并行模式,若所述设备间传输时间小于或等于所述预先设置的子网络的最大执行时间,则确定适合所述目标神经网络的并行模式为所述多设备并行模式。
19.根据权利要求16所述的神经网络的前向推理装置,其特征在于,所述子网络划分子模块包括:第一划分子模块和第二划分子模块;
所述第一划分子模块,用于当适合所述目标神经网络的并行模式为所述多设备并行模式时,基于所述硬件设备的个数获得子网络的划分个数,并基于所述子网络的划分个数对所述目标神经网络进行划分;
所述第二划分子模块,用于当适合所述目标神经网络的并行模式为所述单设备并行模式时,基于预先设定的子网络划分个数对所述目标神经网络进行划分。
20.根据权利要求19所述的神经网络的前向推理装置,其特征在于,所述第一划分子模块,具体用于基于所述子网络的划分个数,以单设备负责的理论计算量和设备间传输的最大数据量为划分依据,对所述目标神经网络进行划分;
其中,所述单设备负责的理论计算量通过整个所述目标神经网络的计算量和所述子网络的划分个数确定,所述设备间传输的最大数据量通过预先设置的子网络的最大执行时间和设备间的传输带宽确定。
21.根据权利要求20所述的神经网络的前向推理装置,其特征在于,所述第一划分子模块,具体用于从所述目标神经网络的输入层开始依次向后遍历:依次叠加各隐层的计算量,并在当前叠加得到的计算量接近所述单设备负责的理论计算量时,获得进行叠加的多个相邻隐层组成的子网络作为候选子网络;若所述候选子网络的输出数据量小于或等于所述设备间传输的最大数据量,则将所述候选子网络作为划分得到的一个子网络;若所述候选子网络的输出数量大于所述设备间传输的最大数据量,则从所述候选子网络中由后向前逐个移除隐层,直至移除后的子网络的输出数据量小于或等于所述设备间传输的最大数据量,移除隐层后的子网络作为划分得到的一个子网络;继续向后遍历,直至获得所有的子网络,其中,每获得一个子网络后,重新对该子网络后的隐层的计算量进行叠加。
22.根据权利要求12所述的神经网络的前向推理装置,其特征在于,所述推理模块,具体用于根据所述多个子网络之间的依赖关系,确定所述多个子网络分别对应的推理引擎之间的依赖关系;
按顺序向所述多个子网络分别对应的推理引擎输入数据,以使每个推理引擎基于输入数据和对应的推理实例对其对应的子网络进行运算。
23.一种神经网络的前向推理设备,其特征在于,包括:存储器和处理器;
所述存储器,用于存储程序;
所述处理器,用于执行所述程序,实现如权利要求1~11中任一项所述的神经网络的前向推理方法的各个步骤。
24.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1~11中任一项所述的神经网络的前向推理方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910188467.6A CN109919315B (zh) | 2019-03-13 | 2019-03-13 | 一种神经网络的前向推理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910188467.6A CN109919315B (zh) | 2019-03-13 | 2019-03-13 | 一种神经网络的前向推理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109919315A true CN109919315A (zh) | 2019-06-21 |
CN109919315B CN109919315B (zh) | 2021-10-01 |
Family
ID=66964550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910188467.6A Active CN109919315B (zh) | 2019-03-13 | 2019-03-13 | 一种神经网络的前向推理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109919315B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110298437A (zh) * | 2019-06-28 | 2019-10-01 | Oppo广东移动通信有限公司 | 神经网络的分割计算方法、装置、存储介质及移动终端 |
CN110796242A (zh) * | 2019-11-01 | 2020-02-14 | 广东三维家信息科技有限公司 | 神经网络模型推理方法、装置、电子设备及可读介质 |
CN110837419A (zh) * | 2019-11-08 | 2020-02-25 | 上海交通大学 | 基于弹性批处理的推理引擎***、方法及电子设备 |
CN111372084A (zh) * | 2020-02-18 | 2020-07-03 | 北京大学 | 面向神经网络编解码工具的并行推理方法及*** |
CN111753950A (zh) * | 2020-01-19 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN112711478A (zh) * | 2019-10-24 | 2021-04-27 | 珠海零边界集成电路有限公司 | 基于神经网络的任务处理方法、装置、服务器和存储介质 |
WO2021134231A1 (zh) * | 2019-12-30 | 2021-07-08 | 深圳元戎启行科技有限公司 | 基于推理引擎的计算资源分配方法、装置和计算机设备 |
WO2021143883A1 (zh) * | 2020-01-15 | 2021-07-22 | 华为技术有限公司 | 神经网络的自适应搜索方法及装置 |
CN113469360A (zh) * | 2020-03-31 | 2021-10-01 | 杭州海康威视数字技术股份有限公司 | 推理方法及装置 |
WO2022035058A1 (en) * | 2020-08-13 | 2022-02-17 | Samsung Electronics Co., Ltd. | Method and system of dnn modularization for optimal loading |
CN114501353A (zh) * | 2020-10-23 | 2022-05-13 | 维沃移动通信有限公司 | 通信信息的发送、接收方法及通信设备 |
CN115186821A (zh) * | 2022-09-13 | 2022-10-14 | 之江实验室 | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 |
WO2022217419A1 (zh) * | 2021-04-12 | 2022-10-20 | 深圳元戎启行科技有限公司 | 神经网络模型推理方法、装置、计算机设备和存储介质 |
CN116629308A (zh) * | 2023-07-24 | 2023-08-22 | 科大讯飞股份有限公司 | 一种神经网络模型的推理方法、装置、设备及存储介质 |
CN116739090A (zh) * | 2023-05-12 | 2023-09-12 | 北京大学 | 基于Web浏览器的深度神经网络推理度量方法和装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0513976A2 (en) * | 1991-03-15 | 1992-11-19 | Sharp Kabushiki Kaisha | A video camera having an adaptive automatic iris control circuit |
CN1659589A (zh) * | 2002-04-19 | 2005-08-24 | 电脑联合想象公司 | 用于提供推理服务的***和方法 |
CN102004486A (zh) * | 2010-09-26 | 2011-04-06 | 中国石油化工股份有限公司 | 石化过程中基于定性sdg的故障混合诊断方法 |
CN107203807A (zh) * | 2016-03-16 | 2017-09-26 | 中国科学院计算技术研究所 | 神经网络的计算方法、***及其装置 |
CN107451653A (zh) * | 2017-07-05 | 2017-12-08 | 深圳市自行科技有限公司 | 深度神经网络的计算方法、装置及可读存储介质 |
CN107659609A (zh) * | 2017-07-26 | 2018-02-02 | 北京天云融创软件技术有限公司 | 一种基于云计算的深度学***台及深度学习训练方法 |
CN107886167A (zh) * | 2016-09-29 | 2018-04-06 | 北京中科寒武纪科技有限公司 | 神经网络运算装置及方法 |
CN107945053A (zh) * | 2017-12-29 | 2018-04-20 | 广州思泰信息技术有限公司 | 一种多源配电网数据融合分析平台及其控制方法 |
CN107977706A (zh) * | 2017-08-09 | 2018-05-01 | 小蚁科技(香港)有限公司 | 模块化分布式人工神经网络 |
CN108292241A (zh) * | 2015-10-28 | 2018-07-17 | 谷歌有限责任公司 | 处理计算图 |
CN109299283A (zh) * | 2018-08-29 | 2019-02-01 | 阿里巴巴集团控股有限公司 | 一种基于知识图谱的数据推理方法、装置、服务器和介质 |
-
2019
- 2019-03-13 CN CN201910188467.6A patent/CN109919315B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0513976A2 (en) * | 1991-03-15 | 1992-11-19 | Sharp Kabushiki Kaisha | A video camera having an adaptive automatic iris control circuit |
CN1659589A (zh) * | 2002-04-19 | 2005-08-24 | 电脑联合想象公司 | 用于提供推理服务的***和方法 |
CN102004486A (zh) * | 2010-09-26 | 2011-04-06 | 中国石油化工股份有限公司 | 石化过程中基于定性sdg的故障混合诊断方法 |
CN108292241A (zh) * | 2015-10-28 | 2018-07-17 | 谷歌有限责任公司 | 处理计算图 |
CN107203807A (zh) * | 2016-03-16 | 2017-09-26 | 中国科学院计算技术研究所 | 神经网络的计算方法、***及其装置 |
CN107886167A (zh) * | 2016-09-29 | 2018-04-06 | 北京中科寒武纪科技有限公司 | 神经网络运算装置及方法 |
CN107451653A (zh) * | 2017-07-05 | 2017-12-08 | 深圳市自行科技有限公司 | 深度神经网络的计算方法、装置及可读存储介质 |
CN107659609A (zh) * | 2017-07-26 | 2018-02-02 | 北京天云融创软件技术有限公司 | 一种基于云计算的深度学***台及深度学习训练方法 |
CN107977706A (zh) * | 2017-08-09 | 2018-05-01 | 小蚁科技(香港)有限公司 | 模块化分布式人工神经网络 |
CN107945053A (zh) * | 2017-12-29 | 2018-04-20 | 广州思泰信息技术有限公司 | 一种多源配电网数据融合分析平台及其控制方法 |
CN109299283A (zh) * | 2018-08-29 | 2019-02-01 | 阿里巴巴集团控股有限公司 | 一种基于知识图谱的数据推理方法、装置、服务器和介质 |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110298437A (zh) * | 2019-06-28 | 2019-10-01 | Oppo广东移动通信有限公司 | 神经网络的分割计算方法、装置、存储介质及移动终端 |
CN110298437B (zh) * | 2019-06-28 | 2021-06-01 | Oppo广东移动通信有限公司 | 神经网络的分割计算方法、装置、存储介质及移动终端 |
CN112711478B (zh) * | 2019-10-24 | 2024-05-28 | 珠海零边界集成电路有限公司 | 基于神经网络的任务处理方法、装置、服务器和存储介质 |
CN112711478A (zh) * | 2019-10-24 | 2021-04-27 | 珠海零边界集成电路有限公司 | 基于神经网络的任务处理方法、装置、服务器和存储介质 |
CN110796242A (zh) * | 2019-11-01 | 2020-02-14 | 广东三维家信息科技有限公司 | 神经网络模型推理方法、装置、电子设备及可读介质 |
CN110837419A (zh) * | 2019-11-08 | 2020-02-25 | 上海交通大学 | 基于弹性批处理的推理引擎***、方法及电子设备 |
CN110837419B (zh) * | 2019-11-08 | 2023-05-19 | 上海交通大学 | 基于弹性批处理的推理引擎***、方法及电子设备 |
WO2021134231A1 (zh) * | 2019-12-30 | 2021-07-08 | 深圳元戎启行科技有限公司 | 基于推理引擎的计算资源分配方法、装置和计算机设备 |
CN113412493B (zh) * | 2019-12-30 | 2024-06-14 | 深圳元戎启行科技有限公司 | 基于推理引擎的计算资源分配方法、装置和计算机设备 |
CN113412493A (zh) * | 2019-12-30 | 2021-09-17 | 深圳元戎启行科技有限公司 | 基于推理引擎的计算资源分配方法、装置和计算机设备 |
WO2021143883A1 (zh) * | 2020-01-15 | 2021-07-22 | 华为技术有限公司 | 神经网络的自适应搜索方法及装置 |
CN111753950A (zh) * | 2020-01-19 | 2020-10-09 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN111753950B (zh) * | 2020-01-19 | 2024-02-27 | 杭州海康威视数字技术股份有限公司 | 一种前向耗时的确定方法、装置及设备 |
CN111372084B (zh) * | 2020-02-18 | 2021-07-20 | 北京大学 | 面向神经网络编解码工具的并行推理方法及*** |
CN111372084A (zh) * | 2020-02-18 | 2020-07-03 | 北京大学 | 面向神经网络编解码工具的并行推理方法及*** |
CN113469360A (zh) * | 2020-03-31 | 2021-10-01 | 杭州海康威视数字技术股份有限公司 | 推理方法及装置 |
CN113469360B (zh) * | 2020-03-31 | 2023-10-20 | 杭州海康威视数字技术股份有限公司 | 推理方法及装置 |
WO2022035058A1 (en) * | 2020-08-13 | 2022-02-17 | Samsung Electronics Co., Ltd. | Method and system of dnn modularization for optimal loading |
CN114501353B (zh) * | 2020-10-23 | 2024-01-05 | 维沃移动通信有限公司 | 通信信息的发送、接收方法及通信设备 |
CN114501353A (zh) * | 2020-10-23 | 2022-05-13 | 维沃移动通信有限公司 | 通信信息的发送、接收方法及通信设备 |
WO2022217419A1 (zh) * | 2021-04-12 | 2022-10-20 | 深圳元戎启行科技有限公司 | 神经网络模型推理方法、装置、计算机设备和存储介质 |
CN115186821B (zh) * | 2022-09-13 | 2023-01-06 | 之江实验室 | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 |
CN115186821A (zh) * | 2022-09-13 | 2022-10-14 | 之江实验室 | 面向芯粒的神经网络推理开销估计方法及装置、电子设备 |
CN116739090A (zh) * | 2023-05-12 | 2023-09-12 | 北京大学 | 基于Web浏览器的深度神经网络推理度量方法和装置 |
CN116739090B (zh) * | 2023-05-12 | 2023-11-28 | 北京大学 | 基于Web浏览器的深度神经网络推理度量方法和装置 |
CN116629308A (zh) * | 2023-07-24 | 2023-08-22 | 科大讯飞股份有限公司 | 一种神经网络模型的推理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109919315B (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109919315A (zh) | 一种神经网络的前向推理方法、装置、设备及存储介质 | |
US10402404B2 (en) | Scheduling method and system based on hybrid variable neighborhood search and gravitational search algorithm | |
US20190080271A1 (en) | Coordinated Production and Transportation Scheduling Method and System Based on Improved Tabu Search Algorithm | |
CN110348571A (zh) | 一种神经网络模型训练方法、装置、芯片和*** | |
CN108122027A (zh) | 一种神经网络模型的训练方法、装置及芯片 | |
CN108776897A (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
CN108491255B (zh) | 自助式MapReduce数据优化分配方法及*** | |
CN107451091A (zh) | 基于fpga‑cpu混合架构的高速信息交互*** | |
CN107077390A (zh) | 一种任务处理方法以及网卡 | |
CN108780524A (zh) | 用于神经网络的运算装置、电路及相关方法 | |
CN103914556A (zh) | 大规模图数据处理方法 | |
CN110187965A (zh) | 神经网络的运行优化及数据处理方法、设备及存储介质 | |
CN107357630A (zh) | 一种实现虚拟机同步的方法、装置和存储介质 | |
CN105227601A (zh) | 流处理***中的数据处理方法、装置和*** | |
CN108491924B (zh) | 一种面向人工智能计算的神经网络数据串行流水处理装置 | |
CN109933430A (zh) | 分配图形处理器的方法和装置 | |
CN107341054A (zh) | 任务执行方法、装置及计算机可读存储介质 | |
CN103842955B (zh) | 一种业务流量控制方法、装置和*** | |
CN105051689A (zh) | 一种多核***中资源池的调度方法、装置和*** | |
CN113094180B (zh) | 无线联邦学习调度优化方法及装置 | |
CN107704566A (zh) | 话单集采预处理方法、***及排重、拆分和合并*** | |
CN112862083B (zh) | 一种边缘环境下的深度神经网络推断方法及装置 | |
CN105335135B (zh) | 数据处理方法和中心节点 | |
CN107844924A (zh) | 一种控制工作流的执行方法、装置及介质 | |
CN116911366A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |