CN110717574B - 一种神经网络运行方法、装置及异构智能芯片 - Google Patents
一种神经网络运行方法、装置及异构智能芯片 Download PDFInfo
- Publication number
- CN110717574B CN110717574B CN201810757736.1A CN201810757736A CN110717574B CN 110717574 B CN110717574 B CN 110717574B CN 201810757736 A CN201810757736 A CN 201810757736A CN 110717574 B CN110717574 B CN 110717574B
- Authority
- CN
- China
- Prior art keywords
- operated
- layer
- neural network
- network
- layers
- 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/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
-
- 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)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本发明实施例提供了一种神经网络运行方法、装置及异构智能芯片,其中,神经网络运行方法包括:获取待运行的神经网络;对神经网络进行网络层划分,得到该神经网络的多个待运行层;针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。通过本方案,可以提升神经网络的运行效率。
Description
技术领域
本发明涉及数据处理技术领域,特别是涉及一种神经网络运行方法、装置及异构智能芯片。
背景技术
神经网络作为机器学习和深度学习的基础,通过模仿人脑的机制来解析数据,是一种通过建立和模拟人脑进行分析学习的智能模型。目前,神经网络在图像分类、目标检测、目标跟踪、语音识别等方面已经成为了主流的应用方法。
随着深度学***台已无法满足神经网络高运行效率的要求。为了应对该问题,相关的神经网络运行方法中,通过对神经网络中的每个网络层进行优化,降低每个网络层的运算量,或者,将每个网络层的数据搬运和计算这两个操作并行,以此来缩短整个神经网络运行的耗时,进而提高神经网络的运行效率。
但是,目前随着神经网络的发展,神经网络中网络层的运算也越来越复杂,对网络层的优化往往基于已知的运算机制,这样,使得通过对网络层进行优化处理而提高的神经网络的运行效率实际是有限的,运行效率的提升效果欠佳。
发明内容
本发明实施例的目的在于提供一种神经网络运行方法、装置及异构智能芯片,以提升神经网络的运行效率。具体技术方案如下:
第一方面,本发明实施例提供了一种神经网络运行方法,所述方法包括:
获取待运行的神经网络;
对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层;
针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。
可选的,所述获取待运行的神经网络,包括:
按照预设网络优先级,从待运行的多个神经网络中获取优先级最高的神经网络。
可选的,所述对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层,包括:
基于所述神经网络中网络层的数目,对所述神经网络进行划分,得到多个待运行层。
可选的,所述针对各待运行层,确定满足预设运行条件的计算核心,包括:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层的运算规则;基于所述运算规则,确定具有与所述运算规则相应的运行条件的计算核心;发送所述当前待运行层至所述计算核心,以使所述计算核心运行所述当前待运行层。
可选的,在所述对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层之后,所述方法还包括:
通过分析得到各待运行层的计算量,并判断各待运行层的计算量是否大于预设阈值;
针对计算量大于所述预设阈值的待运行层,拆分该待运行层,得到该待运行层的多个子层;
所述针对各待运行层,确定满足预设运行条件的计算核心,包括:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层中各未运行的子层的运算规则;基于各运算规则,确定具有与该运算规则相应的运行条件的计算核心;发送各未运行的子层至相应的各计算核心,以使各计算核心运行各未运行的子层。
第二方面,本发明实施例提供了一种神经网络运行装置,所述装置包括:
获取模块,用于获取待运行的神经网络;
网络解析模块,用于对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层;
调度器模块,用于针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。
可选的,所述获取模块,具体用于:
按照预设网络优先级,从待运行的多个神经网络中获取优先级最高的神经网络。
可选的,所述网络解析模块,具体用于:
基于所述神经网络中网络层的数目,对所述神经网络进行划分,得到多个待运行层。
可选的,所述调度器模块,具体用于:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层的运算规则;基于所述运算规则,确定具有与所述运算规则相应的运行条件的计算核心;发送所述当前待运行层至所述计算核心,以使所述计算核心运行所述当前待运行层。
可选的,所述装置还包括:
层拆分模块,用于通过分析得到各待运行层的计算量,并判断各待运行层的计算量是否大于预设阈值;针对计算量大于所述预设阈值的待运行层,拆分该待运行层,得到该待运行层的多个子层;
所述调度器模块,具体用于:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层中各未运行的子层的运算规则;基于各运算规则,确定具有与该运算规则相应的运行条件的计算核心;发送各未运行的子层至相应的各计算核心,以使各计算核心运行各未运行的子层。
第三方面,本发明实施例提供了一种异构智能芯片,包括主核心、多个计算核心及存储介质,其中,
所述存储介质,用于存放计算机程序;
所述主核心,用于执行所述存储介质上所存放的计算机程序时,实现本发明实施例第一方面任一所述的方法步骤,确定满足预设运行条件的计算核心;
各计算核心,用于按照预设运行顺序运行神经网络的各待运行层。
第四方面,本发明实施例提供了一种存储介质,所述存储介质内存储有计算机程序,所述计算机程序被主核心执行时实现本发明实施例第一方面任一所述的方法步骤。
本发明实施例提供的一种神经网络运行方法、装置及异构智能芯片,通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例的神经网络运行方法的流程示意图;
图2为本发明另一实施例的神经网络运行方法的流程示意图;
图3为本发明实施例的待运行层拆分示意图;
图4为本发明实施例的异构智能芯片中主核心的结构示意图;
图5为本发明实施例的调度模块的执行流程示意图;
图6为本发明一实施例的神经网络运行装置的结构示意图;
图7为本发明另一实施例的神经网络运行装置的结构示意图;
图8为本发明实施例的异构智能芯片的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了提升神经网络的运行效率,本发明实施例提供了一种神经网络运行方法、装置及异构智能芯片。下面,首先对本发明实施例所提供的神经网络运行方法进行介绍。
本发明实施例所提供的一种神经网络运行方法的执行主体可以为实现图像分类、语音识别、目标检测等功能的异构智能芯片,异构智能芯片的内部集成了不同指令集合体系架构的多个处理器核心(如CPU,GPU等),至少包括具有逻辑处理能力的主核心以及支持常见神经网络层计算的计算核心(例如,可直接通过配置寄存器即可运行网络层计算的CNN(Convolutional Neural Network,卷积神经网络),或支持二次编程开发的DSP(DigitalSignal Processing,数字信号处理)等)。实现本发明实施例所提供的一种神经网络运行方法的方式可以为设置于执行主体中的软件、硬件电路和逻辑电路中的至少一种方式。
如图1所示,为本发明实施例所提供的一种神经网络运行方法,该神经网络运行方法可以包括如下步骤:
S101,获取待运行的神经网络。
神经网络是指人工神经网络,是机器学习和深度学习的基础,目前,主流的神经网络主要包括CNN、RNN(Recurrent Neural Network,循环神经网络)、DNN(Deep NeuralNetwork,深度神经网络)几类,可以通过端到端的样本训练,让网络具备某种功能。
随着应用需求的增加和芯片处理能力的提升,在同一个设备中运行多个神经网络(多种神经网络或同一神经网络多次运行)的应用场景已经成为趋势,也就是说,待运行的神经网络可能为多个。
可选的,S101具体可以为:按照预设网络优先级,从待运行的多个神经网络中获取优先级最高的神经网络。
由于不同的神经网络实现不同的功能、且对于不同的神经网络有不同的实时性要求,根据功能和实时性要求的不同,网络优先级属性也不相同,因此,针对每个神经网络预先设置有各神经网络的网络优先级。功能更为重要、实时性要求更高的神经网络,其网络优先级也越高,按照预设网络优先级,可以优先运行优先级更高的神经网络。当然,优先级最高的神经网络可能不止一个,如果异构智能芯片的计算核心允许运行多个神经网络,可以同步并行地运行多个神经网络。考虑神经网络的预设网络优先级,满足了不同神经网络的不同实时性要求,具有较高的适应性。
但是,由于不同的神经网络之间并无关联,如果异构智能芯片中,包括了足够的计算核心,也可以同步并行地运行多个优先级不同的神经网络,这里不做具体的限定。
S102,对神经网络进行网络层划分,得到该神经网络的多个待运行层。
神经网络中包含有多个网络层(例如,卷积层、池化层等),每个网络层用于获取上一网络层的输出,进行卷积、池化等运算。对于网络层而言,其运算是相互独立的,因此,只要保证按照神经网络的执行顺序传递激活量(网络层之间传递的数据),网络层可在独立的计算核心上运行。这样就将庞大的神经网络拆分成了可由计算核心快速、高效运行的网络层。
在对神经网络进行网络层划分时,可以将每一个网络层划分为一个待运行层;当然,还可以根据网络层的复杂程度,将相连的计算相关的多个网络层划分为一个待运行层,例如,有两个相连的网络层,一个网络层为卷积层,另一个相连的网络层为池化层,可以将这两个网络层的计算划分为一个待运行层,以减少待运行层切换带来的带宽和调度损耗。
可选的,S102具体可以为:基于神经网络中网络层的数目,对该神经网络进行划分,得到与神经网络中网络层的数目相同数量的多个待运行层。
如果异构智能芯片中计算核心的数量足够,可以将神经网络中每一个网络层划分为一个待运行层,例如,一个神经网络中包含5个卷积层和2个池化层,则划分得到的待运行层的数据即为7个。将每个网络层划分为一个待运行层可以保证每一个待运行层的运算量足够少,从而保证了待运行层的运行效率。
S103,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。
在确定各计算核心之后,即可将各待运行层发送至所确定的对应的计算核心,则各计算核心可以按照预设运行顺序运行待运行层。由于神经网络是一个有向无环图结构,通常后一网络层的输入数据依赖于前一网络层的输出数据,故对单个神经网络而言,需要按照预设运行顺序逐层顺序运行。
在S102中划分得到的多个待运行层实际相当于待运行的任务链,每一个待运行层就是一个任务节点,在得到任务链后,需要实时检查每个计算核心的空闲情况。针对各待运行层,从空闲的计算核心中找到满足预设运行条件的计算核心,预设运行条件即为允许运行待运行层的条件,例如,某一个待运行层需要进行5×5的卷积运算,则所确定的运行该待运行层的计算核心至少需要满足能够运行5×5卷积运算的条件,这里所提及的条件为计算核心的运算性能,可以包括运算速度、运算步长、响应时间等。
如果待运行的神经网络为多个,且异构智能芯片中计算核心的数量足够,则多个神经网络可以并行运行,多个神经网络的并行运行可以更为充分的利用平台硬件资源,进一步加速神经网络运行。
可选的,S103具体可以为:判断当前待运行层是否已完成运行;若当前待运行层未完成运行,则获取当前待运行层的运算规则;基于运算规则,确定具有与该运算规则相应的运行条件的计算核心;发送当前待运行层至该计算核心,以使该计算核心运行当前待运行层。
如果当前待运行层已完成运行,则按照预设运行顺序,确定下一个待运行层作为当前待运行层,并执行判断当前待运行层是否已完成运行的步骤。
如果神经网络中各待运行层均完成运行,则输出神经网络的运行结果。
同一个神经网络中各网络层是逐层按序执行的,因此,在确定运行各待运行层的计算核心时,各计算核心可以是按照预设运行顺序一一确定的,并且对于一个神经网络而言,在所有网络层都运算结束后,由最后一个网络层计算得到的输出结果即为该神经网络的运算结果。当前待运行层的运算规则可以为例如该待运行层进行卷积运算的卷积大小、实际的计算量等规则,计算核心的计算空间和计算能力至少需要满足待运行层的计算规则,通过将待运行层发送至计算核心,计算核心即运行该待运行层,在发送待运行层后,即可确定当前待运行层已完成运行。
通过循环执行上述步骤,保证神经网络中的各待运行层按序完成运行,进而实现神经网络的运行,在神经网络中各待运行层均完成运行后,可以主动输出神经网络的运行结果,也可以被动输出神经网络的运行结果,例如,可以通知的形式告知等待神经网络完成运行的设备,由该设备主动获取神经网络的输出。
应用本实施例,通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
基于图1所示实施例,本发明实施例还提供了一种神经网络运行方法,如图2所示,该神经网络运行方法包括如下步骤:
S201,获取待运行的神经网络。
S202,对神经网络进行网络层划分,得到该神经网络的多个待运行层。
S201、S202与图1所示实施例的S101和S102相同,具有相同或相似的有益效果,这里不再赘述。
S203,通过分析得到各待运行层的计算量,并判断各待运行层的计算量是否大于预设阈值。
S204,针对计算量大于预设阈值的待运行层,拆分该待运行层,得到该待运行层的多个子层。
部分待运行层的计算量可能会非常大,异构智能芯片中可能不包含能够运行该待运行层的计算核心,因此,可以继续拆分该待运行层,将该待运行层拆分为可并行运行的多个并行子层,则计算核心每次运行的任务节点就是一个子层。如图3所示,针对一个具有N个网络层的神经网络,经过划分、拆分后,将网络层0拆分为网络层0-0和网络层0-1两个子层,将网络层1拆分为网络层1-0、网络层1-1和网络层1-2三个子层,这些子层就是最小的任务节点。对于同一待运行层而言,该待运行层的多个子层可以由各自对应的计算核心并行运行,从而更进一步的提升运行效率。子层可以依据有助于计算核心更高效的运行的数据对齐特性等属性拆分。对于未拆分子层的待运行层而言,该待运行层即为一个子层(即一个任务节点)。
S205,判断当前待运行层是否已完成运行,如果否,则执行S206至S208,如果是,则执行S209。
S206,获取当前待运行层中各未运行的子层的运算规则。
S207,基于各运算规则,确定具有与该运算规则相应的运行条件的计算核心。
S208,发送各未运行的子层至相应的各计算核心,以使各计算核心运行各未运行的子层。
S209,判断神经网络中各待运行层是否均完成运行,如果否则执行S210,如果是则执行S211。
S210,按照预设运行顺序,确定下一个待运行层作为当前待运行层,并返回执行S205。
S211,输出神经网络的运行结果。
对于子层而言,每一个子层是计算核心运行的最小任务节点,因此,可以根据各子层的运算规则来确定能够运行该子层的计算核心,通过将各子层发送至对应的计算核心,分别由各计算核心进行运算,对于同一待运行层的子层,计算核心可以并行运算,而对于同一神经网络的不同待运行层,计算核心按序运行,从而极大程度的提升了神经网络的运行效率。并且,如果异构智能芯片中计算核心的数量足够多,则可以并行执行多个神经网络,保证了多个神经网络的运行效率。
应用本实施例,通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
并且,通过以子层为最小任务节点在异构智能芯片上运行,使得神经网络的运行更细化,提升了神经网络并行运行的能力,从而使充分利用硬件计算资源成为可能;实时调度拆分后的网络任务,使多网络并行的实现具有良好的性能和适应性。
本发明实施例的核心功能集中在异构智能芯片的主核心上,下面从主核心的主要结构和各模块的功能来对本发明实施例所提供的神经网络运行方法进行详细介绍。图4为主核心的模块框图,主核心主要包括网络解析和层拆分模块401、调度器模块402、计算核心驱动模块403。
网络解析和层拆分模块401主要完成对神经网络的解析和网络层拆分的功能,其输入是神经网络,输出是已经拆分成子任务的网络任务链。本发明实施例的目的是实现计算核心的充分利用,故任务拆分是本发明实施例的重点,其拆分的目标和策略主要包括:将神经网络计算任务拆分成比网络更小的单元,越细力度的任务拆分越有助于多网络并行的均匀性;将顺序执行的网络的某层计算任务拆分成可并行执行的多个并列子任务,使单个网络也具备一定的并行执行能力;将计算任务拆分为更适合计算核心执行的小单元,例如计算任务的数据满足一定的对齐特性,有助于计算核心更高效地执行。
为实现上述三个目标,网络解析和层拆分模块401的拆分方法为:将神经网络以层为单位进行划分;计算量太大的层,继续拆分成适合计算核心执行的多个并列子层;计算核心每次执行的任务单元就是子层。具体的拆分示例如图3所示,这里不再赘述。
调度器模块402和网络解析和层拆分模块401相连,其主要功能是接收网络解析和层拆分模块401生成的网络任务链,并实时检查每个计算核心的空闲情况,从多个网络任务链中获取可并行的任务单元,将其下发到某个计算核心中执行。调度器模块402需要维护每个网络任务链的运行状态,并解决尽可能让多个神经网络的任务执行并行化的问题。同时,考虑不同神经网络执行的优先程度不同,某些神经网络需要优先完成,故调度策略中需考虑神经网络排序的支持,例如通过增加网络优先级来保证实时性要求高的神经网络的任务的优先执行等。
调度器模块402实际执行神经网络,并负责任务调度和管理,它的性能决定了本发明实施例所提供的神经网络运行方法加速的效果,故其应具备较好的调度策略算法。在调度策略中,主要考虑如下几点:同一神经网络的网络层必须顺序执行;同一神经网络某一网络层的多个子层可以并行在不同的计算核心中执行;不同神经网络的网络层可以并行在不同的计算核心中并行执行;优先级较高的神经网络任务优先执行。
如图5所示,给出了调度器模块402的执行流程。调度器模块402的执行是一个循环:不断从多个神经网络中选择网络,并从网络中选取待执行的任务,调用计算核心执行。详细步骤如下:
S501,从当前待执行的多个神经网络中,选择一个网络。选择网络需考虑网络的优先级属性,优先选择实时性要求高的网络。
S502,判断该网络当前待运行层的状态,如未完成,则执行S503,如完成,则执行S505。
S503,从当前未完成的网络层中,选择未执行的子层。
S504,实时查询可用计算核心的空闲状态,选择合适的计算核心执行子层,并返回执行S501。
S505,判断该网络是否所有网络层都已完成,如已完成,则执行S506,如未完成,则执行S507。
S506,网络已完成,则告知等待网络完成的程序,可以获取网络输出,并返回执行S501。
S507:网络未完成,继续选择下一层执行。
计算核心驱动模块403和调度器模块402相连,其主要功能是为调度器模块402提供计算核心调用的功能,每次对计算核心的调用,都是以最小任务单元为内容。
通过本方案,主核心将神经网络拆分成适合计算核心执行的层和子层,以子层为最小任务单元在异构智能芯片上执行。通过上述方法,使得神经网络的执行更细化,提升了神经网络并行执行的能力:一是神经网络的网络层拆分成可并行执行的子层,二是多个神经网络间的网络层可以并行执行,从而使充分利用芯片的硬件计算资源成为可能。
并且,主核心中的调度器模块,通过管理计算核心的空闲和忙碌,实时调度拆分后的网络任务,并采用设置优先级等方法,对任务调度进行排序。通过上述方法,使多神经网络并行的实现具有良好的性能和适应性,优先级等方法的使用,也满足了不同神经网络的不同实时性要求。
相应于上述方法实施例,本法实施例提供了一种神经网络运行装置,如图6所示,该神经网络运行装置包括:
获取模块610,用于获取待运行的神经网络。
网络解析模块620,用于对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层。
调度器模块630,用于针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。
可选的,所述获取模块610,具体可以用于:按照预设网络优先级,从待运行的多个神经网络中获取优先级最高的神经网络。
可选的,所述网络解析模块620,具体可以用于:基于所述神经网络中网络层的数目,对所述神经网络进行划分,得到多个待运行层。
可选的,所述调度器模块630,具体可以用于:判断当前待运行层是否已完成运行;若所述当前待运行层未完成运行,则获取所述当前待运行层的运算规则;基于所述运算规则,确定具有与所述运算规则相应的运行条件的计算核心;发送所述当前待运行层至所述计算核心,以使所述计算核心运行所述当前待运行层。
应用本实施例,通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
基于图6所示实施例,本发明实施例还提供了一种神经网络运行装置,如图7所示,该神经网络运行装置包括:
获取模块710,用于获取待运行的神经网络。
网络解析模块720,用于对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层。
层拆分模块730,用于通过分析得到各待运行层的计算量,并判断各待运行层的计算量是否大于预设阈值;针对计算量大于所述预设阈值的待运行层,拆分该待运行层,得到该待运行层的多个子层。
调度器模块740,用于针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。
可选的,所述调度器模块740,具体可以用于:判断当前待运行层是否已完成运行;若所述当前待运行层未完成运行,则获取所述当前待运行层中各未运行的子层的运算规则;基于各运算规则,确定具有与该运算规则相应的运行条件的计算核心;发送各未运行的子层至相应的各计算核心,以使各计算核心运行各未运行的子层。
应用本实施例,通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
并且,通过以子层为最小任务节点在异构智能芯片上运行,使得神经网络的运行更细化,提升了神经网络并行运行的能力,从而使充分利用硬件计算资源成为可能;实时调度拆分后的网络任务,使多网络并行的实现具有良好的性能和适应性。
为了提升神经网络的运行效率,本发明实施例还提供了一种异构智能芯片,如图8所示,包括主核心810、多个计算核心820以及存储介质,其中,
所述存储介质,用于存放计算机程序;
所述主核心810,用于执行所述存储介质上所存放的计算机程序时,实现本发明实施例所提供的神经网络运行方法的所有步骤,确定满足预设运行条件的计算核心;
各计算核心820,用于按照预设运行顺序运行神经网络的各待运行层。
其中多个计算核心820可以并行处理,也可以串行处理,这多个计算核心820可以相同,如都可以是CPU,也可以是异构的计算单元,如包括CPU、GPU、FPGA、ASIC中的任意两种或任意多种。
上述存储介质可以包括RAM(Random Access Memory,随机存取存储器),也可以包括NVM(Non-Volatile Memory,非易失性存储器),例如至少一个磁盘存储器。存储介质可以是异构智能芯片中独立于主核心和计算核心的存储介质,也可以为主核心或者计算核心的内存。
上述主核心和计算核心可以是通用处理器,包括CPU(Central Processing Unit,中央处理器)、NP(Network Processor,网络处理器)等;还可以是DSP(Digital SignalProcessing,数字信号处理器)、ASIC(Application Specific Integrated Circuit,专用集成电路)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本实施例中,该异构智能芯片中主核心通过读取存储介质中存储的计算机程序,并通过运行该计算机程序,能够实现:通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
另外,相应于上述实施例所提供的神经网络运行方法,本发明实施例提供了一种存储介质,该存储介质内存储有计算机程序,所述计算机程序被主核心执行时实现本发明实施例所提供的神经网络运行方法的所有步骤。
本实施例中,存储介质存储有在运行时执行本发明实施例所提供的神经网络运行方法的计算机程序,因此能够实现:通过获取待运行的神经网络,对该神经网络进行网络层划分,得到该神经网络的多个待运行层,针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层。由于越来越多的芯片厂商推出了支持运行神经网络的异构智能芯片,这些异构智能芯片中通常集成了一个或者多个计算核心,通过对神经网络进行网络层划分,将神经网络划分为多个更易运行的多个待运行层,经过将各待运行层分配到满足预设运行条件的计算核心中运行,使得异构智能芯片的硬件计算能力得到充分利用,从而提升了整个神经网络的运行效率。
对于异构智能芯片以及存储介质实施例而言,由于其所涉及的方法内容基本相似于前述的方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、异构智能芯片以及存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种神经网络运行方法,其特征在于,所述方法用于异构智能芯片,所述异构智能芯片中集成有不同指令集合体系架构的多个处理器核心,至少包括集成有多个计算核心,所述方法包括:
获取待运行的神经网络;
对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层;其中,根据网络层的复杂程度,将相连的计算相关的多个网络层划分为一个待运行层,或者将所述神经网络中的每一个网络层划分为一个待运行层;
针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层;
所述针对各待运行层,确定满足预设运行条件的计算核心,包括:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层的运算规则;基于所述运算规则,确定具有与所述运算规则相应的运行条件的计算核心;发送所述当前待运行层至所述计算核心,以使所述计算核心运行所述当前待运行层,其中,所述预设运行条件包括:运算速度、运算步长、响应时间;
在所述对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层之后,所述方法还包括:
通过分析得到各待运行层的计算量,并判断各待运行层的计算量是否大于预设阈值;
针对计算量大于所述预设阈值的待运行层,将所述待运行层依据数据对齐特征拆分为并行运行的多个并行子层;所述异构智能芯片的一个计算核心对应运行一个子层;
所述针对各待运行层,确定满足预设运行条件的计算核心,包括:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层中各未运行的子层的运算规则;基于各运算规则,确定具有与该运算规则相应的运行条件的计算核心;发送各未运行的子层至相应的各计算核心,以使各计算核心运行各未运行的子层。
2.根据权利要求1所述的方法,其特征在于,所述获取待运行的神经网络,包括:
按照预设网络优先级,从待运行的多个神经网络中获取优先级最高的神经网络。
3.根据权利要求1所述的方法,其特征在于,所述对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层,包括:
基于所述神经网络中网络层的数目,对所述神经网络进行划分,得到多个待运行层。
4.一种神经网络运行装置,其特征在于,所述装置中集成有异构智能芯片,所述异构智能芯片中集成集成有不同指令集合体系架构的多个处理器核心,至少包括有多个计算核心,所述装置包括:
获取模块,用于获取待运行的神经网络;
网络解析模块,用于对所述神经网络进行网络层划分,得到所述神经网络的多个待运行层;其中,根据网络层的复杂程度,将相连的计算相关的多个网络层划分为一个待运行层,或者将所述神经网络中的每一个网络层划分为一个待运行层;
调度器模块,用于针对各待运行层,确定满足预设运行条件的计算核心,以使各计算核心按照预设运行顺序运行各待运行层;
所述调度器模块,具体用于:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层的运算规则;基于所述运算规则,确定具有与所述运算规则相应的运行条件的计算核心;发送所述当前待运行层至所述计算核心,以使所述计算核心运行所述当前待运行层,其中,所述预设运行条件包括:运算速度、运算步长、响应时间;
层拆分模块,用于通过分析得到各待运行层的计算量,并判断各待运行层的计算量是否大于预设阈值;针对计算量大于所述预设阈值的待运行层,将所述待运行层依据数据对齐特征拆分为并行运行的多个并行子层;所述异构智能芯片的一个计算核心对应运行一个子层;
所述调度器模块,具体用于:
判断当前待运行层是否已完成运行;
若所述当前待运行层未完成运行,则获取所述当前待运行层中各未运行的子层的运算规则;基于各运算规则,确定具有与该运算规则相应的运行条件的计算核心;发送各未运行的子层至相应的各计算核心,以使各计算核心运行各未运行的子层。
5.根据权利要求4所述的装置,其特征在于,所述获取模块,具体用于:
按照预设网络优先级,从待运行的多个神经网络中获取优先级最高的神经网络。
6.根据权利要求4所述的装置,其特征在于,所述网络解析模块,具体用于:
基于所述神经网络中网络层的数目,对所述神经网络进行划分,得到多个待运行层。
7.一种异构智能芯片,其特征在于,包括主核心、多个计算核心及存储介质,其中,
所述存储介质,用于存放计算机程序;
所述主核心,用于执行所述存储介质上所存放的计算机程序时,实现权利要求1-3任一所述的方法步骤,确定满足预设运行条件的计算核心;
各计算核心,用于按照预设运行顺序运行神经网络的各待运行层。
8.一种存储介质,其特征在于,所述存储介质内存储有计算机程序,所述计算机程序被主核心执行时实现权利要求1-3任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810757736.1A CN110717574B (zh) | 2018-07-11 | 2018-07-11 | 一种神经网络运行方法、装置及异构智能芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810757736.1A CN110717574B (zh) | 2018-07-11 | 2018-07-11 | 一种神经网络运行方法、装置及异构智能芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110717574A CN110717574A (zh) | 2020-01-21 |
CN110717574B true CN110717574B (zh) | 2023-07-07 |
Family
ID=69208951
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810757736.1A Active CN110717574B (zh) | 2018-07-11 | 2018-07-11 | 一种神经网络运行方法、装置及异构智能芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110717574B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495866A (zh) * | 2020-03-19 | 2021-10-12 | 北京希姆计算科技有限公司 | 基于神经网络的数据计算方法及装置、多核架构芯片 |
CN111488970A (zh) * | 2020-04-03 | 2020-08-04 | 北京思朗科技有限责任公司 | 神经网络的执行优化方法及装置 |
CN111860810A (zh) * | 2020-06-30 | 2020-10-30 | 浪潮(北京)电子信息产业有限公司 | 一种基于fpga的神经网络运算方法、装置及设备 |
CN111737193B (zh) * | 2020-08-03 | 2020-12-08 | 深圳鲲云信息科技有限公司 | 数据存储方法、装置、设备和存储介质 |
CN111985634B (zh) * | 2020-08-21 | 2024-06-14 | 北京灵汐科技有限公司 | 神经网络的运算方法、装置、计算机设备及存储介质 |
CN111814967B (zh) * | 2020-09-11 | 2021-02-23 | 鹏城实验室 | 神经网络模型的推理运算量计算方法、设备及存储介质 |
CN113158243A (zh) * | 2021-04-16 | 2021-07-23 | 苏州大学 | 分布式图像识别的模型推理方法及*** |
CN114647610B (zh) * | 2022-02-17 | 2022-11-29 | 北京百度网讯科技有限公司 | 语音芯片实现方法、语音芯片及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956658A (zh) * | 2016-04-29 | 2016-09-21 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置及芯片 |
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
CN108171117A (zh) * | 2017-12-05 | 2018-06-15 | 南京南瑞信息通信科技有限公司 | 基于多核异构并行计算的电力人工智能视觉分析*** |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102779410B (zh) * | 2012-07-19 | 2014-08-06 | 杭州师范大学 | 一种多源异类海量交通数据融合的并行实现方法 |
CN105607955A (zh) * | 2015-12-23 | 2016-05-25 | 浪潮集团有限公司 | 一种计算任务分配的方法及装置 |
CN107341545A (zh) * | 2017-07-25 | 2017-11-10 | 郑州云海信息技术有限公司 | 一种深度神经网络运算***及方法 |
CN108228969A (zh) * | 2017-12-07 | 2018-06-29 | 中国航空工业集团公司西安航空计算技术研究所 | 一种面向深度神经网络的双fpga协同工作方法 |
-
2018
- 2018-07-11 CN CN201810757736.1A patent/CN110717574B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956658A (zh) * | 2016-04-29 | 2016-09-21 | 北京比特大陆科技有限公司 | 数据处理方法、数据处理装置及芯片 |
CN107463990A (zh) * | 2016-06-02 | 2017-12-12 | 国家计算机网络与信息安全管理中心 | 一种卷积神经网络的fpga并行加速方法 |
CN108171117A (zh) * | 2017-12-05 | 2018-06-15 | 南京南瑞信息通信科技有限公司 | 基于多核异构并行计算的电力人工智能视觉分析*** |
CN108090565A (zh) * | 2018-01-16 | 2018-05-29 | 电子科技大学 | 一种卷积神经网络并行化训练加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110717574A (zh) | 2020-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110717574B (zh) | 一种神经网络运行方法、装置及异构智能芯片 | |
CN113254178B (zh) | 一种任务调度方法、装置、电子设备及可读存储介质 | |
US20200249998A1 (en) | Scheduling computation graph heterogeneous computer system | |
US20180165579A1 (en) | Deep Learning Application Distribution | |
US11609792B2 (en) | Maximizing resource utilization of neural network computing system | |
CN112711478B (zh) | 基于神经网络的任务处理方法、装置、服务器和存储介质 | |
CN110826708B (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN112328380A (zh) | 一种基于异构计算的任务调度方法及装置 | |
CN110689121A (zh) | 一种用多核处理器实现神经网络模型拆分方法及相关产品 | |
CN114580653A (zh) | 机器学习计算优化方法和编译器 | |
CN110058882B (zh) | 一种用于cnn加速的opu指令集定义方法 | |
CN110308982A (zh) | 一种共享内存复用方法及装置 | |
CN114217966A (zh) | 基于资源调整的深度学习模型动态批处理调度方法和*** | |
CN117271101B (zh) | 一种算子融合方法、装置、电子设备及存储介质 | |
KR20220016859A (ko) | 디지털 처리 시스템에서 매트릭스 작업을 스케줄링하기 위한 방법 및 장치 | |
CN115829006A (zh) | 神经网络模型的编译方法、装置、电子设备和存储介质 | |
CN112817730A (zh) | 深度神经网络服务批处理调度方法、***及gpu | |
Maruf et al. | Extending resources for avoiding overloads of mixed‐criticality tasks in cyber‐physical systems | |
CN110928666B (zh) | 一种Spark环境中基于内存优化任务并行度的方法和*** | |
CN113127173B (zh) | 一种异构感知的集群调度方法及装置 | |
CN114662932A (zh) | 一种节点分级的工作流类定时任务调度方法 | |
US20210390405A1 (en) | Microservice-based training systems in heterogeneous graphic processor unit (gpu) cluster and operating method thereof | |
KR20210023401A (ko) | 뉴럴 네트워크 연산 방법 및 이를 포함하는 시스템 | |
CN111985634B (zh) | 神经网络的运算方法、装置、计算机设备及存储介质 | |
Maste et al. | Intelligent dynamic time quantum allocation in mlfq scheduling |
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 |