CN114282661A - 神经网络模型的运行方法、可读介质和电子设备 - Google Patents
神经网络模型的运行方法、可读介质和电子设备 Download PDFInfo
- Publication number
- CN114282661A CN114282661A CN202111588865.0A CN202111588865A CN114282661A CN 114282661 A CN114282661 A CN 114282661A CN 202111588865 A CN202111588865 A CN 202111588865A CN 114282661 A CN114282661 A CN 114282661A
- Authority
- CN
- China
- Prior art keywords
- computing
- node
- computing node
- neural network
- network model
- 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
- 238000003062 neural network model Methods 0.000 title claims abstract description 117
- 238000000034 method Methods 0.000 title claims abstract description 78
- 230000015654 memory Effects 0.000 claims description 28
- 238000013473 artificial intelligence Methods 0.000 abstract description 6
- 239000011159 matrix material Substances 0.000 description 74
- 238000004364 calculation method Methods 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 238000004891 communication Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 238000011017 operating method Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Landscapes
- Image Analysis (AREA)
Abstract
本申请涉及人工智能领域,公开了一种神经网络模型的运行方法、可读介质和电子设备。该方法应用于处理器包括多个内核的电子设备,并且该方法包括:在运行神经网络模型的过程中,检测到处理器存在N个空闲内核;对于神经网络模型中当前未被运行的M个计算节点,按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给所述N个空闲内核中的L个空闲内核,其中,N、M、L为正整数,并且L≤N。由于运行顺序在前的计算节点的分配优先级较高,从而可以降低处理器内核的空闲率,进而提高电子设备运行神经网络模型的速度。
Description
技术领域
本申请涉及人工智能领域,特别涉及一种神经网络模型的运行方法、可读介质和电子设备。
背景技术
随着神经网络模型的计算节点的数量的增加,为提高神经网络模型的运行速度,可以利用多核计算资源对神经网络模型进行并行计算。例如,电子设备在运行神经网络模型之前,可以先随机确定电子设备的处理器中用于运行神经网络模型中各计算节点的内核,以便于电子设备在运行该神经网络模型时,可以通过分配的内核运行各计算节点,实现神经网络模型的并行计算。但是,处理器的内核数量通常小于神经网络模型的计算节点的数量,在某一计算节点的输入数据为其他计算节点的计算结果,但该计算结果还未计算完成的情况下,由于已经预先确定用于运行各计算节点的内核,会造成用于运行该计算节点的内核由于等待输入数据而处于空闲状态,造成处理器内核资源的浪费,降低了神经网络模型并行计算的速度。
发明内容
有鉴于此,本申请实施例提供了一种神经网络模型的运行方法、可读介质和电子设备。电子设备在运行神经网络模型的过程中,若检测到电子设备的处理器有空闲内核,根据各计算节点的分配优先级从高到低将计算节点分配给空闲内核,从而提高处理器内核的利用率、提高电子设备运行神经网络模型的速度。
第一方面,本申请实施例提供了一种神经网络模型的运行方法,应用于电子设备,其特征在于,电子设备的处理器包括多个内核;并且该方法包括:
在运行神经网络模型的过程中,检测到处理器存在N个空闲内核;对于该神经网络模型中当前未被运行的M个计算节点,按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给所述N个空闲内核中的L个空闲内核,其中,N、M、L为正整数,并且L≤N。
在本申请实施例中,电子设备是先将分配优先级较高的计算节点,分配给空闲的内核,可以减小空闲内核分配计算节点等待该计算节点的输入数据的时间,如此可以降低处理器内核的空闲率,从而提高电子设备运行神经网络模型的速度。
在上述第一方面的一种可能实现中,根据神经网络模型各计算节点的运行顺序,确定各计算节点的分配优先级。
也即是在本申请实施例中,神经网络模型的计算节点的运行顺序越靠前,该计算节点的分配优先级越高。
在上述第一方面的一种可能实现中,根据神经网络模型各计算节点的运行顺序,确定各计算节点的分配优先级,包括:在待分配优先级的待分配计算节点未连接输入计算节点的情况下,确定待分配计算节点的优先级为第1级;在待分配计算节点连接至少一个输入计算节点、并且所连接的至少一个输入计算节点所具有的最高分配优先级为第j级的情况下,确定待分配计算节点的优先级为第j+1级,其中,第j级所表示的优先级高于第j+1级;
其中一计算节点的输入计算节点是指输出结果为该计算节点的输入数据的计算节点。
在上述第一方面的一种可能实现中,在M>N的情况下,L=N;未被运行的计算节点中的所具有的最高分配优先级为第k级,第k级分配优先级包括P个未被运行的计算节点;并且
按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给N个空闲内核中的L个空闲内核,包括:在P<L的情况下,将P个未被运行的计算节点分配给L个空闲内核中的P个空闲内核,并且按照分配优先级从高到低的顺序从分配优先级低于第k级的计算节点中选取L-P个计算节点分配给未分配计算节点的L-P个空闲内核;
在P≥L的情况下,从P个未被运行的计算节点中选取的L个计算节点分配给L个空闲内核。
即是电子设备在未计算的计算节点的数量大于空闲内核数量的情况下,先将当前未分配的未计算计算节点中最高分配优级的的计算节点分配给空闲的内核,再将次高分配优级的计算节点分配给空闲的内核,直到所有的空闲内核都分配有计算节点。
在上述第一方面的一种可能实现中,在M≤N的情况下,L=M;并且按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给N个空闲内核中的L个空闲内核,包括:将未被运行的M个计算节点分配给N个空闲内核中的M个空闲内核。
在上述第一方面的一种可能实现中,在处理器的内核未分配神经网络模型的计算节点或处理器的内核的空闲率大于预设值的情况下,确定该处理器的内核为空闲内核。
即是在本申请实施例中,处理器的内核未分配有计算节点或已分配有计算节点但内核的空闲率大于预设值的情况下,可以确定该内核为空闲内核。
在上述第一方面的一种可能实现中,L个未被运行的计算节点包括第一计算节点,并且该第一计算节点被分配给L个空闲内核中的第一内核;该方法还包括:在第一计算节点不存在输入计算节点或第一计算节点的输入计算节点已完成计算的情况下,在第一内核中启动第一计算节点对应的计算线程;
在第一计算节点的输入计算节点未完成计算的情况下,将第一计算节点对应的计算线程设置为休眠。
即是在将第一计算节点分配给第一内核后,若第一计算节点的输入计算节点已完成计算或第一计算节点没有输入计算节点,则直接在第一内核上启动第一计算节点对应的计算线程;若第一计算节点的输入计算节点未完成计算,则将第一计算节点对应的计算线程设置为休眠,以节省第一内核的计算资源。
在上述第一方面的一种可能实现中,还包括:在将第一计算节点对应的计算线程设置为休眠的情况下,将第一内核标记为空闲内核。
在本申请实施例中,将第一计算节点对应的计算线程设置为休眠的情况下,将第一内核标记为空闲内核,以便于其他计算节点可以通过第一内核来运行其他计算节点的计算线程,从而避免第一内核由于等待第一计算节点为输入数据处于空闲状态,进一步提高内核的使用率,从而提供神经网络模型的运行速度。
在上述第一方面的一种可能实现中,还包括:在检测到第一计算节点的输入计算节点已经完成计算,并且第一内核处于非空闲状态的情况下,取消第一计算节点与第一内核的分配关系,将第一计算节点作为待分配计算节点。
也即是在将第一内核分配给其他计算节点,但该计算节点还未完成计算的情况下,若第一计算节点的输入计算节点已经完成计算,将第一计算节点作为下一个分配的计算节点,确保第一计算节点可以及时运行,避免以第一计算节点为输入计算节点的计算节点等待第一计算节点的计算结果,从而提高神经网络模型的运行顺序。
第二方面,本申请实施例提供了一种可读介质,该可读介质中包含有指令,当该指令被电子设备的处理器执行时使电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任意一种神经网络模型运行方法。
第三方面,本申请实施例提供了一种电子设备,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令;
以及包括多个内核的处理器,是电子设备的处理器之一,用于运行指令以使所述电子设备实现上述第一方面及上述第一方面的各种可能实现提供的任意一种的神经网络模型运行方法。
附图说明
图1根据本申请的一些实施例,示出了一种神经网络模型10的结构示意图;
图2A根据本申请的一些实施例,示出了一种采用随机分配的方式来分配神经网络模型10的计算节点的分配结果示意图;
图2B根据本申请的一些实施例,示出了一种电子设备基于图2A所示的分配结果运行神经网络模型10的时序示意图;
图3A根据本申请的一些实施例,示出了一种神经网络模型10中未分配内核的计算节点的部分结构示意图;
图3B根据本申请的一些实施例,示出了一种神经网络模型10的计算节点的分配结果示意图;
图3C根据本申请的一些实施例,示出了一种电子设备基于图3B所示的分配结果运行神经网络模型10的时序示意图;
图4根据本申请的一些实施例,示出了一种神经网络模型运行方法的流程示意图;
图5根据本申请的一些实施例,示出了一种神经网络模型10对输入图像20进行超分辨计算的过程示意图;
图6根据本申请的一些实施例,示出了对R通道的特征数据矩阵进行Depth toSpace排序的过程示意图;
图7根据本申请的一些实施例,示出了一种电子设备100的示意图。
具体实施方式
本申请的说明性实施例包括但不限于一种神经网络模型运行方法、可读介质和电子设备。
下面将结合附图对本申请的技术方案作进一步清楚、完整地描述。
可以理解,用于根据本申请各实施例提供的方法运行神经网络模型的处理器可以为包括多个内核的任意处理器,包括但不限于中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)、神经网络处理器(Neural-networkProcessing unit,NPU)、数字信号处理器DSP(Digital Signal Processor)、微处理器MCU(Micro-programmed Control Unit)、AI(Artificial Intelligence,人工智能)处理器、可编程逻辑器件FPGA(Field Programmable Gate Array)等。为了便于说明,下文以包括4个内核的NPU 1011进行介绍。
图1示出了一种神经网络模型10的结构示意图。如图1所示,神经网络模型10包括11个计算节点,即计算节点A、计算节点B、……、计算节点J和计算节点K。在一些实施例中,为提高神经网络模型10的运行速度,电子设备可以将神经网络模型10中的计算节点分配给电子设备的处理器的多个内核进行并行运算。例如,电子设备可以随机将神经网络模型10的计算节点A分配给内核(Core1)。
具体地,图2A示出了一种采用随机分配的方式来分配神经网络模型10的计算节点的分配结果示意图。如图2A所示,电子设备可以分配NPU 1011的内核1(Core1)给计算节点A、计算节点B和计算节点C,分配NPU 1011的内核2(Core2)给计算节点D、计算节点E和计算节点F,分配NPU 1011的内核3(Core3)给计算节点G和计算节点H以及分配NPU 1011的内核4(Core4)给计算节点I、计算节点J和计算节点K。如前所述,如果随机分配用于运行各计算节点的内核,在某一计算节点的输入数据为其他计算节点的计算结果,但该计算结果还未计算完成的情况下,由于已经预先确定用于运行各计算节点的内核,会造成用于运行该计算节点的内核由于等待输入数据而处于空闲状态,造成处理器内核资源的浪费。
具体地,图2B示出了电子设备基于图2A所示的分配结果运行神经网络模型10的时序示意图。假设一个内核在一个计算周期内完成一个计算节点的运算,参考图2B,在T1时间内只有Core1进行计算节点A的运算,由于Core2、Core3、Core4对应的计算节点需要前置节点的计算结果作为输入数据,而在前置节点未完成计算的情况下,Core2、Core3、Core4对应的计算节点都处于空闲状态。类似地,在T2、T3、……、T11内,也存在部分内核处于空闲状态的情况。从图2B可以得到,电子设备基于图2A所示的分配结果运行神经网络模型需要的时间为T1+T2+……+T11,期间NPU的内核的空闲率为75%。
可以理解,内核的空闲率可以通过以下公式(1)确定:
其中,前置节点(也可以称为输入计算节点)表示,若一个计算节点A的计算依赖于计算节点B的计算结果作为输入数据,那么计算节点B被称为计算节点A的前置节点。
可以理解,上述实施例仅示出了一个内核在一段时间内仅能完成一个计算节点的运算的情况,在其他实施例中一个内核在一段时间内可以完成多个计算节点的运算。
为了降低内核的空闲率,从而提高神经网络模型的运行速度,本申请提出了一种神经网络模型的运行的方法,可以基于待运行神经网络模型中各计算节点的运行顺序,确定各计算节点的分配优先级,电子设备在运行神经网络模型的过程中,若检测到电子设备的处理器有空闲的内核,根据确定的分配优先级将分配优先级高的计算节点分配给该空闲的内核,并在该计算节点没有前置节点或前置节点都已计算完毕的情况下在该空闲的内核启动该计算节的计算线程,如此,可以提高处理器内核的利用率,从而提高电子设备运行神经网络模型的速度。此外,若该计算节点的前置节点未全部计算完毕,还可以将该计算节点的计算线程设置为休眠,并将该空闲的内核分配给其他计算节点,进一部提高处理器内核的利用率。
例如,对于图1所示的神经网络模型,电子设备可以将没有其他节点指向的计算节点(即是输入数据不包括未确定分配优先级的计算节点中任一计算节点的输出数据的各计算节点),例如计算节点A、计算节点B、计算节点C的分配优先级为第一分配优先级,从而未分配的计算节点的结构如图3A所示,再将图3A中没有其他节点指向的计算节点,即计算节点D、计算节点E、计算节点F、计算节点G的分配优先级确定为第二分配优先级;类似地,可以将计算节点H、计算节点I、计算节点J的分配优先级确定为第三分配优先级,计算节点K的分配优先级确定为第四分配优先级。
基于上述分配优先级,参考图3B,上述NPU 1011在运行神经网络模型10过程中,由于NPU 1011包括4个内核,可以先将第一分配优先级的计算节点A、计算节点B、计算节点C分配给Core1、Core2和Core3,再将第二分配优先级中的一个计算节点,例如计算节点D分配给Core4;在Core1、Core2和Core3有内核完成相应计算节点的计算的情况下,则可以将第二分配优先级中的计算节点分配给完成计算的内核,例如将计算节点E、计算节点F、计算节点G分配给Core3、Core2、Core1;在Core1、Core2、Core3和Core4完成相应计算节点(计算节点D、计算节点E、计算节点F、计算节点G)的计算后,可以先将第三分配优先级的计算节点分配给完成计算的内核,再将第四分配优先级的计算节点分配给完成计算的内核,例如,将计算节点H、计算节点I、计算节点J、计算节点K分配给Core4、Core3、Core2和Core1。
基于图3B所示的分配结果,可以得到图3C所示的NPU 1011运动神经网络模型10时的运行时序图。如3C所示,在T1时间内,由Core1、Core2和Core3分别运行计算节点A、计算节点B和计算节点C的计算线程;在T2时间内,由Core1、Core2、Core3和Core4分别运行计算节点G、计算节点F、计算节点E和计算节点E的计算线程;在T3时间内,由Core2、Core3和Core4分别运行计算节点J、计算节点I和计算节点H的计算线程;在T4时间内,由Core4运行计算节点K的计算线程。结合上述图3C和公式(1)可知,采用本申请实施例提供的方法,电子设备运行神经网络模型10的总时间为T1+T2+T3+T4,内核空闲率为31.25%,而图2A和图2B所示实施例中的内核空闲率为75%,可见本申请实施例提供的方法有效降低了内核的空闲率,提高了神经网络模型10的运行速度。
可以理解,本申请各实施例提供的方法适用于任意有向无环图结构的神经网络模型,例如,前馈神经网络模型、多层感知器神经网络模型以及卷积神经网络模型等等。在另一些实施例中,对于不具备有向无环图结构的神经网络模型,若可以通过其他间接的方式确定该神经网络模型的有向无环图结构,也可以采用本申请实施例提供的神经网络模型运行方法,在此不做限定。
下面结合图1、图3A和图3B所示的场景,以运行神经网络模型10的处理器为前述包括4个内核的NPU 1011详细介绍本申请实施例的技术方案。
具体地,图4根据本申请的实施例,示出了一种神经网络模型运行方法的流程示意图。该方法的执行主体为电子设备,如图4所示,该流程包括以下步骤:
S401:基于神经网络模型10各计算节点的运行顺序,确定各计算节点的分配优先级。
在一些实施例中,电子设备可以通过对神经网络模型10的有向无环图进行拓扑排序的方式来确定各计算节点的分配优先级。拓扑排序是实现一个将有向无环图中的所有顶点进行线性排序的算法。具体地,电子设备可以基于图1所示神经网络模型10的有向无环图G1,通过执行如下步骤来确定神经网络模型10的各计算节点的分配优先级:
(a)电子设备遍历有向无环图G1中的所有计算节点,搜索入度为0的计算节点(即是输入数据不包括未确定分配优先级的计算节点中任一计算节点的输出数据的各计算节点),并将搜索到的入度为0的计算节点的优先级标识,例如tgid,设置为i(i为整数)。其中,tgid用于标识该计算节点的分配优先级,tgid值越小,分配优先级越高。例如,在图1所示有向无环图G中,计算节点A、计算节点B和计算节点C的入度为0,可以将计算节点A、计算节点B和计算节点C的tgid设置为0;
(b)电子设备依次将tgid=i的各计算节点所指向的计算节点的入度减去指向各计算节点的tgid=i的计算节点的数量。例如,继续参考图1,计算节点D、计算节点E、计算节点F和计算节点G的入度都为3,计算节点A、计算节点B和计算节点C都指向计算节点D、计算节点E、计算节点F、计算节点,计算节点G,从而将计算节点D、计算节点E、计算节点F和计算节点G的入度减三,得到图3A所示的有向无环图G2。如图3A所示,计算节点D、计算节点E、计算节点F和计算节点G的入度都为0;
(c)电子设备遍历尚未分配tgid的所有计算节点,搜索所有入度为0的计算节点,将搜索到的入度为0的计算节点的tgid设置为i+1,并将tgid=i+1的各计算节点所指向各计算节点的入度减去指向各计算节点的tgid=i+1的计算节点的数量。例如,电子设备可以搜索到图3A所示的有向无环图G2中的入度为0的计算节点计算节点D、计算节点E、计算节点F和计算节点G,并将该四个计算节点的tgid设置为i+1;
(d)电子设备重复前述步骤(a)至步骤(c),完成所有计算节点的tgid设置。例如,,表1示出了图1所示神经网络模型10中的计算节点和tgid对应表。
tgid | 计算节点 |
0 | A、B、C |
1 | D、E、F、G |
2 | H、I、J |
3 | K |
表1一种计算节点和tgid值对应表
可以理解,在另一些实施例中,电子设备也可以通过其他方式来确定神经网络模型10的各计算节点的分配优先级,在此不做限定。
例如,在一些实施例中,电子设备可以将神经网络模型10中没有连接输入计算节点的计算节点(例如计算节点A、计算节点B和计算节点C)的分配优先级确定为第1级,并根据连接有输入计算节点的计算节点所连接的输入计算节点的分配优先级确定连接有输入计算节点的计算节点的分配优先级,例如,某一计算节点连接的输入计算节点的最高分配优先级为第j级,则将该计算节点的分配优先级设置为j+1级,其中第j级的分配优先级高于第j+1级的分配优先级。
S402:基于确定的分配优先级遍历各计算节点。
在一些实施例中,电子设备可以根据步骤S401确定的各计算节点的tgid,根据tgid从小到大依次遍历神经网络模型10的计算节点。例如,参考前述表1,电子设备首先遍历的是tgid=0的计算节点,即计算节点A、计算节点B和计算节点C;然后遍tgid=1的计算节点,即计算节点D、计算节点E、计算节点F和计算节点G;再遍历tgid=2的计算节点,即计算节点H、计算节点I和计算节点J;最后遍历tgid=3的计算节点,即计算节点K。
可以理解,对于tgid相同的多个计算节点,电子设备可以随机确定该多个计算点的遍历顺序(即是分配顺序),例如,对于tgid=0的计算节点,既可以先遍历计算节点A,也可以先遍历计算节点B,还可以先遍历计算节点C,在本申请实施例不做限制。
S403:判断是否存在空闲内核。如果存在,说明有空闲的内核可以完成当前计算节点(即当前遍历到的计算节点)的运算,转到步骤S404;否则,说明当前没有空闲核,重复步骤S403,直接检测到有空闲核。
可以理解,空闲核可以为未分配神经网络模型10的计算节点的内核;在一些实施例中,空闲核也可以是使用率小于预设值的内核,例如使用率小于30%的内核;在另一些实施例中,还可以通过另外的方式来确定空闲核,本申请中不做限定。例如,电子设备在遍历到计算节点A时,Core1、Core2、Core3、Core4都未分配神经网络模型10的计算节点,那么此时的Core1、Core2、Core3、Core4都可以称为空闲核。
可以理解,在一些实施例中,电子设备对于已分配计算节点但该计算节点对应的计算线程处理休眠状态的内核,即是该内核实际并未运行计算节点对应的线程的情况下,也可以将该内核确定空闲核。
S404:将存在的空闲核分配给当前计算节点。
例如,参考图1中的神经网络模型10,电子设备在遍历到计算节点A时,由于还未对任何计算节点进行分配,Core1、Core2、Core3和Core4都是存在的空闲核,电子设备可以随机从存在的多个空闲核中选取一个分配给当前计算节点,例如选取Core1来运行计算节点A。类似地,电子设备可以选取Core2来运行计算节点B、选取Core3来运行计算节点C、Core4来运行计算节点D。
S405:判断当前计算节点是否满足运行条件。
电子设备判断当前计算节点是否满足运行条件,以便于确定是否启动该计算节点的计算线程。例如,当前计算节点的前置节点已经完成了计算或当前计算节点不存在前置计算节点的情况下,可以确定当前计算节点满足运行条件,转至步骤S407;否则,说明当前计算节点不满足运行条件,转至步骤S406。
例如,在当前计算节点为神经网络模型10的计算节点A的情况下,由于计算节点A无前置节点时,可以直接转至步骤S407。又例如,在当前计算节点为神经网络模型10的计算节点D的情况下,计算节点D存在前置计算节点(计算节点A、计算节点B和计算节点C),电子设备在计算节点A、计算节点B和计算节点C都已经完成了计算的情况下,转至步骤S407;否则转至步骤S406。
S406:将当前计算节点的计算线程休眠。
电子设备在当前计算节点不满足运行条件的情况下,电子设备可以将当前计算节点的计算线程休眠,等待至当前计算节点的前置节点完成计算后再启动该计算节点的计算线程。
可以理解,在一些实施例中,电子设备可以通过设置一个检测模块来周期性地检测计算线程处于休眠状态的计算节点的前置节点是否完成计算,若检测到有计算节点的前置节点均完成了计算,则在步骤S404分配的内核上启动该计算节点对应的计算线程。
可以理解,在一些实施例中,若电子设备在检测到某一计算节点的前置节点已经完成计算,但预先分配给该计算节点的内核处于忙碌状态,可以将该计算节点设置为下一个遍历的节点,优先为该计算节点分配内核。。
可以理解,在一些实施例中,电子设备在完成一个计算节点的计算的情况下,还可以向前述检测模块发送计算完成的中断消息,以便于检测模块可根据该消息启动相应的计算节点的计算线程。
S407:启动当前的计算节点对应的计算线程。
电子设备在当前计算节点满足运行条件的情况下,也即是当前的计算节点无前置节点或前置节点已经完成计算的情况下,直接在步骤S404分配的内核中启动当前计算节点的计算线程。例如,在神经网络模型10中,在判断得到计算节点A无前置节点的情况下,电子设备在前述步骤S403确定的空闲内核,例如Core1上,启动计算节点A的对应的计算线程,开始计算节点A的计算。
可以理解,在一些实施例中,电子设备在启动当前的计算节点的计算线程后,还可以将当前节点标记为已完成,上述检测模块可以根据该标识启动以该计算节点为前置节点的计算节点对应的计算线程。
S408:判断是否已经完成所有计算节点的分配。
即是电子设备判断神经网络模型10的所有计算节点是否都已分配完成,如果都已经完成,则结束;否则转至步骤S402,遍历下一个计算节点。
例如,在一些实施例中,分配结果可以如前述图3A所示,由Core1运行计算节点A、计算节点G和计算节点K,由Core2运行计算节点B、计算节点F和计算节点J,由Core3运行计算节点C、计算节点E和计算节点I,由Core4运行计算节点D和计算节点H。
可以理解,前述步骤S401至S408的运行顺序只是一种示例,在另一些实施例中,也可以采用其他顺序,还可以合并或拆分部分步骤,本申请实施例不做限定。
通过本申请实施例提供的神经网络模型的运行方法,电子设备在运行神经网络模型的过程中,可以根据电子设备的处理器的内核空闲状态、神经网络模型的各计算点的分配优先级来分配用于运行各计算节点的内核,如此可以降低内核的空闲率,提高神经网络模型的运行速度。
为了进一步对本申请的技术方案进行说明,下面以神经网络模型10为对输入图像进行超分辨处理,以提高输入图像的清晰度的神经网络模型为例,详细介绍电子设备运行神经网络模型10的过程。
具体地,图5根据本申请的一些实施例,示出了神经网络模型10对输入图像20进行超分辨计算的过程示意图。下面结合图5介绍神经网络模型10的各计算节点的功能。
神经网络模型10的计算节点A、计算节点B和计算节点C用于对输入图像的不同颜色通道的数据(例如R(红色)、G(绿色)、B(蓝色)通道)进行量化,例如分别将输入图像数据的各通道量化为8位,R通道的图像数据矩阵21、G通道的图像数据矩阵22、B通道的图像数据矩阵23;计算节点D、计算节点E、计算节点F和计算节点G为卷积层,用于对各通道的数据进行特征提取,生成4个与输入图像数据大小相同的特征数据,例如四个计算节点分别对R通道的图像数据矩阵21进行卷积,得到特征数据矩阵211、特征数据矩阵212、特征数据矩阵213和特征数据矩阵214(其他通道的计算类似,在此不做赘述);计算节点H、计算节点I和计算节点J用于对前述特征数据进行Depth to Space(深度到空间转换)排序,以将输入图像的各通道的分辨率提高4倍,例如,用特征数据矩阵211、特征数据矩阵212、特征数据矩阵213和特征数据矩阵214相同位置的元素,例如第1行第1列的元素,组成2×2的矩阵去替换R通道的图像数据矩阵21相同位置的元素,从而得到分辨率为原图像4位的各通道的图像数据矩阵(即每个元素由4个元素替换),例如基于前述特征数据矩阵211、特征数据矩阵212、特征数据矩阵213和特征数据矩阵214进行Depth to Space排序即可得到R通道的提高分辨率后的数据矩阵215(其他通道的计算类似,在此不做赘述);计算节点K用于将提高分辨率后的各通道数据进行组装,得到提高分辨率后的输出图像30。
下面结合图3B所示的神经网络模型10的各计算节点的分配结果、图5所示的神经网络模型10的运算过程,继续以运行神经网络模型10的处理器为前述包括4个内核的NPU1011为例,介绍神经网络模型的运行过程。
可以理解,神经网络模型10对不同的颜色通道的数据的处理过程类似,以下在描述神经网络模型10的运行过程时,仅对R通道的数据的处理过程进行描述,G通道和B通道的处理过程可以参考R通道的数据的处理过程。
首先,NPU 1011包括4个内核,因此,电子设备可以把Core1、Core2、Core3和Core4分别分配给神经网络模型10的前四个节点,例如计算节点A、计算节点B、计算节点C和计算节点D。由于计算节点A、计算节点B和计算节点C的输入数据为输入图像20,可以直接运行,而计算节点D存储前置计算节点,因此,在T1计算周期内,电子设备在获取到输入图像20后,可以通过Core1、Core2和Core3来分别对输入图像20的R通道、G通道和B通道的数据进行量化,得到前述R通道的图像数据矩阵21、G通道的图像数据矩阵22、B通道的图像数据矩阵23。。
其次,在Core1、Core2和Core3完成计算节点A、计算节点B和计算节点C的运算后,存在3个空闲核,故而可以将Core1、Core2和Core3分别分配给计算节点G、计算节F和计算节点E。由于计算节点D、计算节点E、计算节F和计算节点G的前置节点都已经完成计算,故而电子设备在T2计算周期内,通过Core1、Core2、Core3和Core4,基于不同的卷积核对R通道的图像数据矩阵21、G通道的图像数据矩阵22、B通道的图像数据矩阵23进行特征提取,得到各通道的特征数据矩阵。
以下以R通道的图像数据矩阵21进行卷积说明卷积计算的过程,卷积计算可以基于以下公式(2)确定:
公式(2)中,A为R通道的图像数据矩阵21,为的大小为M×M,卷积核K的大小为N×N,卷积步长为k,可以表示为在公式(1)中,H(m,n)为矩阵A与卷积核K的卷积结果矩阵H第m行第n列的元素;m,n满足以下关系式:
为确保卷积结果对应的矩阵的大小与输入数据的大小相同,避免丢失图片数据矩阵边缘的数据特征,通常在卷积计算的过程中在输入矩阵的第一行前和最后一行后填充值为0的行以及在输入矩阵第一列之前和最后一列之后填充值为0的行或列,即在输入矩阵的四周填充值为0的行或列。设在输入矩阵A的四周各填充数量为P的值为0的行或列,此时,输入矩阵A的大小变为(M+2P)×(M+2P)。此时,公式(1)中的m,n满足以下关系式:
具体地,假设R通道的图像数据矩阵21(A)为:
卷积核K为:
则A与K的卷积结果H(即特征数据矩阵211)可以表示为:
可以理解,R通道的特征数据矩阵212、特征数据矩阵213和特征数据矩阵214,G通道的特征数据矩阵221、特征数据矩阵222、特征数据矩阵223和特征数据矩阵224,B通道的特征数据矩阵231、特征数据矩阵232、特征数据矩阵233和特征数据矩阵234可以通过类似的方法确定,在此不做赘述。
然后,在Core1、Core2、Core3和Core4完成计算节点D、计算节点E、计算节点F和计算节点G的运算后,存在4个空闲内核,电子设备可以把Core1、Core2、Core3和Core4分别分配给计算节点K、计算节点J、计算节点I和计算节点H。由于计算节点J、计算节点I和计算节点H的前置节点已经完成计算,可以直接运行,而计算节点K存在无完成计算的前置计算节点,因此电子设备在T3计算周期内,Core2、Core3和Core4基于各通道的不同特征矩阵进行Depth to Space排序,得到各通道提高分辨率后的数据矩阵。下面以对R通道的特征数据矩阵211、特征数据矩阵212、特征数据矩阵213和特征数据矩阵214进行Depth to Space排序介绍计算节点H、计算节点I和计算节点J的计算过程。
例如,图6根据本申请的一些实施例,示出了对R通道的特征数据矩阵211、特征数据矩阵212、特征数据矩阵213和特征数据矩阵214进行Depth to Space排序的过程示意图。如图6所示,Depth to Space排序的过程即是用特征数据矩阵211、特征数据矩阵212、特征数据矩阵213和特征数据矩阵214相同位置的元素,例如第1行第1列的元素,组成2×2的矩阵去替换R通道的图像数据矩阵21相同位置的元素,从而得到R通道的数据提高分辨率后的数据矩阵215,可见数据矩阵大小由100×100增加为200×200,即由4个元素替换原有1个元素的位置,分辨率(图像相同面积中的像素点越多,分辨率越大)为原图像的4倍。
可以理解,G通道的数据提高分辨率后的数据矩阵225、B通道的数据提高分辨率后的数据矩阵235的确定方法类似,在此不做赘述。
最后,在计算节点K的前置计算节点完成计算后,电子设备通过计算节点K,将三个通道的提高分辨率后的数据矩阵(即R通道的数据提高分辨率后的数据矩阵215、G通道的数据提高分辨率后的数据矩阵225、B通道的数据提高分辨率后的数据矩阵235)进行组装置,得到图5所示的输出图像30。
进一步,图7根据本申请的实施例,示出了一种适用本申请实施例提供神经网络模型运行方法的电子设备100的硬件结构示意图。
如图7所示,电子设备100包括一个或多个处理器101、系统内存102、非易失性存储器(Non-Volatile Memory,NVM)103、通信接口104、输入/输出(I/O)设备105、以及用于耦接处理器101、系统内存102、非易失性存储器103、通信接口104和输入/输出(I/O)设备105的系统控制逻辑106。其中:
处理器101可以包括一个或多个处理单元,例如,可以包括中央处理器CPU(Central Processing Unit)、图像处理器GPU(Graphics Processing Unit)、数字信号处理器DSP(Digital Signal Processor)、微处理器MCU(Micro-programmed Control Unit)、AI(Artificial Intelligence,人工智能)处理器或可编程逻辑器件FPGA(FieldProgrammable Gate Array)等的处理模块或处理电路可以包括一个或多个单核或多核处理器。在一些实施例中,处理器101可以通过执行本申请实施例提供的神经网络模型的运行方法对应的指令,分配用于运行待运行神经网络模型的各计算节点的内核。
在一些实施例中,处理器101可以包括前述具有4个内核的NPU 1011用于根据本申请实施例提供的方法运行神经网络模型。可以理解,在另一些实施例中,NPU 1011也可以设置于处理器101的外部,还可以包括更多或更少的内核,本申请实施例不做限定。
系统内存102是易失性存储器,例如随机存取存储器(Random-Access Memory,RAM),双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR SDRAM)等。系统内存用于临时存储数据和/或指令,例如,在一些实施例中,系统内存102可以用于存储解析神经网络模型有向无环图结构的层次的指令,也可以用于存储本申请实施例提供的神经网络模型的运行方法对应的指令。
非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD)、光盘(Compact Disc,CD)、数字通用光盘(Digital Versatile Disc,DVD)、固态硬盘(Solid-State Drive,SSD)等。在一些实施例中,非易失性存储器103也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡等。在另一些实施例中,非易失性存储器103可以用于存储神经网络模型的有向无环图结构,也可以用于存储本申请实施例提供的神经网络模型的运行方法对应的指令,还可以用于存储用于神经网络模型的各计算节点的输入和输出数据。
特别地,系统内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101中的至少一个执行时使电子设备100实现本申请各实施例提供的神经网络模型运行方法。
通信接口104可以包括收发器,用于为电子设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,通信接口104可以集成于电子设备100的其他组件,例如通信接口104可以集成于处理器101中。在一些实施例中,电子设备100可以通过通信接口104和其他设备通信。
输入/输出(I/O)设备105可以输入设备如键盘、鼠标等,输出设备如显示器等,用户可以通过输入/输出(I/O)设备105与电子设备100进行交互,例如输入待运行的神经网络模型等。
系统控制逻辑106可以包括任意合适的接口控制器,以电子设备100的其他模块提供任意合适的接口。例如在一些实施例中,系统控制逻辑106可以包括一个或多个存储器控制器,以提供连接到系统内存102和非易失性存储器103的接口。
在一些实施例中,处理器101中的至少一个可以与用于系统控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成系统封装(System in Package,SiP)。在另一些实施例中,处理器101中的至少一个还可以与用于系统控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成片上系统(System-on-Chip,SoC)。
可以理解,图7所示的电子设备100的结构只是一种示例,在另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
可以理解,电子设备100可以是任意电子设备,包括但不限于手机、可穿戴设备(如智能手表等)、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备等,本申请实施例不做限定。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(Digital Signal Processor,DSP)、微控制器、专用集成电路(Application Specific Integrated Circuit,ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读存储器(Erasable Programmable Read OnlyMemory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable ProgrammableRead-Only Memory,EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。
Claims (11)
1.一种神经网络模型的运行方法,应用于电子设备,其特征在于,所述电子设备的处理器包括多个内核;并且
所述方法包括:
在运行所述神经网络模型的过程中,检测到所述处理器存在N个空闲内核;
对于所述神经网络模型中当前未被运行的M个计算节点,按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给所述N个空闲内核中的L个空闲内核,其中,N、M、L为正整数,并且L≤N。
2.根据权利要求1所述的方法,其特征在于,还包括:
根据所述神经网络模型各计算节点的运行顺序,确定各所述计算节点的分配优先级。
3.根据权利要求2所述的方法,其特征在于,所述根据所述神经网络模型各计算节点的运行顺序,确定各所述计算节点的分配优先级,包括:
在待分配优先级的待分配计算节点未连接输入计算节点的情况下,确定所述待分配计算节点的优先级为第1级;
在待分配计算节点连接至少一个输入计算节点、并且所连接的至少一个输入计算节点所具有的最高分配优先级为第j级的情况下,确定待分配计算节点的优先级为第j+1级,其中,第j级所表示的优先级高于所述第j+1级;
其中一计算节点的输入计算节点是指输出结果为该计算节点的输入数据的计算节点。
4.根据权利要求3所述的方法,其特征在于,在M>N的情况下,L=N;所述未被运行的计算节点中的所具有的最高分配优先级为第k级,所述第k级分配优级包括P个未被运行的计算节点;并且
所述按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给所述N个空闲内核中的L个空闲内核,包括:
在P<L的情况下,将所述P个未被运行的计算节点分配给所述L个空闲内核中的P个空闲内核,并且
按照分配优先级从高到低的顺序从分配优先级低于第k级的计算节点中选取L-P个计算节点分配给未分配计算节点的L-P个空闲内核;
在P≥L的情况下,从所述P个未被运行的计算节点中选取的L个计算节点分配给所述L个空闲内核。
5.根据权利要求3所述的方法,其特征在于,在M≤N的情况下,L=M;并且
所述按照分配优先级从高到低的顺序,选择出L个未被运行的计算节点分配给所述N个空闲内核中的L个空闲内核,包括:
将所述未被运行的M个计算节点分配给所述N个空闲内核中的M个空闲内核。
6.根据权利要求1至5中任一项所述的方法,其特征在于,在所述处理器的内核未分配所述神经网络模型的计算节点或所述处理器的内核的空闲率大于预设值的情况下,确定所述处理器的内核为空闲内核。
7.根据权利要求6所述的方法,其特征在于,所述L个未被运行的计算节点包括第一计算节点,并且所述第一计算节点被分配给所述L个空闲内核中的第一内核;
所述方法还包括:
在所述第一计算节点不存在输入计算节点或所述第一计算节点的输入计算节点已完成计算的情况下,在所述第一内核中启动所述第一计算节点对应的计算线程;
在所述第一计算节点的输入计算节点未完成计算的情况下,将所述第一计算节点对应的计算线程设置为休眠。
8.根据权利要求7所述的方法,其特征在于,还包括:
在将所述第一计算节点对应的计算线程设置为休眠的情况下,将所述第一内核标记为空闲内核。
9.根据权利要求8所述的方法,其特征在于,还包括:
在检测到所述第一计算节点的输入计算节点已经完成计算,并且所述第一内核处于非空闲状态的情况下,取消所述第一计算节点与所述第一内核的分配关系,将所述第一计算节点作为待分配计算节点。
10.一种可读介质,其特征在于,所述可读介质中包含有指令,当所述指令被电子设备的处理器执行时使电子设备实现权利要求1至9中任一项所述的神经网络模型的运行方法。
11.一种电子设备,其特征在于,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令;
以及包括多个内核的处理器,是所述电子设备的处理器之一,用于运行所述指令以使所述电子设备实现权利要求1至9中任一项所述的神经网络模型的运行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111588865.0A CN114282661B (zh) | 2021-12-23 | 神经网络模型的运行方法、可读介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111588865.0A CN114282661B (zh) | 2021-12-23 | 神经网络模型的运行方法、可读介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114282661A true CN114282661A (zh) | 2022-04-05 |
CN114282661B CN114282661B (zh) | 2024-06-25 |
Family
ID=
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115859016A (zh) * | 2023-03-02 | 2023-03-28 | 深圳思谋信息科技有限公司 | 基于处理器的运算方法、装置、计算机设备及存储介质 |
CN115883564A (zh) * | 2023-02-21 | 2023-03-31 | 青岛创新奇智科技集团股份有限公司 | 一种媒体流处理方法、装置、电子设备及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3089080A1 (en) * | 2015-04-27 | 2016-11-02 | Universität Zürich | Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems |
JP6406466B1 (ja) * | 2017-04-07 | 2018-10-17 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
WO2019033381A1 (en) * | 2017-08-18 | 2019-02-21 | Intel Corporation | EFFECTIVE NEURONIC NETWORKS WITH MATRIX STRUCTURES DEVELOPED IN AUTOMATIC LEARNING ENVIRONMENTS |
CN110378413A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 神经网络模型处理方法、装置以及电子设备 |
CN112084038A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
CN112199196A (zh) * | 2020-10-21 | 2021-01-08 | 上海交通大学 | 一种资源配置方法、介质及服务端 |
CN113269318A (zh) * | 2021-06-04 | 2021-08-17 | 安谋科技(中国)有限公司 | 电子设备及其神经网络模型运行方法、存储介质 |
CN113485841A (zh) * | 2021-07-28 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 一种基于边缘计算的数据处理方法、设备及可读存储介质 |
CN113537400A (zh) * | 2021-09-14 | 2021-10-22 | 浙江捷瑞电力科技有限公司 | 一种基于分支神经网络的边缘计算节点的分配与退出方法 |
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3089080A1 (en) * | 2015-04-27 | 2016-11-02 | Universität Zürich | Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems |
JP6406466B1 (ja) * | 2017-04-07 | 2018-10-17 | オムロン株式会社 | 制御装置、制御方法および制御プログラム |
WO2019033381A1 (en) * | 2017-08-18 | 2019-02-21 | Intel Corporation | EFFECTIVE NEURONIC NETWORKS WITH MATRIX STRUCTURES DEVELOPED IN AUTOMATIC LEARNING ENVIRONMENTS |
CN110378413A (zh) * | 2019-07-17 | 2019-10-25 | Oppo广东移动通信有限公司 | 神经网络模型处理方法、装置以及电子设备 |
CN112084038A (zh) * | 2020-09-23 | 2020-12-15 | 安徽寒武纪信息科技有限公司 | 神经网络的内存分配方法及装置 |
CN112199196A (zh) * | 2020-10-21 | 2021-01-08 | 上海交通大学 | 一种资源配置方法、介质及服务端 |
CN113269318A (zh) * | 2021-06-04 | 2021-08-17 | 安谋科技(中国)有限公司 | 电子设备及其神经网络模型运行方法、存储介质 |
CN113485841A (zh) * | 2021-07-28 | 2021-10-08 | 腾讯科技(深圳)有限公司 | 一种基于边缘计算的数据处理方法、设备及可读存储介质 |
CN113537400A (zh) * | 2021-09-14 | 2021-10-22 | 浙江捷瑞电力科技有限公司 | 一种基于分支神经网络的边缘计算节点的分配与退出方法 |
Non-Patent Citations (2)
Title |
---|
刘强;李佳峻;: "基于GPU的并行拟牛顿神经网络训练算法设计", 河海大学学报(自然科学版), no. 05, 25 September 2018 (2018-09-25) * |
谢剑: "一种基于云计算任务神经网络调度算法", 现代信息科技, vol. 05, no. 13, 31 July 2021 (2021-07-31), pages 31 - 33 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115883564A (zh) * | 2023-02-21 | 2023-03-31 | 青岛创新奇智科技集团股份有限公司 | 一种媒体流处理方法、装置、电子设备及存储介质 |
CN115859016A (zh) * | 2023-03-02 | 2023-03-28 | 深圳思谋信息科技有限公司 | 基于处理器的运算方法、装置、计算机设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11507382B2 (en) | Systems and methods for virtually partitioning a machine perception and dense algorithm integrated circuit | |
CN109919311B (zh) | 生成指令序列的方法、执行神经网络运算的方法和装置 | |
US11562214B2 (en) | Methods for improving AI engine MAC utilization | |
CN107533459B (zh) | 使用电阻存储器阵列的数据处理方法和单元 | |
US11775430B1 (en) | Memory access for multiple circuit components | |
US11915139B2 (en) | Modifying machine learning models to improve locality | |
US20210191765A1 (en) | Method for static scheduling of artificial neural networks for a processor | |
CN114026569A (zh) | 使用脉动阵列的扩张卷积 | |
US11620510B2 (en) | Platform for concurrent execution of GPU operations | |
KR102552954B1 (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템의 동작 방법 | |
KR102594657B1 (ko) | 비순차적 리소스 할당을 구현하는 방법 및 장치 | |
WO2020073801A1 (zh) | 一种3d图像处理中数据读写方法及系统、存储介质及终端 | |
JP7492555B2 (ja) | 複数の入力データセットのための処理 | |
CN113590508A (zh) | 动态可重构的内存地址映射方法及装置 | |
CN112889038A (zh) | 系统级缓存 | |
US11501145B1 (en) | Memory operation for systolic array | |
JP2020061133A (ja) | メモリプロセッサを用いた多重処理アーキテクチャ及びその動作方法 | |
KR20160037737A (ko) | 스케쥴러 컴퓨팅 장치, 그것을 포함하는 분산 컴퓨팅 시스템의 데이터 노드 및 그것의 방법 | |
KR20190057558A (ko) | 멀티 코어 제어 시스템 | |
CN114282661B (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
CN114282661A (zh) | 神经网络模型的运行方法、可读介质和电子设备 | |
JP2020191012A (ja) | 画像処理装置、撮像装置、画像処理方法 | |
CN115374232A (zh) | 张量分配方法、介质、电子设备和程序产品 | |
US11610102B1 (en) | Time-based memory allocation for neural network inference | |
CN112100446B (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 |