本申请涉及计算机技术领域,尤其涉及一种网络节点处理方法、装置、存储介质及电子设备。
背景技术:
当今智能手机平台上有很多适合移动端的神经网络模型,通常需要使用合适的数据结构来表示神经网络的各网络节点。例如小米的mace,腾讯的ncnn,阿里巴巴的mnn等,它们都是用容器来表示神经网络的各网络节点。
当触发采用神经网络模型推理计算时,需要根据手机当前各计算处理单元(如cpu,gpu,dsp)的空闲状态,动态地决定各网络节点运行在哪个计算处理单元上,此时,就需要对神经网络模型的网络结构进行修改,也就是需要将容器中的网络节点删除或者向容器中添加网络节点。但每删除或添加一个网络节点到容器,都需要把容器中位于它之后的所有网络节点进行移位操作,尤其当网络节点数量较多时,每进行一次网络结构调整,都需要耗费较长的时间,从而降低了采用神经网络模型推理计算的效率。
技术实现要素:
本申请实施例提供了一种网络节点处理方法、装置、存储介质及电子设备,只需要修改该网络节点的上一网络节点以及下一网络节点的连接关系,而不需要频繁移位操作,节省了网络结构调整时间,从而可以提高采用神经网络模型推理计算的效率。所述技术方案如下:
第一方面,本申请实施例提供了一种网络节点处理方法,所述方法包括:
触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元,所述目标网络节点运行在所述第二计算处理单元;
当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元;
获取所述目标网络节点的下一个网络节点,将所述下一个网络节点确定为目标网络节点,并执行所述确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元的步骤;
当确定不存在下一个网络节点时,生成推理计算结果。
第二方面,本申请实施例提供了一种网络节点处理装置,所述装置包括:
节点确定模块,用于触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元,所述目标网络节点运行在所述第二计算处理单元;
节点分配模块,用于当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元;
节点循环模块,用于获取所述目标网络节点的下一个网络节点,将所述下一个网络节点确定为目标网络节点,并执行所述确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元的步骤;
结果生成模块,用于当确定不存在下一个网络节点时,生成推理计算结果。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的方法步骤。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的方法步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请实施例中,触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元且所述目标网络节点运行在所述第二计算处理单元,当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元,并按照相同的方式处理其他网络节点,当所有网络节点处理完成时,生成推理计算结果。通过链表形式表示各网络节点,即把神经网络模型中每个网络节点用链表的方式串联起来,每进行一次网络结构调整在频繁进行网络节点的插入和删除时,即使网络节点数量较多,只需要修改该网络节点的上一网络节点以及下一网络节点的连接关系,而不需要频繁移位操作,节省了网络结构调整时间,从而可以提高采用神经网络模型推理计算的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络节点处理方法的流程示意图;
图2是本申请实施例提供的一种链表结构的举例示意图;
图3是本申请实施例提供的一种删除第一链表中网络节点的举例示意图;
图4是本申请实施例提供的一种删除第一链表中网络节点后的链表结构的举例示意图;
图5是本申请实施例提供的一种添加网络节点到第二链表中的举例示意图;
图6是本申请实施例提供的一种添加网络节点后的第二链表的结构的举例示意图;
图7是本申请实施例提供的一种网络节点处理方法的流程示意图;
图8是本申请实施例提供的一种网络节点处理装置的结构示意图;
图9是本申请实施例提供的一种网络节点处理装置的结构示意图;
图10是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面将结合附图1-附图7,对本申请实施例提供的网络节点处理方法进行详细介绍。该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的网络节点处理装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。其中,本申请实施例中的网络节点处理装置可以为用户终端,所述用户终端包括但不限于:智能手机、个人电脑、平板电脑、手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备等。
请参见图1,为本申请实施例提供的一种网络节点处理方法的流程示意图。如图1所示,本申请实施例的所述方法可以包括以下步骤:
s101,触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元,所述目标网络节点运行在所述第二计算处理单元;
神经网络是由大量的、简单的处理单元(神经元)广泛地互相连接而形成的复杂网络系统。神经网络具有大规模并行、分布式存储和处理、自组织、自适应和自学能力,特别适合处理需要同时考虑许多因素和条件的、不精确和模糊的信息处理问题。神经网络模型是以神经元的数学模型为基础来描述的。
其中,每一个神经元为一个网络节点,也叫一个算子。
当需要采用神经网络模型进行推理计算时,根据各计算处理单元(cpu,gpu,dsp等)的负载率f以及该网络节点在各计算处理单元的执行时间t等信息,动态地决定每个网络节点需要分配到哪个处理单元上运行,因此,需要对神经网络模型的网络结构进行修改。在至少一个网络节点中,任一网络节点为目标网络节点,所有网络节点均可采用相同的方式分配。
具体修改可以包括:把网络进行切分,将各网络节点分散到各计算处理单元;根据计算处理单元的特点,需要在进入某个处理单元之前删除某个网络节点;根据计算处理单元的特点,把某几个网络节点进行合并等。
需要说明的是,在本申请实施例中,在触发神经网络模型进行推理计算前,神经网络模型的各个网络节点预存在第一计算处理单元,且以第一链表的形式预存。
第一计算处理单元可以为用户终端的任一处理单元,为系统预先配置的,如cpu。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为网络结点)组成,网络结点可以在运行时动态生成。
如图2所示为一种链表结构示意图,其中包括多个网络节点,每个网络结点包括两个部分:一个是存储数据元素的数据域data,另一个是存储下一个结点地址的指针域next。由于不必按顺序存储,链表在插入的时候可以达到o(1)的复杂度。
当前,需要确定第一计算处理单元上各网络节点具体分配到哪个第二计算处理单元上运行。第二计算处理单元与第一计算处理单元可以相同,也可以不同,第二计算处理单元可以包括至少一个,例如,若用户终端包括cpu、gpu以及dsp三个计算处理单元,cpu为第一计算处理单元,第二计算处理单元可以为cpu或gpu或dsp。
可以理解的是,对于神经网络模型包含的多个网络节点,可以先确定每个网络节点所属的第二计算处理单元,然后再进行节点分配,也可以先确定一个网络节点所述的第二计算处理单元,再进行分配,并在该网络节点分配完成后再按照相同的方式分配下一个网络节点。其中,每个网络节点所属的第二计算处理单元即为每个网络节点即将运行的载体(第二计算处理单元)。在本申请实施例中,以每个网络节点依次分配为例进行说明。
s102,当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元;
当所述第一计算处理单元与所述第二计算处理单元相同时,表明该节点仍然在原计算处理单元上而不需要移动到其他计算处理单元。当第一计算处理单元与所述第二计算处理单元不同时,需要将该网络节点从第一计算处理单元删除并添加至第二计算处理单元上。
若目标网络节点为q,确定该网络节点需要分配到不同于第一计算处理单元的第二计算处理单元上,则需要将q从第一链表中删除,例如,如图3所示,q的上一个节点为p,下一个节点为s,则通过将p->next=q->next;freeq,可以使p指向s,从而将q删除,而其它网络节点保持不变,删除后的第一链表结构如图4所示。
当然,还需要将所删除的q插入到第二计算处理单元上。在第二计算处理单元上同样以链表形式(第二链表)存储网络节点。当q为第一个分配到第二计算处理单元上的网络节点时,可将q直接放在第二链表中的第一个节点。当需要将q插入到第二链表上某两个网络节点之间时,如图5所示,若需要将q插入到第二链表上节点o和节点r之间时,设置q->next=r->next;o->next=q,从而将q插入,而其它网络节点保持不变,插入后的第二链表结构如图6所示。
s103,获取所述目标网络节点的下一个网络节点,将所述下一个网络节点确定为目标网络节点,并执行所述确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元的步骤;
例如,如图3所示,若目标网络节点为q,则目标网络节点的下一个网络节点为s,将s确定为目标网络节点后,按照与q相同的方式进行处理,并以此处理处理剩下的网络节点。
s104,当确定不存在下一个网络节点时,生成推理计算结果。
当确定不存在下一个网络节点时,表明第一链表中所存储的所有网络节点均分配完成,因此,可采用第一计算处理单元以及第二计算处理单元同时运行各网络节点,并得到推理计算结果。或者理解为,在每分配完成一个网络节点后,立即运行该网络节点,并将运行结果作为下一个网络节点的输入,直到每个处理单元上的最后一个网络节点运行完成,将运行结果组合生成最终的推理计算结果。
例如,该神经网络模型包括30个网络节点,这些网络节点按照先后顺序编号分别为1~30,若1~10分配在cpu上,11~20分配在gpu上,21~30分配在dsp上,可以在1号节点分配完成后运行该节点,然后分配2号节点,并将1号节点的运行结果作为2号节点的输入,以此类推,在10号节点运行完成后输出第一推理计算结果,按照相同的方式分别运行11~20以及21~30,在20运行完成后输出第二推理计算结果,在30运行完成后输出第三推理计算结果,然后根据第一推理计算结果、第二推理计算结果以及第三推理计算结果得到最终的推理结算结果,此时,该神经网络模型运行结束。
又例如,该神经网络模型包括30个网络节点,这些网络节点按照先后顺序编号分别为1~30,若1~10分配在cpu上,11~20分配在gpu上,21~30分配在dsp上,在所有节点均分配完成后,同时运行不同计算处理单元上的节点,最后将每个计算处理单元上的组合生成最终的推理结算结果。
在本申请实施例中,触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元且所述目标网络节点运行在所述第二计算处理单元,当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元,并按照相同的方式处理其他网络节点,当所有网络节点处理完成时,生成推理计算结果。通过链表形式表示各网络节点,即把神经网络模型中每个网络节点用链表的方式串联起来,每进行一次网络结构调整在频繁进行网络节点的插入和删除时,即使网络节点数量较多,只需要修改该网络节点的上一网络节点以及下一网络节点的连接关系,而不需要频繁移位操作,节省了网络结构调整时间,从而可以提高采用神经网络模型推理计算的效率。
请参见图7,为本申请实施例提供的一种网络节点处理方法的流程示意图。本实施例以网络节点处理方法应用于智能手机中来举例说明。该网络节点处理方法可以包括以下步骤:
s201,触发采用包括至少一个网络节点的神经网络模型进行推理计算,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元;
具体可参见s101,此处不再赘述。
s202,获取各计算处理单元的当前负载率,以及所述目标网络节点分别在所述各计算处理单元上的执行时间;
负载率f指该变压器实际承担的负荷与其容量之比,用于反应变压器的承载能力,其运行曲线是否位于最佳的75~80%之间。当前负载率即为在触发采用包括至少一个网络节点的神经网络模型进行推理计算时各计算处理单元的负载率。
假设智能手机的计算处理单元包括cpu、gpu、dsp,目标网络节点在这三个计算处理单元上的执行时间分别为t1、t2和t3,每个计算处理单元的当前负载率分别为f1、f2和f3。
s203,基于所述当前负载率以及所述执行时间,计算所述目标网络节点分别在所述各计算处理单元的执行期望;
执行期望e(device)=epsilon*f/t,其中epsilon为修正系数,是一个可根据实验情况修改的常数。
根据上式,可得到目标网络节点在cpu、gpu、dsp的执行期望分别为:e1(device)=epsilon*f1/t1,e2(device)=epsilon*f2/t2,e3(device)=epsilon*f3/t3。
s204,确定所述各计算处理单元的执行期望中的最小执行期望,将所述最小执行期望指示的计算处理单元确定为第二计算处理单元,所述第二计算处理单元包括第二链表;
具体的,找出e1、e2、e3中的最小值,若e1最小,则确定device对应cpu,将cpu作为第二计算处理单元,将目标网络节点分配至cpu上。当然,若第一计算处理单元也为cpu,表明该目标网络节点仍然需要在第一计算处理单元上运行。
可选的,若第二计算处理单元不支持该目标网络节点,则需要用其他等效网络节点替代该目标网络节点。
s205,当所述第一计算处理单元与所述第二计算处理单元不同时,控制所述第一链表中所述目标网络节点的上一个网络节点指向所述目标网络节点的下一个网络节点,并释放目标网络节点;
沿着链表指向,目标网络节点指向的网络节点为下一个网络节点,指向目标网络节点的网络节点为上一个网络节点。如图3所示,q为目标网络节点,s为下一个网络节点,p为上一个网络节点。
设置p->next=q->next;freeq,可以使p指向s,从而将q释放。
s206,控制所述第二链表中所述目标网络节点指向所述目标网络节点的下一个网络节点,并控制所述目标网络节点的上一个网络节点指向所述目标网络节点;
如图5所示,若需要将q插入到第二链表上节点o和节点r之间时,设置q->next=r->next;o->next=q。
s207,在所述第二计算处理单元执行所述目标网络节点;
将q插入到第二链表上后,可执行q,从而生成相应的运行结果。
可选的,在执行目标网络节点前,可根据第二计算处理单元的特点,向所述第二链表添加和/或删除辅助节点,并组合生成新的网络节点后再运行。
例如,该神经网络模型包括30个网络节点,这些网络节点按照先后顺序编号分别为1~30,若1~10分配在cpu上,11~20分配在gpu上,21~30分配在dsp上,可以在1号节点分配完成后,若需要根据cpu的特点为1号节点添加辅助节点,并组合成新的网络节点运行,然后分配2号节点。
s208,获取所述目标网络节点的下一个网络节点,将所述下一个网络节点确定为目标网络节点,并执行所述获取各计算处理单元的当前负载率,以及所述目标网络节点分别在所述各计算处理单元上的执行时间的步骤;
具体可参见s103,此处不再赘述。
s209,当确定不存在下一个网络节点时,向所述第一链表添加和/或删除辅助节点,和/或向所述第二链表添加和/或删除辅助节点,生成推理计算结果。
当确定不存在下一个网络节点时,表明第一链表中所存储的所有网络节点均分配完成,则需要根据计算处理单元的特点,对第一链表以及第二链表添加或删除辅助节点或将某几个网络节点进行合并,从而组成新的网络节点,以运行该神经网络模型,在添加或删除辅助节点完成后,可采用第一计算处理单元以及第二计算处理单元运行各网络节点,并得到推理计算结果。
例如,该神经网络模型包括30个网络节点,这些网络节点按照先后顺序编号分别为1~30,若1~10分配在cpu上,11~20分配在gpu上,21~30分配在dsp上,1~10组成第一链表,11~20组成第二链表,21~30组成第三链表,在所有网络节点分配完成后分别在这三个链表中添加或删除辅助节点,或者合并几个节点,然后分别执行这三个链表上的各网络节点,从而生成最终的推理计算结果。
在本申请实施例中,触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元且所述目标网络节点运行在所述第二计算处理单元,当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元,并按照相同的方式处理其他网络节点,当所有网络节点处理完成时,生成推理计算结果。通过链表形式表示各网络节点,即把神经网络模型中每个网络节点用链表的方式串联起来,能够支持动态设备切换,进行相应的网络结构存储方式优化,且每进行一次网络结构调整在频繁进行网络节点的插入和删除时,即使网络节点数量较多,只需要修改该网络节点的上一网络节点以及下一网络节点的连接关系,而不需要频繁移位操作,节省了网络结构调整时间,从而可以提高采用神经网络模型推理计算的效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图8,其示出了本申请一个示例性实施例提供的网络节点处理装置的结构示意图。该网络节点处理装置可以通过软件、硬件或者两者的结合实现成为用户终端的全部或一部分。该装置1包括节点确定模块10、节点分配模块20、节点循环模块30和结果生成模块40。
节点确定模块10,用于触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元,所述目标网络节点运行在所述第二计算处理单元;
节点分配模块20,用于当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元;
节点循环模块30,用于获取所述目标网络节点的下一个网络节点,将所述下一个网络节点确定为目标网络节点,并执行所述确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元的步骤;
结果生成模块40,用于当确定不存在下一个网络节点时,生成推理计算结果。
可选的,所述节点确定模块10,具体用于:
获取各计算处理单元的当前负载率,以及所述目标网络节点分别在所述各计算处理单元上的执行时间;
基于所述当前负载率以及所述执行时间,在所述各计算处理单元中确定所述目标网络节点对应的第二计算处理单元。
可选的,所述节点确定模块10,具体用于:
基于所述当前负载率以及所述执行时间,计算所述目标节点分别在所述各计算处理单元的执行期望;
确定所述各计算处理单元的执行期望中的最小执行期望,将所述最小执行期望指示的计算处理单元确定为第二计算处理单元。
可选的,所述节点分配模块20,具体用于:
控制所述第一链表中所述目标网络节点的上一个网络节点指向所述目标网络节点的下一个网络节点,并释放目标网络节点。
可选的,所述节点分配模块20,具体用于:
将所述目标网络节点添加至所述第二计算处理单元的第二链表中,并修改所述第二链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系。
可选的,所述节点分配模块20,具体用于:
控制所述第二链表中所述目标网络节点指向所述目标网络节点的下一个网络节点,并控制所述目标网络节点的上一个网络节点指向所述目标网络节点。
可选的,如图9所示,所述装置还包括辅助节点增减模块50,用于:
向所述第一链表添加和/或删除辅助节点;和/或,
向所述第二链表添加和/或删除辅助节点
可选的,如图9所示,所述装置还包括节点执行模块60,用于:
在所述第二计算处理单元执行所述目标网络节点。
需要说明的是,上述实施例提供的网络节点处理装置在网络节点处理方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的网络节点处理装置与网络节点处理方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请实施例中,触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元且所述目标网络节点运行在所述第二计算处理单元,当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元,并按照相同的方式处理其他网络节点,当所有网络节点处理完成时,生成推理计算结果。通过链表形式表示各网络节点,即把神经网络模型中每个网络节点用链表的方式串联起来,能够支持动态设备切换,进行相应的网络结构存储方式优化,且每进行一次网络结构调整在频繁进行网络节点的插入和删除时,即使网络节点数量较多,只需要修改该网络节点的上一网络节点以及下一网络节点的连接关系,而不需要频繁移位操作,节省了网络结构调整时间,从而可以提高采用神经网络模型推理计算的效率。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图7所示实施例的方法步骤,具体执行过程可以参见图1-图7所示实施例的具体说明,在此不进行赘述。
请参见图10,为本申请实施例提供了一种电子设备的结构示意图。如图10所示,所述电子设备1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(display)、摄像头(camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如wi-fi接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个电子设备1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行电子设备1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(digitalsignalprocessing,dsp)、现场可编程门阵列(field-programmablegatearray,fpga)、可编程逻辑阵列(programmablelogicarray,pla)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(centralprocessingunit,cpu)、图像处理器(graphicsprocessingunit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(randomaccessmemory,ram),也可以包括只读存储器(read-onlymemory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitorycomputer-readablestoragemedium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及网络节点处理应用程序。
在图10所示的电子设备1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的网络节点处理应用程序,并具体执行以下操作:
触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元,所述目标网络节点运行在所述第二计算处理单元;
当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元;
获取所述目标网络节点的下一个网络节点,将所述下一个网络节点确定为目标网络节点,并执行所述确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元的步骤;
当确定不存在下一个网络节点时,生成推理计算结果。
在一个实施例中,所述处理器1001在执行确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元时,具体执行以下操作:
获取各计算处理单元的当前负载率,以及所述目标网络节点分别在所述各计算处理单元上的执行时间;
基于所述当前负载率以及所述执行时间,在所述各计算处理单元中确定所述目标网络节点对应的第二计算处理单元。
在一个实施例中,所述处理器1001在执行基于所述当前负载率以及所述执行时间,在所述各计算处理单元中确定所述目标网络节点对应的第二计算处理单元时,具体执行以下操作:
基于所述当前负载率以及所述执行时间,计算所述目标节点分别在所述各计算处理单元的执行期望;
确定所述各计算处理单元的执行期望中的最小执行期望,将所述最小执行期望指示的计算处理单元确定为第二计算处理单元。
在一个实施例中,所述处理器1001在执行将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系时,具体执行以下操作:
控制所述第一链表中所述目标网络节点的上一个网络节点指向所述目标网络节点的下一个网络节点,并释放目标网络节点。
在一个实施例中,所述处理器1001在执行将所述目标网络节点分配至所述第二计算处理单元时,具体执行以下操作:
将所述目标网络节点添加至所述第二计算处理单元的第二链表中,并修改所述第二链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系。
在一个实施例中,所述处理器1001在执行将所述目标网络节点添加至所述第二计算处理单元的第二链表中,并修改所述第二链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系时,具体执行以下操作:
控制所述第二链表中所述目标网络节点指向所述目标网络节点的下一个网络节点,并控制所述目标网络节点的上一个网络节点指向所述目标网络节点。
在一个实施例中,所述处理器1001在执行生成推理计算结果之前,还执行以下操作:
向所述第一链表添加和/或删除辅助节点;和/或,
向所述第二链表添加和/或删除辅助节点。
在一个实施例中,所述处理器1001在执行将所述目标网络节点分配至所述第二计算处理单元之后,还执行以下操作:
在所述第二计算处理单元执行所述目标网络节点。
在本申请实施例中,触发采用包括至少一个网络节点的神经网络模型进行推理计算,确定所述至少一个网络节点中目标网络节点对应的第二计算处理单元,所述至少一个网络节点采用第一链表的形式预存在第一计算处理单元且所述目标网络节点运行在所述第二计算处理单元,当所述第一计算处理单元与所述第二计算处理单元不同时,将所述目标网络节点从所述第一链表中删除并修改所述第一链表中所述目标网络节点的上一个网络节点以及下一个网络节点的连接关系,将所述目标网络节点分配至所述第二计算处理单元,并按照相同的方式处理其他网络节点,当所有网络节点处理完成时,生成推理计算结果。通过链表形式表示各网络节点,即把神经网络模型中每个网络节点用链表的方式串联起来,能够支持动态设备切换,进行相应的网络结构存储方式优化,且每进行一次网络结构调整在频繁进行网络节点的插入和删除时,即使网络节点数量较多,只需要修改该网络节点的上一网络节点以及下一网络节点的连接关系,而不需要频繁移位操作,节省了网络结构调整时间,从而可以提高采用神经网络模型推理计算的效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。