CN111985634A - 神经网络的运算方法、装置、计算机设备及存储介质 - Google Patents

神经网络的运算方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111985634A
CN111985634A CN202010852104.0A CN202010852104A CN111985634A CN 111985634 A CN111985634 A CN 111985634A CN 202010852104 A CN202010852104 A CN 202010852104A CN 111985634 A CN111985634 A CN 111985634A
Authority
CN
China
Prior art keywords
layer
target layer
neural network
folding
core
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.)
Pending
Application number
CN202010852104.0A
Other languages
English (en)
Inventor
何伟
沈杨书
祝夭龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Lynxi Technology Co Ltd
Original Assignee
Beijing Lynxi Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Lynxi Technology Co Ltd filed Critical Beijing Lynxi Technology Co Ltd
Priority to CN202010852104.0A priority Critical patent/CN111985634A/zh
Publication of CN111985634A publication Critical patent/CN111985634A/zh
Priority to PCT/CN2021/112471 priority patent/WO2022037490A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

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)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种神经网络的运算方法、装置、计算机设备及存储介质。神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,所述方法包括:当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。本发明实施例的技术方案提供了一种新的折叠组间的运行机制,减少了折叠组式神经网络的运算耗时,并提高了折叠组式神经网络的运算效率。

Description

神经网络的运算方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及计算机技术,具体涉及神经网络以及AI技术领域,尤其涉及一种神经网络的运算方法、装置、计算机设备及存储介质。
背景技术
目前,为了提高神经网络的运算速度,可以将神经网络加载至物理芯片中,由物理芯片上的运算核实现神经网络各层的运算功能。其中,可以将神经网络中各层的权重信息一次性加载至物理芯片上进行运算。但是,当神经网络的权重信息的数据量大于物理芯片的存储量时,无法实现权重信息的一次性加载。
为了解决上述问题,现有技术可以将神经网络进行折叠处理,如图1a所示,可以将包括7个层的神经网络划分至两个折叠组中,折叠组一中包括第一层神经网络到第四层神经网络,折叠组二中包括第五层神经网络到第七层神经网络。请参考图1b,为了运行上述神经网络,物理芯片中的运算核首先加载折叠组一所需的权重信息进行折叠组一的运算,并在全部运算完成后,将中间数据暂存在内存中,继续加载折叠组二所需的权重信息后,使用内存中的中间数据再进行折叠组二的运算。
发明人在实现本发明的过程中,发现:现有技术中的多个折叠组之间采用流水式运算,在完成前一折叠组的运算之后,才能进行后一折叠组的运算,整个运算过程耗时长,运算效率低。
发明内容
本发明实施例提供了一种神经网络的运算方法、装置、计算机设备及存储介质,以提高折叠组运行场景中的运算效率。
第一方面,本发明实施例提供了一种神经网络的运算方法,所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,所述方法包括:
当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
第二方面,本发明实施例还提供了一种神经网络的运算装置,所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,所述装置包括:
就绪条件确定模块,用于判断第N+1折叠组中的目标层是否满足就绪条件;
并行处理模块,用于当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如本发明任一实施例所述的神经网络的运算方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明任一实施例所述的神经网络的运算方法。
本发明实施例的技术方案在神经网络的折叠组式运行场景中,引入了新的折叠组间的并行机制,后一折叠组并不是以前一折叠组整体的运行结束作为启动条件,而是在前一折叠组的运行过程中,当检测到后一折叠组中设定层神经网络满足就绪条件时,即刻开始对后一折叠组中的该层神经网络进行运算,本发明实施例的技术方案提供了一种新的折叠组间的运行机制,减少了折叠组式神经网络的运算耗时,并提高了折叠组式神经网络的运算效率。
附图说明
图1a为现有技术中的一种将神经网络划分至多个折叠组的示意图;
图1b为现有技术中的一种以流水线的形式运算多个折叠组的结构示意图;
图1c为现有技术中的一种以流水线的形式运算多个折叠组的时序图;
图1d是本发明实施例一中的一种神经网络的运算方法的实现流程图;
图1e是本发明实施例所适用的一种并行运算多个折叠组的时序图;
图2a是本发明实施例二中的一种神经网络的运算方法的实现流程图;
图2b是本发明实施例所适用的一种并行运算多个折叠组的时序图;
图3是本发明实施例三中的一种神经网络的运算方法的实现流程图;
图4是本发明实施例四中的一种神经网络的运算装置的结构图;
图5是本发明实施例五中的一种计算机设备的结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
为了便于描述本发明实施例的技术方案,首先参考图1c,对图1a、图1b所示的折叠组式神经网络对应的各运算核的运算时序进行简单表述。
结合图1a-图1b,所述神经网络共包括七层神经网络,其中,第一层神经网络至第四层神经网络划分至折叠组一,第五层神经网络至第七层神经网络划分至折叠组二。同时,不同层神经网络由不同的运算核运行。如图1c所示,横坐标对应不同的时间段(也可以称为时间片),每个时间段代表一个运算核单次运算(根据输入数据得到运算结果数据)所需的时间,纵坐标对应不同的运算核。其中,在图1c中示出了针对5项输入数据(数据1、数据2数据3、数据4以及数据5)的运算过程,不同数据使用不同编号的矩形块表示。
相应的,在T1时间段,数据1分别输入至运算核1至运算核3,由上述三个运算核进行第一层神经网络的运算;在T2时间段,数据2分别输入至运算核1至运算核3进行第一层神经的运算,同时,第一层神经网络在T1时间段运算完成后的数据传输至运算核4进行第二层神经网络的运算。在T3时间段,数据3分别输入至运算核1至运算核3进行第一层神经的运算、第一层神经网络在T2时间段运算完成后的数据传输至运算核4进行第二层神经网络的运算,以及第二神经网络层在T2时间段运算完成的数据传输至运算核5-运算核8进行第三神经网络层的运算,以此类推,只有在T8时间段,运算核9和运算核10才最终完成对上述数据1-数据5的第四层神经网络的运算,也即,第一折叠组才算处理完成。
相应的,在T9时间段才能开始第二折叠组的运算,也即,由运算核1至运算核4根据运算核9和运算核10对数据1的处理结果进行第五层神经网络的运算为起始,以此类推,直至折叠组二完成对数据1-数据5的处理。
发明人通过分析上述流水线式的运算过程发现:实际上,对于第二折叠组中的第五层神经网络针对数据1的运算来说,其所需的运算数据在T4时间段之后(T5时间段)已经准备就绪(运算核9和运算核10在T4时间段处理得到的数据),其所需的运算核(运算核1-运算核4)在T6时间段之后(T7时间段)已经准备就绪。因此,在不具有任何数据和资源冲突的前提下,该第五层神经网络最快应该可以在T7时间段开始执行,而无需等待折叠组一整体处理完成。
基于此,发明人创造性的提出了一种折叠组间的并行运算方式,在前一折叠组的运算过程中,只要后一折叠组中的某一层神经网络满足就绪条件,即可开始该层神经网络的运算,而无需等待前一折叠组整体运行结束,以大大提高折叠组式神经网络的运算效率。
实施例一
图1d为本发明实施例一提供的一种神经网络的运算方法的流程图,本实施例可适用于将包括至少两个折叠组的神经网络在同一芯片内进行运算(片内运算)的情况,该方法可以由神经网络的运算装置来执行,该装置可以由软件和/或硬件的方式实现,并一般可以集中在用于运行该神经网络的芯片中,所述方法具体包括如下步骤:
S110、判断神经网络的第N+1折叠组中的目标层是否满足就绪条件:若是,执行S120,否则,返回继续执行S110。
在本实施例中,N为大于或等于1的正整数,N的取值范围为N∈[1,M],M+1为该神经网络包括的折叠组的总数量。
如前所述,本发明实施例所适用的神经网络包括有多个折叠组,每个折叠组中包括至少一层(或者说一层或者多层神经网络),每层对应有至少一个运算核,所述运算核具体为芯片内的硬件运算单元,用于以硬件的形式对每层神经网络进行运算处理。
其中,不同所述折叠组对应的运算核至少有部分相同。也即,不同折叠组对应的运算核完全相同,或者具有至少一个运算核的重叠。
一般来说,为了最大程度的利用芯片内的硬件运算单元,可以将全部硬件运算单元分别分配给全部折叠组。例如,如果一个芯片包括运算核1-运算核10,在该芯片上运行的神经网络包括折叠组一和折叠组二,此时,可以同时将运算核1-运算核10分别分配给折叠组一和折叠组二,以实现两个折叠组均使用最多的运算硬件进行运算。
另一方面,考虑到不同折叠组的运算量可能会有一定的差异,为了尽量保证不同折叠组的运算均衡,不通折叠组对应的运算核之间可能会有微小差异。例如,将运算核1-运算核10分配给折叠组一,将运算核1-运算核8分配给折叠组二。
具体的,可以预先设定或者获知每个运算核的运算能力,并通过指定每个层所需的运算能力的方式,为每个层分配对应的运算核;或者,可以预先设定每个运算核的标识信息(例如,核编号),并通过预编译的方式,指定与每个层对应的标识信息,进而为每个层分配对应的运算核。
如前所述,本发明实施例的方案提供了一种折叠组的并行运算方式,也即,后一折叠组不是以前一折叠组整体运行结束为触发运行时机,而是以该折叠组满足就绪条件为触发运行时机。相应的,在本发明实施例中,第N+1折叠组的目标层具体是指在神经网络当前处于运算状态的各层中最后一层的下一层。也即,最近的一个需要触发运算的层。该目标层可以为第N+1折叠组中的第一层,也可以为第N+1折叠组中第一层之后的任一层。
例如,神经网络当前处于运算状态的层为第三层神经网络、第四层神经网络和第五层神经网络。其中,最后一层为第五层神经网络,进而,该目标层为第五层神经网络的下一层,第六层神经网络。也即,本发明实施例的技术方案在当前已有一折叠组处于运算状态的过程中,需要实时判断后一折叠组中处于当前最后一个运行状态的层之后的目标层是否满足就绪条件,进而按照就绪条件对该目标层进行触发运算。
其中,所述确定第N+1折叠组的目标层满足就绪条件,可以包括:如果确定所述目标层所需的运算数据准备就绪,并且所述目标层对应的运算核准备就绪,则确定所述目标层满足就绪条件。也即,当目标层所需的运算数据以及所需使用的运算核均准备就绪时,该目标层满足就绪条件,可以开始对该目标层进行运算。
在本实施例的一个可选的实施方式中,确定所述目标层所需的运算数据准备就绪,可以包括:
当确定前序层针对当前输入数据已经输出运算结果数据,则确定所述目标层所需的运算数据准备就绪,其中,所述前序层为与所述目标层相连的前一层。
请参考图1a至1c,当确定第N+1折叠组为折叠组二,第N+1折叠组的目标层为第五层神经网络时,该第五层神经网络所需的运算数据为第四层神经网络输出的运算结果,也即,每当第四层神经网络针对当前输入数据,运算并输出相应的运算结果数据后,第五神经网络层可以基于该运算结果数据开始进行本层的数据运算。
可以理解的是,前序层可以处于第N+1折叠层,也可以处于第N折叠层。当目标层为第N+1折叠层中的首个层时,该前序层为第N折叠层中的最后一层;当目标层为第N+1折叠层中除去首个层之外的其他层时,该前序层为第N+1折叠层中,该其他层的前一层。
在本实施例的一个可选的实施方式中,确定与所述目标层对应的运算核准备就绪,可以包括:
如果确定当前空闲的运算核的总运算能力与所述目标层所需运算能力相匹配,则确定与所述目标层对应的运算核准备就绪。
在本实施方式中,可以预先设定或者获知与芯片中的每个运算核分别对应的运算能力,也即,单次运算过程中所能提供的运算量。目标层所需运算能力具体是指目标层针对当前输入数据进行运算时,所需实现的运算量。
具体的,本实施方式可以不明确指定为目标层具体分配哪个或者哪几个运算核,仅仅比对当前空闲的运算核的总运算能力(当前空闲运算核的运算能力的累加和)是否与目标层所需运算能力相匹配,若是,则可以将上述空闲运算核分配给目标层进行运算处理。
在本实施例的一个可选的实施方式中,确定与所述目标层对应的运算核准备就绪,还可以包括:如果确定当前空闲的运算核的编号与所述目标层对应的运算核的编号相匹配,则确定与所述目标层对应的运算核准备就绪。
在本实施方式中,参考图1b,可以通过预编译的方式预先设定该神经网络中的各个层与芯片中各个运算核之间的对应关系,进而当与目标层明确对应的各个编号的运算核均处于空闲状态时,确定该与所述目标层对应的运算核准备就绪。
S120、将第N+1折叠组与第N折叠组并行处理。
在本实施例中,是以第N+1折叠组的目标层是否准备就绪作为该目标层的运算启动条件的,因此,可以在第N折叠组的运算过程中,启动第N+1折叠组的处理,也即,实现了将第N+1折叠组与第N折叠组并行处理
在图1e中示出了本发明实施例所适用的一种并行运算多个折叠组的时序图,如图1e所示,在T7时间段,折叠组二中的第五层神经网络既可以获取折叠组一中的第四层神经网络针对数据1输出的运算结果数据(T5时间段可用),同时,与第五层神经网络对应的运算核1-运算核4也已经完成对折叠组一中数据1至数据5的处理,处于空闲状态(T7时间段可用),因此,可以触发执行第五层神经网络的运算,也即,在T7时间段,运算核1-运算核4进行与折叠组二匹配的运算,运算核5-运算核10进行了与折叠组一匹配的运算,也即实现了折叠组一和折叠组二的并行处理。
相类似的,在T8时间段,折叠组二中的第六层神经网络既可以获取折叠组二中第五层神经网络针对数据1输出的运算结果数据,同时,与第六层神经网络对应的运算核5-运算核6也已经完成对折叠组一中数据1至数据5的处理,处于空闲状态,因此,可以触发执行第六层神经网络的运算,也即,在T8时间段,运算核1-运算核6进行与折叠组二匹配的运算,运算核7-运算核10进行与折叠组一匹配的运算,也即实现了折叠组一和折叠组二的并行处理。
结合图1c,上述折叠组间的并行处理操作,针对5个输入数据的情况,可以至少节省两个时间段的时长,可以理解的是,当神经网络中包括的折叠组越多,每个折叠组中包括的运算核越多,上述方案可以节省的时间段的数量也就越多,神经网络的运算效率提高的也就越明显。
本发明实施例的技术方案在神经网络的折叠组式运行场景中,引入了新的折叠组间的并行机制,后一折叠组并不是以前一折叠组整体的运行结束作为启动条件,而是在前一折叠组的运行过程中,当检测到后一折叠组中设定层神经网络满足就绪条件时,即刻开始对后一折叠组中的该层神经网络进行运算,本发明实施例的技术方案提供了一种新的折叠组间的运行机制,减少了折叠组式神经网络的运算耗时,并提高了折叠组式神经网络的运算效率。
实施例二
图2a为本发明实施例二提供的一种神经网络的运算方法的实现流程图,本实施例以上述实施例为基础进行细化,在本实施例中,将所述第N+1折叠组与第N折叠组并行处理的操作,细化为:执行向与所述目标层对应的各运算核,加载与所述目标层匹配的权重数据的操作;在通过第N折叠组中未完成运算层的各运算核进行运算的过程中,触发第N+1折叠组中目标层的各运算核进行并行运算。
同时,在触发第N+1折叠组中目标层的各运算核进行并行运算的操作之后,还可以包括:通过与所述目标层对应的各运算核,根据从内存中获取的,或者与所述目标层相连的前序层实时输出的运算结果数据进行并行运算;通过与所述目标层对应的各运算核,将当前运算得到的运算结果数据存储于内存中,或者实时输出至与所述目标层相连的后序层。
相应的,本实施例的方法具体包括:
S210、判断前序层针对当前输入数据是否已经输出运算结果数据:若是,则执行S220;否则,返回执行S210。
其中,所述前序层为与所述目标层相连的前一层。也即,该前序层为当前处于运算状态的各层神经网络中的最后一层,该层可以处于第N折叠组,也可以处于第N+1折叠组。
在本实施例中,首先可以验证该前序层是否针对当前输入数据输出了相应的运算结果数据,也即,目标层所需运算的数据。
S220、判断当前空闲的运算核的编号与所述目标层对应的运算核的编号相匹配:若是,执行S230;否则,返回执行S220。
在本实施例中,在确定目标层所需运算的数据准备就绪后,可以进一步判断与目标层对应的运算核是否均处于空闲状态。
S230、执行向与所述目标层对应的各运算核,加载与所述目标层匹配的权重数据的操作。
在本实施例中,在确定目标层所需运算的数据,以及与目标层对应的运算核均准备好后,需要首先向与目标层对应的各运算核加载权重数据。
其中,所述目标层的各运算核包括第N折叠组中已完成运算层的运算核。实际上,因为设置了多个折叠组,即是需要相邻折叠组共用相同的运算核进行运算处理,而只有前一折叠组中出现完成运算的空闲运算核后,后一折叠组中的目标层才可能满足就绪条件,因此,目标层的各运算核包括第N折叠组中已经完成运算的层对应的运算核。
在现有技术中,为了在芯片中运行权重数据大于芯片存储能力的神经网络,需要首先将神经网络划分为多个折叠组,并通过流水线的形式对各个折叠组进行运算以及权重的交替存储,也即:前一折叠组整体运算完成后,将当前各运算核中存储的与前一折叠组匹配的权重数据整体替换为与后一折叠组对应的权重数据,开启后一折叠组的运算处理。
在本实施例中,由于实现了相邻折叠组间的并行处理,因此,无法针对一个折叠组进行权重数据的整体加载,因此,可以在目标层准备就绪后,仅加载与目标层对应的权重数据,以完成对目标层的运算。
具体的,可以在预编译阶段确定与神经网络中的每一层分别对应的权重数据,并预先存储于内存中,并可以通过直接读取的方式读取得到与每一层对应的权重数据。
S240、在通过第N折叠组中未完成运算层的各运算核进行运算的过程中,触发第N+1折叠组中目标层的各运算核进行并行运算。
如前所述,第N+1折叠组目标层需要使用第N折叠组中已经完成运算的层空闲出的运算核,与第N折叠组中未完成运算的一个或者多个层一起,进行并行运算。
S250、通过与所述目标层对应的各运算核,根据从内存中获取的,或者与所述目标层相连的前序层实时输出的运算结果数据进行并行运算。
如图1e所示,目标层所需运算的数据可能会比目标层对应的运算核先准备好,例如,折叠组二的第五层神经网络所需运算的数据在T5时间段即可使用,而与折叠组二的第五层神经网络对应的运算核1-运算核4在T7时间段才准备好,因此,可以先将前序层运算得到的运算结果数据存储内存中,当T7时间段到达时,由运算核1-运算核4从内存中获取对应的运算结果数据进行运算;
或者,目标层所需运算的数据可能会与对应的运算核一起准备好,例如,折叠组二的第六层神经网络所需运算的数据在T8时间段准备,而与折叠组二的第六层神经网络对应的运算核5-运算核6同样也在T8时间段准备好,此时,目标层的前序层(例如,第五神经网络层)可以直接将运算得到的运算结果数据传输至目标层,由目标层直接在新的时间段进行相应的运算处理。
S260、通过与所述目标层对应的各运算核,将当前运算得到的运算结果数据存储于内存中,或者实时输出至与所述目标层相连的后序层。
相类似的,当与目标层对应的各运算核得到运算结果数据后,如果确定与后序层对应的运算核已经准备就绪,则可以直接将运算结果数据实时输出至后序层(也即,与目标层相连的后一层神经网络);如果确定与后序层对应的运算核没有准备就绪,则可以将当前运算得到的运算结果数据存储于内存中,由后序层在满足就绪条件时,实时从内存中获取并进行相应的运算。
可以理解的是,执行向与所述目标层对应的各运算核,加载与所述目标层匹配的权重数据的操作是需要耗费一定的时间的,如果上述操作耗费的时间较短,则可以将上述操作融入一个时间段中,在每个时间段内同时完成权重数据的加载以及数据的运算过程。如果上述操作耗费的时间较长,则可以为上述操作单独分配权重加载时间,并在该权重加载时间完成后,由运算核在新的时间片内执行数据的运算。
相应的,在本实施例的一个可选的实施方式中,所述触发第N+1折叠组中目标层的各运算核进行并行运算,可以包括:
间隔权重加载时长后,触发第N+1折叠组中目标层的各运算核进行并行运算。
其中,为了便于统一的协调管理,所述权重加载时长可以为一个预设的定值,例如一个时间段;或者,为了最大程度的降低时间浪费,该权重记载时长可以根据实际的权重加载时间确定,也即,每当目标层的各运算核完成了权重的加载过程,即刻触发第N+1折叠组中目标层的各运算核进行并行运算。
其中,图2b是本发明实施例所适用的一种并行运算多个折叠组的时序图,如图2b所示,在T6时间段,折叠组二的第五层神经网络所需运算的数据,以及对应的运算核均准备就绪,因为,可以再等待一个时间段(T7时间段),完成对第五层神经网络的权重信息的加载等待,并最终在T8时间段,开始进行第五层神经网络的运算。
本发明实施例的技术方案根据前序层输出目标层所需运算的数据的时间和与目标层对应的运算核准备就绪的时间之间的关系,确定目标层具体是从内存从获取运算数据或者从该前序层直接获取数据,进一步完善了本发明实施例的应用场景,最大程度的利用了芯片中的各项资源,同时,通过在目标层的权重加载过程分配权重加载时间,可以不占用每个运算核运算时所需的时间段,以进一步保证神经网络的运算准确性和可靠性。
实施例三
图3为本发明实施例三提供的一种神经网络的运算方法的实现流程图,本实施例以上述实施例为基础进行细化,在本实施例中,同时,所述方法发还包括:响应于运算开始指令,将与所述神经网络的首个折叠组中的各层对应的权重信息分别加载至与所述首个折叠组对应的各运算核中;通过与所述首个折叠组对应的各运算核进行运算。
相应的,本实施例的方法具体包括:
S310、响应于运算开始指令,将与所述神经网络的首个折叠组中的各层对应的权重信息分别加载至与所述首个折叠组对应的各运算核中。
在本实施例中,由于为神经网络的同一折叠组所分配的各运算核均不重叠,因此,为了最大程度的提高神经网络的运算效率,可以在神经网络的首个折叠组运行之前,一次性加载该首个折叠组所需的全部权重信息。
在本实施例的一个可选的实施方式中,所述神经网络为不包括反馈环路的神经网络。这样设置的原因在于:当一个神经网络不包括反馈环路时,某一层神经网络完成对输入数据的完整运算后,不会再次启动运算,因此,与该层神经网络对应的各运算核均可以分配给其他层神经网络使用,而不会发生运算核的分配冲突的情况。
其中,所述不包括反馈环路的神经网络可以为ANN(Artificial Neural Network,人工神经网络)或者SNN(SNN-Spiking Neuron Networks,脉冲神经网络)等,本实施例对此并不进行限制。
S320、通过与所述首个折叠组对应的各运算核进行运算。
S330、当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
本发明实施例的技术方案在神经网络的折叠组式运行场景中,引入了新的折叠组间的并行机制,后一折叠组并不是以前一折叠组整体的运行结束作为启动条件,而是在前一折叠组的运行过程中,当检测到后一折叠组中设定层神经网络满足就绪条件时,即刻开始对后一折叠组中的该层神经网络进行运算,本发明实施例的技术方案提供了一种新的折叠组间的运行机制,减少了折叠组式神经网络的运算耗时,并提高了折叠组式神经网络的运算效率。
实施例四
图4是本发明实施例四提供的一种神经网络的运算装置的结构图。所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同。如图4所示,所述装置包括:就绪条件确定模块410以及并行处理模块420。
就绪条件确定模块410,用于判断第N+1折叠组中的目标层是否满足就绪条件;
并行处理模块420,用于当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
本发明实施例的技术方案在神经网络的折叠组式运行场景中,引入了新的折叠组间的并行机制,后一折叠组并不是以前一折叠组整体的运行结束作为启动条件,而是在前一折叠组的运行过程中,当检测到后一折叠组中设定层神经网络满足就绪条件时,即刻开始对后一折叠组中的该层神经网络进行运算,本发明实施例的技术方案提供了一种新的折叠组间的运行机制,减少了折叠组式神经网络的运算耗时,并提高了折叠组式神经网络的运算效率。
在上述各实施例的基础上,所述就绪条件确定模块,可以包括:
运算数据判断单元,用于判断所述目标层所需的运算数据是否准备就绪;
运算核判断单元,用于判断所述目标层对应的运算核是否准备继续;
综合确定单元,用于如果确定所述目标层所需的运算数据准备就绪,并且所述目标层对应的运算核准备就绪,则确定所述目标层满足就绪条件。
在上述各实施例的基础上,所述运算数据判断单元,具体可以用于:
当确定前序层针对当前输入数据已经输出运算结果数据,则确定所述目标层所需的运算数据准备就绪,其中,所述前序层为与所述目标层相连的前一层。
在上述各实施例的基础上,所述运算核判断单元,具体可以用于:
如果确定当前空闲的运算核的总运算能力与所述目标层所需运算能力相匹配,则确定与所述目标层对应的运算核准备就绪;或者
如果确定当前空闲的运算核的编号与所述目标层对应的运算核的编号相匹配,则确定与所述目标层对应的运算核准备就绪。
在上述各实施例的基础上,并行处理模块,可以包括:
权重加载单元,用于执行向与所述目标层对应的各运算核中,加载与所述目标层匹配的权重数据的操作,目标层的各运算核中包括第N折叠组中已完成运算层的运算核;
并行运算单元,用于在通过第N折叠组中未完成运算层的各运算核进行运算的过程中,触发第N+1折叠组中目标层的各运算核进行并行运算。
在上述各实施例的基础上,所述并行运算单元,具体可以用于:
间隔权重加载时长后,触发第N+1折叠组中目标层的各运算核进行并行运算。
在上述各实施例的基础上,还可以包括,目标层运行单元,用于:
在触发第N+1折叠组中目标层的各运算核进行并行运算之后,通过与所述目标层对应的各运算核,根据从内存中获取的,或者与所述目标层相连的前序层实时输出的运算结果数据进行并行运算;
通过与所述目标层对应的各运算核,将当前运算得到的运算结果数据存储于内存中,或者实时输出至与所述目标层相连的后序层。
在上述各实施例的基础上,还可以包括,首个折叠组运算模块,用于:
响应于运算开始指令,将与所述神经网络的首个折叠组中的各层对应的权重信息分别加载至与所述首个折叠组对应的各运算核中;
通过与所述首个折叠组对应的各运算核进行运算。
在上述各实施例的基础上,所述神经网络可以为不包括反馈环路的神经网络。
本发明实施例所提供的神经网络的运算装置可执行本发明任意实施例所提供的神经网络的运算方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5为本发明实施例五提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括处理器50、存储器51、输入装置52和输出装置53;计算机设备中处理器50的数量可以是一个或多个,图5中以一个处理器50为例;计算机设备中的处理器50、存储器51、输入装置52和输出装置53可以通过总线或其他方式连接,图5中以通过总线连接为例。
存储器51作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的多任务并行处理方法对应的模块。处理器50通过运行存储在存储器51中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现如本发明任意实施例所述的神经网络的运算方法,所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,所述方法包括:
当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
存储器51可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器51可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器51可进一步包括相对于处理器50远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置52可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置53可包括显示屏等显示设备。
实施例六
本发明实施例六还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如本发明任意实施例所述的神经网络的运算方法,所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,所述方法包括:
当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (20)

