CN109902819B - 神经网络计算方法、装置、移动终端及存储介质 - Google Patents
神经网络计算方法、装置、移动终端及存储介质 Download PDFInfo
- Publication number
- CN109902819B CN109902819B CN201910111499.6A CN201910111499A CN109902819B CN 109902819 B CN109902819 B CN 109902819B CN 201910111499 A CN201910111499 A CN 201910111499A CN 109902819 B CN109902819 B CN 109902819B
- Authority
- CN
- China
- Prior art keywords
- operator
- operators
- executed
- operator sets
- neural network
- 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.)
- Active
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/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
-
- 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)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Mobile Radio Communication Systems (AREA)
- Telephone Function (AREA)
Abstract
本申请实施例公开了一种神经网络计算方法、装置、移动终端及存储介质,该方法包括:获取M个待执行算子,计算M个待执行算子之间的依赖关系,N为大于或等于2的整数;依据M个待执行算子之间的依赖关系对M个待执行算子进行切割,得到N个算子集合,N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;若N个算子集合为相互独立的算子集合,启用N个线程分别对N个算子集合中的算子进行计算。本申请实施例可以降低神经网络的推理时间。
Description
技术领域
本申请涉及通信技术领域,具体涉及一种神经网络计算方法、装置、移动终端及存储介质。
背景技术
目前的神经网络算法框架(比如,Tensorflow Lite)中,在进行神经网络计算时,将所有需要执行的算子加入到一个待执行的队列中,然后处理器依次调用执行这些算子,也就是在一个线程中顺序执行完这些算子。随着神经网络越来越复杂,算子数量越来越多,也会导致神经网络的推理时间变长。
发明内容
本申请实施例提供了一种神经网络计算方法、装置、移动终端及存储介质,可以降低神经网络的推理时间。
第一方面,本申请实施例提供一种基于神经网络算法框架的神经网络计算方法,包括:
获取M个待执行算子,计算所述M个待执行算子之间的依赖关系,N为大于或等于2的整数;
依据所述M个待执行算子之间的依赖关系对所述M个待执行算子进行切割,得到N个算子集合,所述N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;
若所述N个算子集合为相互独立的算子集合,启用N个线程分别对所述N个算子集合中的算子进行计算。
第二方面,本申请实施例提供了一种神经网络计算装置,所述神经网络计算装置包括通信单元和处理单元,其中:
所述通信单元,用于获取M个待执行算子;
所述处理单元,用于计算所述M个待执行算子之间的依赖关系,N为大于或等于2的整数;以及用于依据所述M个待执行算子之间的依赖关系对所述M个待执行算子进行切割,得到N个算子集合,所述N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;以及用于在所述N个算子集合为相互独立的算子集合的情况下,启用N个线程分别对所述N个算子集合中的算子进行计算。
第三方面,本申请实施例提供一种移动终端,包括处理器、存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,上述程序包括用于执行本申请实施例第一方面中的步骤的指令。
第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质存储用于电子数据交换的计算机程序,其中,上述计算机程序使得计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。
第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。
可以看出,本申请实施例中所描述的基于神经网络算法框架的神经网络计算方法,在进行神经网络计算时,获取M个待执行算子,计算M个待执行算子之间的依赖关系,N为大于或等于2的整数;依据M个待执行算子之间的依赖关系对M个待执行算子进行切割,得到N个算子集合,N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;若N个算子集合为相互独立的算子集合,启用N个线程分别对N个算子集合中的算子进行计算。本申请实施例可以对待执行的算子进行切割,当切割得到的N个算子集合是相互独立的算子集合,启用N个线程分别对N个算子集合中的算子进行计算,可以启用N个线程同时对N个算子集合中的算子分别进行计算,可以提高神经网络计算的速度,从而降低神经网络的推理时间。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例公开的一种基于神经网络算法框架的神经网络计算方法的流程示意图;
图2是本申请实施例公开的一种算子之间的依赖关系示意图;
图3是本申请实施例公开的另一种基于神经网络算法框架的神经网络计算方法的流程示意图;
图4是本申请实施例公开的一种神经网络计算装置的结构示意图;
图5是本申请实施例公开的一种移动终端的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本申请实施例所涉及到的移动终端可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(User Equipment,UE),移动台(Mobile Station,MS),终端设备(terminaldevice)等等。为方便描述,上面提到的设备统称为移动终端。
下面对本申请实施例进行详细介绍。
请参阅图1,图1是本申请实施例公开的一种基于神经网络算法框架的神经网络计算方法的流程示意图,如图1所示,该基于神经网络算法框架的神经网络计算方法包括如下步骤。
101,移动终端获取M个待执行算子,计算M个待执行算子之间的依赖关系,N为大于或等于2的整数。
本申请实施例中,神经网络算法框架可以为TensorFlow或TensorFlow Lite。其中,TensorFlow是一个在个人计算机(personal computer,PC)端运行的用于训练以及运行神经网络模型的框架。TensorFlow Lite是一个在移动端运行的用于训练以及运行神经网络模型的框架,该移动端可以运行IOS系统或安卓(Android)系统。
神经网络算法框架可以包括控制器单元、运算单元和存储单元。控制器单元用于存储指令与处理指令。运算单元用于对算子进行计算,存储单元用于存储神经元、权值等。算子,是operator的缩写,在神经网络模型中,一个operator代表一种计算,比如加减乘除,就是4个operator。在神经网络模型中,进行神经网络推理时,需要对多个算子进行计算,目前的所有的算子都是串行执行的,导致神经网络的推理时间较长。
本申请实施例中,进行神经网络推理时,需要对多个算子进行计算。控制器单元获取M个待执行算子后,计算M个待执行算子之间的依赖关系。M个待执行算子可以是整个神经网络推理过程中需要执行的算子,也可以是某一层神经网络计算过程中需要执行的算子,也可以是某一层神经网络计算过程中部分需要执行的算子。
本申请实施例中的算子可以包括Conv2D算子、FusedBatchNorm算子、Relu算子、DepthwiseConv2dNative算子、MaxPool算子、BiasAdd算子、ConcatV2算子等。
Conv2D算子是将给定的四维输入数据与四维滤波器张量(filter tensor)计算一个二维卷积,四维滤波器张量也可称为四维卷积核张量。Conv2D算子规定了四维输入数据包括训练样本(batch)的数量、输入数据的高度(inputHeight),输入数据的宽度(inputWidth),输入数据的通道数(inputChannel)。四维滤波器张量包括滤波器高度(filterHeight),滤波器宽度(filterWidth),滤波器通道数(filterChannel),滤波器数量(filterNumber)。Conv2D算子将四维滤波器张量按照一定的步长(strides)在四维输入数据中进行滑动乘加运算,以得到二维卷积结果。
FusedBatchNorm算子是深度神经网络中经常用到的加速神经网络训练的算子,可以加速收敛速度及稳定性,是目前深度神经网络必不可少的组成部分。
Relu算子,也称为ReLU函数,其代表的的是“修正线性单元”,它是带有卷积图像的输入x的最大函数(x,o)。ReLU算子将矩阵x内所有负值都设为零,其余的值不变,ReLU函数的算子是在卷积运算之后进行的。
DepthwiseConv2dNative算子,将给定的四维输入数据与四维滤波器张量(filtertensor)计算一个二维卷积,四维滤波器张量也可称为四维卷积核张量。Conv2D算子规定了四维输入数据包括训练样本(batch)的数量、输入数据的高度(inputHeight),输入数据的宽度(inputWidth),输入数据的通道数(inputChannel)。四维滤波器张量包括滤波器高度(filterHeight),滤波器宽度(filterWidth),滤波器通道数(filterChannel),输出乘子(channel_multiplier)。Conv2D算子将四维滤波器张量按照一定的步长(strides)在四维输入数据中进行滑动乘加运算,以得到二维卷积结果。
MaxPool算子,是池化算子的一种,将卷积运算结果中的部分数据丢弃的一种算法。
BiasAdd算子,是偏置算子,是将一个叫bias的向量加到一个叫value的矩阵,是向量与矩阵的每一行进行相加,得到的结果和value矩阵大小相同。BiasAdd算子执行的是加法运算。
ConcatV2算子,是连接两个矩阵的操作,用于将两个矩阵合并,合并后的矩阵,行或列会增加。
其中,不同的算子之间,可能会存在相互依赖的关系,比如Conv2D算子执行之后,才能执行激活算子、池化算子、归一化算子等。移动终端可以根据每个算子之间的先后执行顺序确定每个算子之间的依赖关系。
举例来说,请参阅图2,图2是本申请实施例公开的一种算子之间的依赖关系示意图。如图2所示,如果需要执行的算子有8个,分别为第一算子、第二算子、第三算子、第四算子、第五算子、第六算子、第七算子、第八算子。其中,执行完第一算子之后,才可以执行第二算子、第五算子,执行完第二算子之后,才可以执行第三算子,执行完第三算子之后,才可以执行第四算子;执行完第五算子之后,才可以执行第六算子,执行完第六算子之后,才可以执行第七算子;执行完第四算子和第七算子之后,才可以执行第八算子。从图2可以看出,第一算子、第二算子、第三算子、第四算子、第八算子之间具有依赖关系,第一算子、第五算子、第六算子、第七算子、第八算子之间具有依赖关系。第二算子、第三算子、第四算子与第五算子、第六算子、第七算子之间为相互独立的关系,二者之间并没有严格的先后执行顺序。
102,移动终端依据M个待执行算子之间的依赖关系对M个待执行算子进行切割,得到N个算子集合,N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数。
本申请实施例中,移动终端可以依据M个待执行算子之间的依赖关系,按照一定的切割算法对M个待执行算子进行切割,得到N个算子集合,以最大化的降低N个算子集合之间的依赖性,让N个算子集合之间的尽可能多的算子集合能够相互独立。以图2为例可以将8个待执行算子切割成4个算子集合,其中,第一算子集合包括第一算子,第二算子集合包括第二算子、第三算子、第四算子,第三算子集合包括第五算子、第六算子、第七算子,第四算子集合包括第八算子,其中,第一算子集合与第二算子集合、第三算子集合之间存在依赖关系,第四算子集合与第二算子集合、第三算子集合之间存在依赖关系,第二算子集合与第三算子集合之间相互独立。
103,若N个算子集合为相互独立的算子集合,移动终端启用N个线程分别对N个算子集合中的算子进行计算。
本申请实施例中,如果N个算子集合为相互独立的算子集合,则表明N个算子集合之间没有依赖关系,没有哪个算子集合需要在另外一个算子集合之前执行,则移动终端可以启用N个线程分别对N个算子集合中的算子进行计算,从而可以启用N个线程同时对N个算子集合中的算子分别进行计算,可以提高神经网络计算的速度,从而降低神经网络的推理时间。
可选的,步骤102可以包括如下步骤:
移动终端依据M个待执行算子之间的依赖关系,采用图剖分算法对M个待执行算子进行切割,得到N个算子集合。
采用图剖分算法,可以准确的将有向图进行划分,使得N个算子集合之间的依赖性尽可能的小,从而提高可并行执行的算子集合的数量,进而提高算子计算速度。
可选的,在执行步骤101之后,还可以执行如下步骤:
移动终端依据M个待执行算子之间的依赖关系得到M个待执行算子之间的有向图。
移动终端依据M个待执行算子之间的依赖关系,采用图剖分算法对M个待执行算子进行切割,得到N个算子集合,具体为包括:
移动终端依据M个待执行算子之间的依赖关系,采用图剖分算法对M个待执行算子之间的有向图进行切割,得到N个有向子图;其中,每个有向子图对应一个算子集合。
图2所示的依赖关系示意图也可以称为有向图,其中,图2所示的矩形框表示算子,矩形框之间的连接线表示依赖关系。图2所示的矩形框可以抽象为有向图的点,连接线可以抽象为有向图的边。连接线的终点(箭头的终点)必须在连接线的起点(箭头的起点)计算完之后才能开始计算。有向图可以直观的体现算子之间的依赖关系,有利于后续对算子集合进行划分。
以图2为例,移动终端依据8个待执行算子之间的依赖关系,采用图剖分算法对8个待执行算子之间的有向图进行切割,具体为:将有向图的第一节点与第二节点和第五节点切割,将有向图的第八节点与第四节点和第七节点切割,从而切割成4个有向子图。其中,有向图的第一节点、第二节点、第三节点、第四节点、第五节点、第六节点、第七节点、第八节点分别对应第一算子、第二算子、第三算子、第四算子、第五算子、第六算子、第七算子、第八算子。4个有向子图分别为第一有向子图、第二有向子图、第三有向子图和第四有向子图。第一有向子图仅包括有向图的第一节点;第二有向子图包括第二节点、第三节点、第四节点、第二节点与第三节点之间的连接线、第三节点与第四节点之间的连接线;第三有向子图包括第五节点、第六节点、第七节点、第五节点与第六节点之间的连接线、第六节点与第七节点之间的连接线;第四有向子图仅包括有向图的第八节点。其中,第一有向子图与第二有向子图和第三有向子图存在依赖关系,第四有向子图与第二有向子图和第三有向子图存在依赖关系,第二有向子图与第三有向子图相互独立。
本申请实施例中,首先对神经网络模型的推理过程中需要执行的算子的依赖关系进行计算,根据依赖关系对待执行的算子进行切割,当切割得到的N个算子集合是相互独立的算子集合时,启用N个线程分别对N个算子集合中的算子进行计算,可以启用N个线程同时对N个算子集合中的算子分别进行计算,可以提高神经网络计算的速度,从而降低神经网络的推理时间。
请参阅图3,图3是本申请实施例公开的另一种基于神经网络算法框架的神经网络计算方法的流程示意图,图3是在图1的基础上进一步优化得到的。如图3所示,该基于神经网络算法框架的神经网络计算方法包括如下步骤。
301,移动终端获取M个待执行算子,计算M个待执行算子之间的依赖关系,N为大于或等于2的整数。
302,移动终端依据M个待执行算子之间的依赖关系对M个待执行算子进行切割,得到N个算子集合,N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数。
303,若N个算子集合为相互独立的算子集合,移动终端启用N个线程分别对N个算子集合中的算子进行计算。
本申请实施例中的步骤301至步骤303的具体实施可以参见图1所示的步骤101至步骤103的具体描述,此处不再赘述。
304,若N个算子集合不是相互独立的算子集合,移动终端根据N个算子集合之间的依赖关系,采用顺逆交替迭代调度算法确定N个算子集合中需要并行执行算子和需要串行执行算子。
305,移动终端确定需要并行执行算子与需要串行执行算子的执行顺序,调度N个算子集合中需要并行执行算子和需要串行执行算子进行计算。
本申请实施例中,顺逆交替迭代调度算法,也称为CAP-FB算法,是一种节点调度算法,本申请实施例提供一种节点调度方案使得算子的并行执行时间较短,可以提高算子并行执行速度,进而提高神经网络计算的速度,从而降低神经网络的推理时间。
下面以图2为了说明N个算子集合中需要并行执行算子和需要串行执行算子。图2中,第一算子集合包括第一算子,第二算子集合包括第二算子、第三算子、第四算子,第三算子集合包括第五算子、第六算子、第七算子,第四算子集合包括第八算子。8个算子之间的执行顺序依次为:先执行第一算子,执行完第一算子之后,并行执行第二算子和第五算子;执行完第二算子之后,执行第三算子,执行完第三算子之后,执行第四算子;执行完第五算子之后,执行第六算子,执行完第六算子之后,执行第七算子;执行完第四算子和第七算子之后,最后执行第八算子。其中,需要串行执行的算子为第一算子集合和第四算子集合,需要并行执行的算子为第二算子集合和第三算子集合。
需要说明的是,图2是为了便于理解而举例说明的一种简单的有向图。在实际的神经网络计算过程中,算子的数量成千上万甚至更多,算子之间的依赖关系也更为复杂,需要采用顺逆交替迭代调度算法对算子的执行先后顺序进行调度,从而能够达到最优的计算速度。
可选的,移动终端调度所述N个算子集合中所述需要并行执行算子和所述需要串行执行算子进行计算,具体为:
移动终端确定调度策略,依据调度策略调度N个算子集合中需要并行执行算子和需要串行执行算子进行计算;该调度策略包括能耗优先策略、速度优先策略、均衡策略中的任一种。
其中,能耗优先策略是以降低计算能耗为主的策略,尽可能的降低计算能耗;速度优先策略是以提高计算速度为主的策略,在现有计算资源的基础上,最大限度的提高计算速度。均衡策略是兼顾计算能耗和计算速度的策略,在保证计算速度达到一定阈值的前提下,尽可能的降低计算能耗。不同的调度策略适用不同的场景。比如,当移动终端电量低于一定阈值时,可以采用能耗优先策略。当移动终端没有比神经网络计算的优先级更高的计算时,可以采用计算优先策略。当不符合上述两种场景时,可以采用均衡策略。本申请实施例可以针对不同的场景采用不同的调度策略,以满足不同场景的神经网络计算需求。
可选的,移动终端确定调度策略之前,还可以包括如下步骤:
移动终端获取用于神经网络计算的内存资源和处理电路资源;
移动终端确定调度策略,具体为:
移动终端依据用于神经网络计算的内存资源和处理电路资源确定调度策略。
本申请实施例中,移动终端可以有专属的计算资源用于处理神经网络计算,也可以直接采用中央处理器来处理神经网络计算。如果直接采用中央处理器来处理神经网络计算,移动终端分配给神经网络计算的内存资源和处理电路资源会比较有限。当分配给神经网络计算的内存资源和处理电路资源较多时,可以采用速度优先策略,当分配给神经网络计算的内存资源和处理电路资源较少时,可以采用能耗优先策略或均衡策略。本申请实施例可以根据分配给神经网络计算的不同的内存资源和处理电路资源的多少来调整调度策略,以满足不同硬件资源条件下的神经网络计算需求。
可选的,在执行步骤303之前,还可以执行如下步骤:
移动终端估算第一算子的预计执行时间,第一算子为N个算子集合中任一个集合中的算子;
可选的,在执行步骤303之后,还可以执行如下步骤:
移动终端获取第一算子的实际执行时间,对第一算子的预计执行时间进行修正。
本申请实施例中,当神经网络模型首次运行,由于每个算子的执行时间是不一样的,甚至同一个算子,算的数据量不同,其执行时间也不同。在没有执行第一算子之前,第一算子的预计执行时间是预先设定的,每对该第一算子执行一次,会得到第一算子的实际执行时间,就会对该第一算子的预计执行时间进行一次修正,以逐渐得到该第一算子的准确的预计执行时间。
举例来说,以神经网络模型对图像进行处理为例。在第一帧图像计算之前,假定将所有算子的执行时间设为相同,以用作基础时间,下一帧图像再执行时就会修正(更新)这个算子的实际执行时间,执行的图像帧越多,算子的修正的执行时间越准确,从而能够更加准确的预测算子的执行时间,为后续的算子之间的调度提供准确的数据,从而提高算子调度执行的效率。
本申请实施例中,首先对神经网络模型的推理过程中需要执行的算子的依赖关系进行计算,根据依赖关系对待执行的算子进行切割,当切割得到的N个算子集合是相互独立的算子集合时,启用N个线程分别对N个算子集合中的算子进行计算,可以启用N个线程同时对N个算子集合中的算子分别进行计算,可以提高神经网络计算的速度,从而降低神经网络的推理时间。当N个算子集合不是相互独立的算子集合,根据N个算子集合之间的依赖关系,采用顺逆交替迭代调度算法确定N个算子集合中需要并行执行算子和需要串行执行算子,确定需要并行执行算子与需要串行执行算子的执行顺序,调度N个算子集合中需要并行执行算子和需要串行执行算子进行计算,可以采用顺逆交替迭代调度算法对算子进行调度,使得算子的并行执行时间较短,可以提高算子并行执行速度,进而提高神经网络计算的速度,从而降低神经网络的推理时间。
上述主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,移动终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本申请实施例可以根据上述方法示例对移动终端进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
请参阅图4,图4是本申请实施例公开的一种神经网络计算装置的结构示意图。如图4所示,该神经网络计算装置应用于神经网络算法框架,该神经网络算法框架包括多个张量Tensor单元,该神经网络计算装置400包括通信单元401和处理单元402,其中:
所述通信单元401,用于获取M个待执行算子;
所述处理单元402,用于计算所述M个待执行算子之间的依赖关系,N为大于或等于2的整数;以及用于依据所述M个待执行算子之间的依赖关系对所述M个待执行算子进行切割,得到N个算子集合,所述N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;以及用于在所述N个算子集合为相互独立的算子集合的情况下,启用N个线程分别对所述N个算子集合中的算子进行计算。
可选的,所述处理单元402依据所述M个待执行算子之间的依赖关系对所述M个待执行算子进行切割,得到N个算子集合,具体为:依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子进行切割,得到N个算子集合。
可选的,所述处理单元402计算所述M个待执行算子之间的依赖关系之后,还用于依据所述M个待执行算子之间的依赖关系得到所述M个待执行算子之间的有向图;
所述处理单元402依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子进行切割,得到N个算子集合,具体为:依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子之间的有向图进行切割,得到N个有向子图;其中,每个有向子图对应一个算子集合。
可选的,所述处理单元402,还用于在所述N个算子集合不是相互独立的算子集合的情况下,根据所述N个算子集合之间的依赖关系,采用顺逆交替迭代调度算法确定所述N个算子集合中需要并行执行算子和需要串行执行算子;确定所述需要并行执行算子与所述需要串行执行算子的执行顺序,调度所述N个算子集合中所述需要并行执行算子和所述需要串行执行算子进行计算。
可选的,所述处理单元402调度所述N个算子集合中所述需要并行执行算子和所述需要串行执行算子进行计算,具体为:确定调度策略,依据所述调度策略调度所述N个算子集合中所述需要并行执行算子和所述需要串行执行算子进行计算;所述调度策略包括能耗优先策略、速度优先策略、均衡策略中的任一种。
可选的,所述处理单元402,还用于在确定调度策略之前,获取用于神经网络计算的内存资源和处理电路资源;
所述处理单元402确定调度策略,具体为:依据所述用于神经网络计算的内存资源和处理电路资源确定调度策略。
可选的,所述处理单元402,还用于在启用N个线程分别对所述N个算子集合中的算子进行计算之前,估算第一算子的预计执行时间,所述第一算子为所述N个算子集合中任一个集合中的算子;
所述处理单元402,还用于在启用N个线程分别对所述N个算子集合中的算子进行计算之后,获取所述第一算子的实际执行时间,对所述第一算子的预计执行时间进行修正。
其中,图4的通信单元401可以是通信接口,处理单元402可以是处理器,图4所示的神经网络计算装置还可以包括存储单元403,该存储单元可以是存储器(比如,非易失性存储器)。
实施图4所示的神经网络计算装置,可以对神经网络模型的推理过程中需要执行的算子的依赖关系进行计算,根据依赖关系对待执行的算子进行切割,当切割得到的N个算子集合是相互独立的算子集合时,启用N个线程分别对N个算子集合中的算子进行计算,可以启用N个线程同时对N个算子集合中的算子分别进行计算,可以提高神经网络计算的速度,从而降低神经网络的推理时间。
请参阅图5,图5是本申请实施例公开的一种移动终端的结构示意图。如图5所示,该移动终端500包括处理器501和存储器502,其中,移动终端500还可以包括总线503,处理器501和存储器502可以通过总线503相互连接,总线503可以是外设部件互连标准(Peripheral Component Interconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustry Standard Architecture,简称EISA)总线等。总线503可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。其中,移动终端500还可以包括输入输出设备504,输入输出设备504可以包括显示屏,例如液晶显示屏。存储器502用于存储包含指令的一个或多个程序;处理器501用于调用存储在存储器502中的指令执行上述图2至图3中的部分或全部方法步骤。
实施图5所示的移动终端,可以对神经网络模型的推理过程中需要执行的算子的依赖关系进行计算,根据依赖关系对待执行的算子进行切割,当切割得到的N个算子集合是相互独立的算子集合时,启用N个线程分别对N个算子集合中的算子进行计算,可以启用N个线程同时对N个算子集合中的算子分别进行计算,可以提高神经网络计算的速度,从而降低神经网络的推理时间。
本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于电子数据交换的计算机程序,该计算机程序使得计算机执行如上述方法实施例中记载的任何一种基于神经网络算法框架的神经网络计算方法的部分或全部步骤。
本申请实施例还提供一种计算机程序产品,该计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,该计算机程序可操作来使计算机执行如上述方法实施例中记载的任何一种基于神经网络算法框架的神经网络计算方法的部分或全部步骤。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:Read-Only Memory,简称:ROM)、随机存取器(英文:Random Access Memory,简称:RAM)、磁盘或光盘等。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (7)
1.一种基于神经网络算法框架的神经网络计算方法,其特征在于,包括:
获取M个待执行算子,计算所述M个待执行算子之间的依赖关系,M为大于或等于2的整数;M个待执行算子之间的依赖关系基于每个待执行算子之间的先后执行顺序确定;
依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子进行切割,得到N个算子集合,以最大化的降低所述N个算子集合之间的依赖性;所述N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;
若所述N个算子集合为相互独立的算子集合,启用N个线程分别对所述N个算子集合中的算子进行计算;
若所述N个算子集合不是相互独立的算子集合,根据所述N个算子集合之间的依赖关系,采用顺逆交替迭代调度算法确定所述N个算子集合中需要并行执行算子和需要串行执行算子;
确定所述需要并行执行算子与所述需要串行执行算子的执行顺序,确定调度策略,依据所述调度策略调度所述N个算子集合中所述需要并行执行算子和所述需要串行执行算子进行计算;所述调度策略包括能耗优先策略、速度优先策略、均衡策略中的任一种。
2.根据权利要求1所述的方法,其特征在于,所述计算所述M个待执行算子之间的依赖关系之后,所述方法还包括:
依据所述M个待执行算子之间的依赖关系得到所述M个待执行算子之间的有向图;
所述依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子进行切割,得到N个算子集合包括:
依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子之间的有向图进行切割,得到N个有向子图;其中,每个有向子图对应一个算子集合。
3.根据权利要求1所述的方法,其特征在于,所述确定调度策略之前,所述方法还包括:
获取用于神经网络计算的内存资源和处理电路资源;
所述确定调度策略包括:
依据所述用于神经网络计算的内存资源和处理电路资源确定调度策略。
4.根据权利要求1~3任一项所述的方法,其特征在于,所述启用N个线程分别对所述N个算子集合中的算子进行计算之前,所述方法还包括:
估算第一算子的预计执行时间,所述第一算子为所述N个算子集合中任一个集合中的算子;
所述启用N个线程分别对所述N个算子集合中的算子进行计算之后,所述方法还包括:
获取所述第一算子的实际执行时间,对所述第一算子的预计执行时间进行修正。
5.一种神经网络计算装置,其特征在于,所述神经网络计算装置包括通信单元和处理单元,其中:
所述通信单元,用于获取M个待执行算子;
所述处理单元,用于计算所述M个待执行算子之间的依赖关系,M个待执行算子之间的依赖关系基于每个待执行算子之间的先后执行顺序确定;M为大于或等于2的整数;以及用于依据所述M个待执行算子之间的依赖关系,采用图剖分算法对所述M个待执行算子进行切割,得到N个算子集合,以最大化的降低所述N个算子集合之间的依赖性;所述N个算子集合中的每个算子集合至少包括1个算子,N为大于或等于2的整数;以及用于在所述N个算子集合为相互独立的算子集合的情况下,启用N个线程分别对所述N个算子集合中的算子进行计算;
所述处理单元,还用于在所述N个算子集合不是相互独立的算子集合的情况下,根据所述N个算子集合之间的依赖关系,采用顺逆交替迭代调度算法确定所述N个算子集合中需要并行执行算子和需要串行执行算子;以及用于确定所述需要并行执行算子与所述需要串行执行算子的执行顺序,确定调度策略,依据所述调度策略调度所述N个算子集合中所述需要并行执行算子和所述需要串行执行算子进行计算;所述调度策略包括能耗优先策略、速度优先策略、均衡策略中的任一种。
6.一种移动终端,其特征在于,包括处理器以及存储器,所述存储器用于存储一个或多个程序,所述一个或多个程序被配置成由所述处理器执行,所述程序包括用于执行如权利要求1-4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储电子数据交换的计算机程序,其中,所述计算机程序使得计算机执行如权利要求1-4任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910111499.6A CN109902819B (zh) | 2019-02-12 | 2019-02-12 | 神经网络计算方法、装置、移动终端及存储介质 |
PCT/CN2020/074719 WO2020164469A1 (zh) | 2019-02-12 | 2020-02-11 | 神经网络计算方法、装置、移动终端及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910111499.6A CN109902819B (zh) | 2019-02-12 | 2019-02-12 | 神经网络计算方法、装置、移动终端及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109902819A CN109902819A (zh) | 2019-06-18 |
CN109902819B true CN109902819B (zh) | 2023-04-18 |
Family
ID=66944748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910111499.6A Active CN109902819B (zh) | 2019-02-12 | 2019-02-12 | 神经网络计算方法、装置、移动终端及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109902819B (zh) |
WO (1) | WO2020164469A1 (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902819B (zh) * | 2019-02-12 | 2023-04-18 | Oppo广东移动通信有限公司 | 神经网络计算方法、装置、移动终端及存储介质 |
CN110298437B (zh) * | 2019-06-28 | 2021-06-01 | Oppo广东移动通信有限公司 | 神经网络的分割计算方法、装置、存储介质及移动终端 |
CN110378413A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 神经网络模型处理方法、装置以及电子设备 |
CN110503199A (zh) * | 2019-08-14 | 2019-11-26 | 北京中科寒武纪科技有限公司 | 运算节点的拆分方法和装置、电子设备和存储介质 |
CN110503180B (zh) * | 2019-08-14 | 2021-09-14 | Oppo广东移动通信有限公司 | 模型处理方法、装置以及电子设备 |
CN110674936A (zh) * | 2019-09-24 | 2020-01-10 | 上海寒武纪信息科技有限公司 | 一种神经网络处理方法、装置、计算机设备及存储介质 |
CN111062467B (zh) * | 2019-12-18 | 2023-05-12 | 开放智能机器(上海)有限公司 | 一种应用于ai异构编译器的自动切分神经网络子图方法 |
CN111210005B (zh) * | 2019-12-31 | 2023-07-18 | Oppo广东移动通信有限公司 | 设备运行方法、装置、存储介质及电子设备 |
CN111611479B (zh) * | 2020-05-07 | 2024-02-13 | 北京达佳互联信息技术有限公司 | 用于网络资源推荐的数据处理方法及相关装置 |
CN111984400B (zh) * | 2020-07-17 | 2024-04-02 | 深圳云天励飞技术有限公司 | 神经网络的内存分配方法及装置 |
CN111860820A (zh) * | 2020-07-31 | 2020-10-30 | 北京灵汐科技有限公司 | 神经网络算子的划分方法、装置及划分设备 |
CN112631781A (zh) * | 2020-12-29 | 2021-04-09 | 上海商汤智能科技有限公司 | 一种算子执行方法、装置、电子设备及存储介质 |
CN117501278A (zh) * | 2021-06-18 | 2024-02-02 | 华为技术有限公司 | 运算加速方法及运算加速器 |
CN113657584B (zh) * | 2021-08-31 | 2024-04-09 | 安谋科技(中国)有限公司 | 神经网络模型计算方法、数据处理方法、电子设备及介质 |
CN114429211A (zh) * | 2022-02-07 | 2022-05-03 | 北京百度网讯科技有限公司 | 用于生成信息的方法、装置、设备、介质和产品 |
CN114924745A (zh) * | 2022-05-19 | 2022-08-19 | 北京百度网讯科技有限公司 | 深度学习编译器的运行方法、装置及电子设备 |
CN116523052B (zh) * | 2023-07-05 | 2023-08-29 | 成都阿加犀智能科技有限公司 | 一种快速推理方法、装置及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836691B1 (en) * | 2016-10-27 | 2017-12-05 | Google Inc. | Neural network instruction set architecture |
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8214831B2 (en) * | 2009-05-05 | 2012-07-03 | International Business Machines Corporation | Runtime dependence-aware scheduling using assist thread |
CN103677751B (zh) * | 2012-09-06 | 2016-12-21 | 阿里巴巴集团控股有限公司 | 任务并行处理方法和装置 |
US20160055029A1 (en) * | 2014-08-21 | 2016-02-25 | Qualcomm Incorporated | Programmatic Decoupling of Task Execution from Task Finish in Parallel Programs |
US20160335119A1 (en) * | 2015-05-12 | 2016-11-17 | minds.ai inc | Batch-based neural network system |
KR20240014612A (ko) * | 2015-10-28 | 2024-02-01 | 구글 엘엘씨 | 계산 그래프들 프로세싱 |
CN107748696B (zh) * | 2017-09-20 | 2020-05-01 | 深圳壹账通智能科技有限公司 | 一种任务调度的方法及终端设备 |
CN109902819B (zh) * | 2019-02-12 | 2023-04-18 | Oppo广东移动通信有限公司 | 神经网络计算方法、装置、移动终端及存储介质 |
-
2019
- 2019-02-12 CN CN201910111499.6A patent/CN109902819B/zh active Active
-
2020
- 2020-02-11 WO PCT/CN2020/074719 patent/WO2020164469A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9836691B1 (en) * | 2016-10-27 | 2017-12-05 | Google Inc. | Neural network instruction set architecture |
CN107992329A (zh) * | 2017-07-20 | 2018-05-04 | 上海寒武纪信息科技有限公司 | 一种计算方法及相关产品 |
Also Published As
Publication number | Publication date |
---|---|
CN109902819A (zh) | 2019-06-18 |
WO2020164469A1 (zh) | 2020-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109902819B (zh) | 神经网络计算方法、装置、移动终端及存储介质 | |
CN110211119B (zh) | 图像质量评估方法、装置、电子设备及可读存储介质 | |
CN112948079B (zh) | 任务调度方法、装置、设备和计算机存储介质 | |
US11153375B2 (en) | Using reinforcement learning to scale queue-based services | |
CN110851987B (zh) | 基于加速比预测计算时长的方法、装置和存储介质 | |
CN112925637A (zh) | 用于一边缘运算网络的负载平衡装置及方法 | |
CN106293947B (zh) | 虚拟化云环境下gpu-cpu混合资源分配系统和方法 | |
CN115249315A (zh) | 面向异构计算设备的深度学习图像分类方法及装置 | |
CN112799793B (zh) | 调度方法及装置、电子设备和存储介质 | |
CN116991560A (zh) | 针对语言模型的并行调度方法、装置、设备及存储介质 | |
CN107809737B (zh) | 一种确定基站的网络流量的方法和装置 | |
CN111813535A (zh) | 一种资源配置确定方法、装置及电子设备 | |
CN110995856B (zh) | 一种服务器扩展的方法、装置、设备及存储介质 | |
EP3979505A1 (en) | Method and device for determining number of decoder iterations, and storage medium and electronic device | |
CN113673532B (zh) | 基于量化模型的目标检测方法及装置 | |
CN114021733B (zh) | 模型训练优化方法、装置、计算机设备及存储介质 | |
CN109308327A (zh) | 基于子图模型兼容点中心模型的图计算方法装置介质设备 | |
CN111860758B (zh) | 一种深度学习模型的运行方法、装置、电子设备及介质 | |
CN114358253A (zh) | 一种神经网络模型的时间预估方法及相关产品 | |
CN114297067A (zh) | 脚本测试方法及装置 | |
CN114079953A (zh) | 无线网络系统的资源调度方法、装置、终端及存储介质 | |
CN109739649B (zh) | 资源管理方法、装置、设备及计算机可读存储介质 | |
CN108268310B (zh) | 一种确定最小调度粒度的方法及装置 | |
CN111915017A (zh) | 一种校准方法、装置、终端设备及存储介质 | |
CN112308217A (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 |