1.一种神经网络的运算方法,所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,其特征在于,所述方法包括:
当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
2.根据权利要求1所述的方法,其特征在于,确定第N+1折叠组的目标层满足就绪条件,包括:
如果确定所述目标层所需的运算数据准备就绪,并且所述目标层对应的运算核准备就绪,则确定所述目标层满足就绪条件。
3.根据权利要求2所述的方法,其特征在于,确定所述目标层所需的运算数据准备就绪,包括:
当确定前序层针对当前输入数据已经输出运算结果数据,则确定所述目标层所需的运算数据准备就绪,其中,所述前序层为与所述目标层相连的前一层。
4.根据权利要求2所述的方法,其特征在于,确定与所述目标层对应的运算核准备就绪,包括:
如果确定当前空闲的运算核的总运算能力与所述目标层所需运算能力相匹配,则确定与所述目标层对应的运算核准备就绪;或者
如果确定当前空闲的运算核的编号与所述目标层对应的运算核的编号相匹配,则确定与所述目标层对应的运算核准备就绪。
5.根据权利要求1所述的方法,其特征在于,将所述第N+1折叠组与第N折叠组并行处理,包括:
执行向与所述目标层对应的各运算核,加载与所述目标层匹配的权重数据的操作,其中,所述目标层的各运算核包括第N折叠组中已完成运算层的运算核;
在通过第N折叠组中未完成运算层的各运算核进行运算的过程中,触发第N+1折叠组中目标层的各运算核进行并行运算。
6.根据权利要求5所述的方法,其特征在于,所述触发第N+1折叠组中目标层的各运算核进行并行运算,包括:
间隔权重加载时长后,触发第N+1折叠组中目标层的各运算核进行并行运算。
7.根据权利要求5所述的方法,其特征在于,在触发第N+1折叠组中目标层的各运算核进行并行运算之后,还包括:
通过与所述目标层对应的各运算核,根据从内存中获取的,或者与所述目标层相连的前序层实时输出的运算结果数据进行并行运算;
通过与所述目标层对应的各运算核,将当前运算得到的运算结果数据存储于内存中,或者实时输出至与所述目标层相连的后序层。
8.根据权利要求1-7任一项所述的方法,其特征在于,还包括:
响应于运算开始指令,将与所述神经网络的首个折叠组中的各层对应的权重信息分别加载至与所述首个折叠组对应的各运算核中;
通过与所述首个折叠组对应的各运算核进行运算。
9.根据权利要求1-7任一项所述的方法,其特征在于,所述神经网络为不包括反馈环路的神经网络。
10.一种神经网络的运算装置,所述神经网络包括多个折叠组,每个折叠组中包括至少一层,每层对应有至少一个运算核,且不同所述折叠组对应的运算核至少有部分相同,其特征在于,所述装置包括:
就绪条件确定模块,用于判断第N+1折叠组中的目标层是否满足就绪条件;
并行处理模块,用于当确定第N+1折叠组的目标层满足就绪条件时,将所述第N+1折叠组与第N折叠组并行处理。
11.根据权利要求10所述的装置,其特征在于,所述就绪条件确定模块,包括:
运算数据判断单元,用于判断所述目标层所需的运算数据是否准备就绪;
运算核判断单元,用于判断所述目标层对应的运算核是否准备继续;
综合确定单元,用于如果确定所述目标层所需的运算数据准备就绪,并且所述目标层对应的运算核准备就绪,则确定所述目标层满足就绪条件。
12.根据权利要求11所述的装置,其特征在于,所述运算数据判断单元,具体用于:
当确定前序层针对当前输入数据已经输出运算结果数据,则确定所述目标层所需的运算数据准备就绪,其中,所述前序层为与所述目标层相连的前一层。
13.根据权利要求11所述的装置,其特征在于,所述运算核判断单元,具体用于:
如果确定当前空闲的运算核的总运算能力与所述目标层所需运算能力相匹配,则确定与所述目标层对应的运算核准备就绪;或者
如果确定当前空闲的运算核的编号与所述目标层对应的运算核的编号相匹配,则确定与所述目标层对应的运算核准备就绪。
14.根据权利要求10所述的装置,其特征在于,并行处理模块,包括:
权重加载单元,用于执行向与所述目标层对应的各运算核中,加载与所述目标层匹配的权重数据的操作,目标层的各运算核中包括第N折叠组中已完成运算层的运算核;
并行运算单元,用于在通过第N折叠组中未完成运算层的各运算核进行运算的过程中,触发第N+1折叠组中目标层的各运算核进行并行运算。
15.根据权利要求14所述的装置,其特征在于,所述并行运算单元,具体用于:
间隔权重加载时长后,触发第N+1折叠组中目标层的各运算核进行并行运算。
16.根据权利要求14所述的装置,其特征在于,还包括,目标层运行单元,用于:
在触发第N+1折叠组中目标层的各运算核进行并行运算之后,通过与所述目标层对应的各运算核,根据从内存中获取的,或者与所述目标层相连的前序层实时输出的运算结果数据进行并行运算;
通过与所述目标层对应的各运算核,将当前运算得到的运算结果数据存储于内存中,或者实时输出至与所述目标层相连的后序层。
17.根据权利要求10-16任一项所述的装置,其特征在于,还包括,首个折叠组运算模块,用于:
响应于运算开始指令,将与所述神经网络的首个折叠组中的各层对应的权重信息分别加载至与所述首个折叠组对应的各运算核中;
通过与所述首个折叠组对应的各运算核进行运算。
18.根据权利要求10-16任一项所述的方法,其特征在于,所述神经网络为不包括反馈环路的神经网络。
19.一种计算机设备,其特征在于,所述计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-9中任一所述的神经网络的运算方法。
20.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-9中任一所述的神经网络的运算方法。
CN202010852104.0A 2020-08-21 2020-08-21 神经网络的运算方法、装置、计算机设备及存储介质 Pending CN111985634A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010852104.0A CN111985634A (zh) 2020-08-21 2020-08-21 神经网络的运算方法、装置、计算机设备及存储介质
PCT/CN2021/112471 WO2022037490A1 (zh) 2020-08-21 2021-08-13 神经网络的运算方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010852104.0A CN111985634A (zh) 2020-08-21 2020-08-21 神经网络的运算方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN111985634A true CN111985634A (zh) 2020-11-24

Family

ID=73442933

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010852104.0A Pending CN111985634A (zh) 2020-08-21 2020-08-21 神经网络的运算方法、装置、计算机设备及存储介质

Country Status (2)

Country Link
CN (1) CN111985634A (zh)
WO (1) WO2022037490A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022037490A1 (zh) * 2020-08-21 2022-02-24 北京灵汐科技有限公司 神经网络的运算方法、装置、计算机设备及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114819084B (zh) * 2022-04-26 2024-03-01 北京百度网讯科技有限公司 模型推理方法、装置、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107729994A (zh) * 2017-11-28 2018-02-23 北京地平线信息技术有限公司 执行卷积神经网络中的卷积层的运算的方法和装置
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN109359736A (zh) * 2017-04-06 2019-02-19 上海寒武纪信息科技有限公司 网络处理器和网络运算方法
CN109409513A (zh) * 2018-10-10 2019-03-01 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
CN110443354A (zh) * 2019-07-26 2019-11-12 深圳大学 一种基于多组张列量分解的深度神经网络压缩方法、系统、装置及存储介质
CN111047031A (zh) * 2018-10-12 2020-04-21 西部数据技术公司 用于神经网络中的数据重用的移位架构
US20200202200A1 (en) * 2018-12-24 2020-06-25 Samsung Electronics Co., Ltd. Neural network apparatus and method with bitwise operation

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107451659B (zh) * 2017-07-27 2020-04-10 清华大学 用于位宽分区的神经网络加速器及其实现方法
CN110717574B (zh) * 2018-07-11 2023-07-07 杭州海康威视数字技术股份有限公司 一种神经网络运行方法、装置及异构智能芯片
CN109919311B (zh) * 2019-03-13 2020-04-10 北京地平线机器人技术研发有限公司 生成指令序列的方法、执行神经网络运算的方法和装置
CN111047602A (zh) * 2019-11-26 2020-04-21 中国科学院深圳先进技术研究院 图像分割方法、装置及终端设备
CN111488051A (zh) * 2020-03-06 2020-08-04 复旦大学 基于cpu和fpga协同计算的云端深度神经网络优化方法
CN111985634A (zh) * 2020-08-21 2020-11-24 北京灵汐科技有限公司 神经网络的运算方法、装置、计算机设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018058427A1 (zh) * 2016-09-29 2018-04-05 北京中科寒武纪科技有限公司 神经网络运算装置及方法
CN109359736A (zh) * 2017-04-06 2019-02-19 上海寒武纪信息科技有限公司 网络处理器和网络运算方法
CN107729994A (zh) * 2017-11-28 2018-02-23 北京地平线信息技术有限公司 执行卷积神经网络中的卷积层的运算的方法和装置
CN109409513A (zh) * 2018-10-10 2019-03-01 广州市百果园信息技术有限公司 一种基于神经网络的任务处理方法及相关设备
CN111047031A (zh) * 2018-10-12 2020-04-21 西部数据技术公司 用于神经网络中的数据重用的移位架构
US20200202200A1 (en) * 2018-12-24 2020-06-25 Samsung Electronics Co., Ltd. Neural network apparatus and method with bitwise operation
CN110443354A (zh) * 2019-07-26 2019-11-12 深圳大学 一种基于多组张列量分解的深度神经网络压缩方法、系统、装置及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
DANIEL VARELA: "Protein Folding Modeling with Neural Cellular Automata Using Rosetta", GECCO \'16 COMPANION: PROCEEDINGS OF THE 2016 ON GENETIC AND EVOLUTIONARY COMPUTATION CONFERENCE COMPANION, 31 July 2016 (2016-07-31), pages 1307, XP058276280, DOI: 10.1145/2908961.2931720 *
何柔萤等: "基于注意力卷积神经网络的工作票专家推荐方法", 南京理工大学学报, vol. 43, no. 1, 13 March 2019 (2019-03-13), pages 13 - 21 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022037490A1 (zh) * 2020-08-21 2022-02-24 北京灵汐科技有限公司 神经网络的运算方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
WO2022037490A1 (zh) 2022-02-24

Similar Documents

Publication Publication Date Title
CN105893126B (zh) 一种任务调度方法及装置
US7950016B2 (en) Apparatus for switching the task to be completed in a processor by switching to the task assigned time slot
US20030023830A1 (en) Method and system for encoding instructions for a VLIW that reduces instruction memory requirements
JP2012181852A (ja) タスク処理のスケジューリング方法及びこの方法を適用するための装置
CN110717574B (zh) 一种神经网络运行方法、装置及异构智能芯片
CN111985634A (zh) 神经网络的运算方法、装置、计算机设备及存储介质
CN104750510A (zh) 一种芯片启动方法及多核处理器芯片
CN113434284B (zh) 一种隐私计算服务端设备、系统及任务调度方法
CN108776897A (zh) 数据处理方法、装置、服务器及计算机可读存储介质
CN104123304A (zh) 数据驱动的并行排序系统和方法
US20240160474A1 (en) Multi-core processor task scheduling method, and device and storage medium
CN112416585A (zh) 面向深度学习的gpu资源管理与智能化调度方法
CN110600020A (zh) 一种梯度传输方法及装置
CN111598768B (zh) 图像优化处理方法、装置、计算机设备及存储介质
US20230067432A1 (en) Task allocation method, apparatus, electronic device, and computer-readable storage medium
CN110083441B (zh) 一种分布式计算系统及分布式计算方法
CN112434800A (zh) 控制装置及类脑计算系统
CN108833532B (zh) 基于物联网的服务处理方法、装置和系统
CN102609306B (zh) 多核处理芯片对视频处理任务的处理方法及其系统
CN114912587A (zh) 神经网络分布式训练系统、方法、装置、计算单元及介质
CN114466014A (zh) 一种服务调度方法、装置、电子设备及存储介质
CN109062702B (zh) 一种计算资源分配方法、相关装置及可读存储介质
CN111476663B (zh) 一种数据处理方法、装置、节点设备及存储介质
Mohan et al. Task assignment for heterogeneous computing problems using improved iterated greedy algorithm
CN111026515B (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