一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

有向无环图评估方法、装置、设备及存储介质与流程

2022-11-14 13:53:56 来源:中国专利 TAG:


1.本公开涉及人工智能技术领域,具体涉及有向无环图生成、并发度评估等技术领域,可应用于有向无环图设计、对有向无环图进行风险判断和质量评估等场景下,尤其涉及一种有向无环图评估方法、装置、设备及存储介质。


背景技术:

2.有向无环图(directed acyclic graph,dag)是一种图论数据结构,一般指的是一个无回路的有向图。dag结构具备天然的并发能力,常被用于具备可并行计算的服务中作为业务流程组织方案,如supermario框架、图执行引擎等。
3.在实际业务策略接入中,业务流程对应的dag的设计通常依赖工程师经验,dag的并发度设置不合理(如并发度过大或过小)可能导致业务流程的整体服务功能异常、资源浪费、稳定性差等问题。
4.目前,dag的并发度通常由人工根据历史经验值进行设定、并反复压测调试后得到;或者,根据dag中各节点在运行过程中的动态性能数据进行计算得到。


技术实现要素:

5.本公开提供了一种有向无环图评估方法、装置、设备及存储介质,能够在有向无环图应用之前对有向无环图进行并发度评估。
6.根据本公开的第一方面,提供了一种有向无环图评估方法,所述方法包括:
7.获取有向无环图,有向无环图包括至少两个节点;根据有向无环图中节点之间的邻接关系,确定有向无环图中每个节点对应的目标无关前驱点集;节点对应的目标无关前驱点集为在有向无环图中与节点之间互相不存在前驱关系、且在目标无关前驱点集中与其他节点之间互相不存在前驱关系的节点的集合;根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度;根据初始并发度,对有向无环图进行评估。
8.根据本公开的第二方面,提供了一种有向无环图评估装置,所述装置包括:
9.获取单元,用于获取有向无环图,有向无环图包括至少两个节点;并发度计算单元,用于根据有向无环图中节点之间的邻接关系,确定有向无环图中每个节点对应的目标无关前驱点集;节点对应的目标无关前驱点集为在有向无环图中与节点之间互相不存在前驱关系、且在目标无关前驱点集中与其他节点之间互相不存在前驱关系的节点的集合;并发度计算单元,还用于根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度;评估单元,用于根据初始并发度,对有向无环图进行评估。
10.根据本公开的第三方面,提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如
第一方面所述的方法。
11.根据本公开的第四方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行根据第一方面所述的方法。
12.根据本公开的第五方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现根据第一方面所述的方法。
13.本公开通过获取有向无环图,根据有向无环图中节点之间的邻接关系,确定有向无环图中每个节点对应的目标无关前驱点集;根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度,然后根据初始并发度,对有向无环图进行评估,实现了在有向无环图应用之前对有向无环图进行并发度评估,可以指导设计人员为有向无环图设定更优的并发度,耗费的人力成本较低。另外,本公开在有向无环图应用之前对有向无环图进行并发度评估,实现了对有向无环图进行更早的风险评估,可以提高算法接入效率,减少由于有向无环图早期设计不合理带来的无效开发测试。
14.应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
15.附图用于更好地理解本方案,不构成对本公开的限定。其中:
16.图1为本公开实施例提供的有向无环图评估方法的流程示意图;
17.图2为本公开实施例提供的一种有向无环图的示意图;
18.图3为本公开实施例提供的图1中s102的一种实现流程示意图;
19.图4为本公开实施例提供的有向无环图评估方法的另一流程示意图;
20.图5为本公开实施例提供的有向无环图评估装置的组成示意图;
21.图6为本公开实施例提供的有向无环图评估装置的另一组成示意图;
22.图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。
具体实施方式
23.以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
24.应当理解,在本公开各实施例中,字符“/”一般表示前后关联对象是一种“或”的关系。术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
25.有向无环图(directed acyclic graph,dag)是一种图论数据结构,一般指的是一个无回路的有向图。dag结构具备天然的并发能力,常被用于具备可并行计算的服务中作为业务流程组织方案,如supermario框架、图执行引擎等。
26.在实际业务策略接入中,业务流程对应的dag的设计通常依赖工程师经验,dag的并发度设置不合理(如并发度过大或过小)可能导致业务流程的整体服务功能异常、资源浪
费、稳定性差等问题。
27.目前,dag的并发度通常由人工根据历史经验值进行设定、并反复压测调试后得到;或者,根据dag中各节点在运行过程中的动态性能数据进行计算得到。
28.其中,人工根据历史经验值进行设定、并反复压测调试后得到dag的并发度的方式,需要耗费大量人力、且难以将dag的并发度调到全局最优。dag的并发度设定过高可能导致初始化申请资源过多,业务流程的线上资源浪费、利用率低;dag的并发度设定过低又可能导致业务流程的数据计算阻塞,对于在线服务来说,将严重影响在线服务的响应耗时。
29.根据dag中各节点在运行过程中的动态性能数据,计算得到dag的并发度的方式,需要在运行过程中完成,计算得到新的dag的并发度后,还需要根据新的dag的并发度对业务流程的系统重新进行初始化,影响了业务流程的系统整体对外的服务级别协议(service-level agreement,sla),引入了额外的风险,并不适用于实际生产环境。
30.本公开提供了一种有向无环图评估方法,能够在有向无环图应用之前对有向无环图进行并发度评估。其中,有向无环图应用之前是指有向无环图应用到实际生产环境之前或者说有向无环图dag中各节点在运行之前。
31.该方法可以指导设计人员为有向无环图设定更优的并发度,耗费的人力成本较低。另外,该方法在有向无环图应用之前对有向无环图进行并发度评估,实现了对有向无环图进行更早的风险评估,可以提高算法接入效率,减少由于有向无环图早期设计不合理带来的无效开发测试。
32.该方法的执行主体可以是计算机或服务器,或者还可以是其他具有数据处理能力的设备。在此对该方法的执行主体不作限制。
33.一些实施例中,服务器可以是单独的一个服务器,或者,也可以是由多个服务器构成的服务器集群。部分实施方式中,服务器集群还可以是分布式集群。本公开对服务器的具体实现方式也不作限制。
34.下面对该有向无环图评估方法进行示例性说明。
35.图1为本公开实施例提供的有向无环图评估方法的流程示意图。如图1所示,该方法可以包括:
36.s101、获取有向无环图,有向无环图包括至少两个节点。
37.其中,有向无环图是指业务流程对应的有向无环图,即为业务流程设计的有向无环图。业务流程可以是一些在线业务流程或非在线业务流程,在此对业务流程的具体类型不作限制。
38.有向无环图中包括的节点即业务流程中涉及的节点,如有向无环图可以包括业务流程中的开始(start)节点、计算节点、结束(end)节点、后置(after end)节点等。
39.s102、根据有向无环图中节点之间的邻接关系,确定有向无环图中每个节点对应的目标无关前驱点集。
40.其中,节点对应的目标无关前驱点集为在有向无环图中与节点之间互相不存在前驱关系、且在目标无关前驱点集中与其他节点之间互相不存在前驱关系的节点的集合。
41.示例性地,图2为本公开实施例提供的一种有向无环图的示意图。如图2所示,在该示例中,有向无环图可以包括:a、b、c、d、e、f、以及g等节点。其中,节点a通过有向边“a
‑‑
》b”与节点b节点邻接,节点a通过有向边“a
‑‑
》c”与节点c邻接,节点a通过有向边“a
‑‑
》d”与节
点d邻接。节点b通过有向边“b
‑‑
》e”与节点e邻接;节点e通过有向边“e
‑‑
》g”与节点g邻接。节点c通过有向边“c
‑‑
》f”与节点f邻接;节点f通过有向边“f
‑‑
》g”与节点g邻接。节点d通过有向边“d
‑‑
》f”与节点f邻接。前述有向边即表示了a、b、c、d、e、f、以及g等节点之间的邻接关系。
42.以某个节点1和节点2为例,在本公开实施例中,节点1通过有向边直接指向节点2,则节点1为节点2的直接前驱节点;节点1通过有向边间接指向节点2,则节点1为节点2的间接前驱节点。当节点1为节点2的直接前驱节点或间接前驱节点时,表示节点1和节点2之间互相存在前驱关系。反之,节点1和节点2之间互相不存在前驱关系则是指:节点1不是节点2的直接前驱节点,也不是节点2的间接前驱节点,同时,节点2不是节点1的直接前驱节点,也不是节点1的间接前驱节点。
43.也即,对任意两个节点,当两个节点互相均不为对方的前驱节点(包括直接前驱或间接前驱)时,两个节点之间互相不存在前驱关系,本公开实施例中也可以将这样的两个节点互相称为彼此的无关节点。
44.以图2为例,对于a、b、c、d、e、f、以及g等节点中的每个节点,可以确定根据图2中节点之间的邻接关系,确定每个节点对应的目标无关前驱点集。
45.例如,在图2中,对于节点a而言,节点a为节点b、节点c和节点d的直接前驱节点,为节点e、节点f、节点g的间接前驱节点,与节点a之间互相不存在前驱关系的节点(即节点a的无关节点)可以包括0个节点。节点a的无关节点组成的集合可以称为节点a的无关点集(此时为空)。
46.对于节点b而言,节点a为节点b的直接前驱节点,节点b为节点e的直接前驱节点,为节点g的间接前驱节点,与节点b之间互相不存在前驱关系的节点(即节点b的无关节点)可以包括:节点c、节点d、节点f。即,节点c、节点d、节点f组成了节点b的无关点集。
47.对于节点c而言,节点a为节点c的直接前驱节点,节点c为节点f的直接前驱节点,为节点g的间接前驱节点,与节点c之间互相不存在前驱关系的节点(即节点c的无关节点)可以包括:节点b、节点d、节点e。即,节点b、节点d、节点e组成了节点c的无关点集。
48.对于节点d而言,节点a为节点d的直接前驱节点,节点d为节点f的直接前驱节点,为节点g的间接前驱节点,与节点d之间互相不存在前驱关系的节点(即节点d的无关节点)可以包括:节点b、节点c、节点e。即,节点b、节点c、节点e组成了节点d的无关点集。
49.对于节点e而言,节点a为节点e的间接前驱节点,节点b为节点e的直接前驱节点,节点e为节点g的直接前驱节点,与节点e之间互相不存在前驱关系的节点(即节点e的无关节点)可以包括:节点c、节点d、节点f。即,节点c、节点d、节点f组成了节点e的无关点集。
50.对于节点f而言,节点a为节点f的间接前驱节点,节点c和节点d为节点f的直接前驱节点,节点f为节点g的直接前驱节点,与节点f之间互相不存在前驱关系的节点(即节点f的无关节点)可以包括:节点b、节点e。即,节点b、节点e组成了节点f的无关点集。
51.对于节点g而言,节点a、节点b、节点c、节点d均为节点g的间接前驱节点,节点e和节点f均为节点g的直接前驱节点,与节点g之间互相不存在前驱关系的节点(即节点g的无关节点)可以包括0个节点。即,节点g的无关点集为空。
52.对于节点a至节点g中的每个节点的无关点集,可以将无关点集中互相存在前驱关系的节点只保留一个,即可得到节点对应的目标无关前驱点集。即,节点对应的目标无关前
驱点集为在有向无环图中与节点之间互相不存在前驱关系、且在目标无关前驱点集中与其他节点之间互相不存在前驱关系的节点的集合。
53.例如,以节点b为例,节点b的无关点集可以包括:节点c、节点d、节点f。其中,节点c为节点f的前驱节点,则可以将节点b的无关点集中删除节点f,节点c和节点f之间仅保留节点c,此时剩下的节点c和节点d组成的集合即可以是节点b对应的目标无关前驱点集。
54.s103、根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度。
55.如s102中所述,可以为有向无环图中中的每个节点,确定出每个节点对应的目标无关前驱点集。其中,不同节点对应的目标无关前驱点集中的节点数量(即包含节点的数量)可能相同,也可能不同。
56.s103中,对于有向无环图中所有节点对应的目标无关前驱点集,可以从中选择节点数量最大的至少一个目标无关前驱点集,并根据节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度。
57.例如,可以先按照节点数量将有向无环图中所有节点对应的目标无关前驱点集从高到底进行排序,然后可以从排序结果中选择排序在最前面的n个目标无关前驱点集(即节点数量最大的n个目标无关前驱点集),根据这n个目标无关前驱点集的节点数量,确定有向无环图的初始并发度。n可以大于或等于1的整数。
58.如,当n大于1时,可以取n个目标无关前驱点集的节点数量的平均值、中位数等的值,或者,取n个目标无关前驱点集的节点数量中随机选择一个值,并在取值上加1作为初始并发度。本公开在此对计算初始并发度的方式不作限制。
59.当n等于1时,即相当于取所有目标无关前驱点集中的最大节点数量的值,并在取值上加1作为初始并发度。其中,最大节点数量的目标无关前驱点集(即包含节点最多的目标无关前驱点集)可以称为最大前驱点集。
60.本公开在此对计算初始并发度的方式不作限制。
61.s104、根据初始并发度,对有向无环图进行评估。
62.本公开实施例中,根据初始并发度,对有向无环图进行评估时,可以对初始并发度的大小进行判断,当初始并发度过大时,表示有向无环图过于膨胀,可能无法满足计算安全和资源利用率的要求,当初始并发度过小时,表示有向无环图可能会导致并发不够出现算子(如计算节点)等待空转的低效问题。
63.也即,本公开实施例中,根据初始并发度的大小,即可评估有向无环图的质量,如是否膨胀。
64.本公开实施例提供的该有向无环图评估方法中,是通过确定有向无环图中每个节点对应的目标无关前驱点集,并根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度,然后基于初始并发度对有向无环图的并发度进行评估。该过程在有向无环图设计之后、应用之前即可完成。不仅无需耗费大量的人力成本,而且大大提前了对有向无环图的并发度进行评估的时间。例如,本公开实施例中,不需要完成代码编写和测试等流程,即可直接对有向无环图进行并发度评估,结构设计初期即可使用,提高了算法接入效率,减少了由于早期设计不合理带来的无效开发测试。
65.也即,本公开通过获取有向无环图,根据有向无环图中节点之间的邻接关系,确定有向无环图中每个节点对应的目标无关前驱点集;根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度,然后根据初始并发度,对有向无环图进行评估,实现了在有向无环图应用之前对有向无环图进行并发度评估,可以指导设计人员为有向无环图设定更优的并发度,耗费的人力成本较低。另外,本公开在有向无环图应用之前对有向无环图进行并发度评估,实现了对有向无环图进行更早的风险评估,可以提高算法接入效率,减少由于有向无环图早期设计不合理带来的无效开发测试。
66.图3为本公开实施例提供的图1中s102的一种实现流程示意图。如图3所示,一些实施例中,s102可以包括:
67.对所述有向无环图中的任意一个第一节点,执行s301-s303。
68.s301、根据第一节点与有向无环图中其他节点之间的邻接关系,确定与第一节点之间互相不存在前驱关系的第二节点。
69.也即,本公开实施例中,对于有向无环图中的任意一个第一节点,与第一节点之间互相不存在前驱关系的节点可以称为第二节点。第二节点是第一节点的无关节点。第二节点组成的集合即第一节点的无关点集。
70.例如,以第一节点为图2中的节点b为例,如前述实施例中所述,根据节点b与有向无环图中其他节点之间的邻接关系,可以确定与节点b之间互相不存在前驱关系的第二节点(节点b的无关节点)可以包括:节点c、节点d、节点f。
71.s302、按照互相存在前驱关系的节点只保留一个的规则,对第二节点进行筛选,得到第一节点对应的至少一个无关前驱点集。
72.同样以第一节点为图2中的节点b为例,s301中可以得到与节点b之间互相不存在前驱关系的第二节点(节点b的无关节点)可以包括:节点c、节点d、节点f。
73.s302中可以按照互相存在前驱关系的节点只保留一个的规则,对节点b的无关节点进行筛选,得到节点b对应的至少一个无关前驱点集。
74.例如,节点c、节点d、以及节点f中,节点c和节点d均为节点f的前驱节点。按照互相存在前驱关系的节点只保留一个的规则,对节点c、节点d、节点f进行筛选时,一种实现方式中,可以删除节点c和节点d,仅保留节点f;另一种实现方式中,可以删除节点f,仅保留节点c和节点d。对于节点b而言,这两种实现方式可以分别得到一个节点b对应的无关前驱点集。即,节点b对应的无关前驱点集可以包括两个,第一个为“节点f”,第二个为“节点c、节点d”。
75.s303、从第一节点对应的至少一个无关前驱点集中确定节点数量最大的目标无关前驱点集。
76.s302中在得到第一节点对应的至少一个无关前驱点集后,可以从第一节点对应的至少一个无关前驱点集中确定节点数量最大的目标无关前驱点集。
77.例如,同样以第一节点为图2中的节点b为例,s302中可以得到节点b对应的无关前驱点集可以包括两个,第一个为“节点f”,第二个为“节点c、节点d”。其中,节点b对应的第一个无关前驱点集的节点数量为1,第二个无关前驱点集的节点数量为2。s303中,可以将节点数量为2(即节点数量最大)的第二个无关前驱点集作为节点b对应的目标无关前驱点集。
78.本公开实施例中,对有向无环图中的每个节点,从每个节点对应的至少一个无关
前驱点集中确定节点数量最大的无关前驱点集,作为该节点对应的目标无关前驱点集,可以使得确定有向无环图的初始并发度时,可以最大化初始并发度,能够指导设计人员为有向无环图设定全局较优的并发度。
79.还有一些实施例中,本公开也可以从第一节点对应的至少一个无关前驱点集中确定节点数量排序在第二、第三等的某个无关前驱点集作为目标无关前驱点集,又或者还可以随机选择一个无关前驱点击作为目标无关前驱点集,在此不作限制。
80.一些实施例中,上述s104可以包括:当初始并发度大于预设的并发度阈值时,确定有向无环图的并发度评估结果为膨胀。
81.其中,并发度阈值可以由人工考虑到资源利用率和生产环境实际情况,针对视频、图像等cpu/gpu资源需求较大的算法,按照经验进行设定。当初始并发度大于该并发度阈值时,该方法可以直接输出对有向无环图的并发度的评估结果为膨胀。有向无环图的并发度的评估结果为膨胀表示有向无环图的图结构过于膨胀,需要进行服务拆分,在主服务中进行远程调用。
82.本实施例中,通过比较初始并发度和预设的并发度阈值,可以更直观地给出有向无环图的并发度评估结果。
83.一些实施例中,该有向无环图评估方法,还可以包括:根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中的冗余节点。
84.示例性地,如前述实施例中所述,有向无环图中包括的节点即业务流程中涉及的节点,有向无环图可以包括业务流程中的开始(start)节点、计算节点、结束(end)节点、后置(after end)节点等。其中,开始(start)节点、结束(end)节点、以及后置(after end)节点为三种特殊类型节点。有向无环图以开始(start)节点为起始,一般为请求解析或参数校验。通过各个算子的计算,如视频下载、切帧、特征计算等将可以计算结果传递到结束(end)节点打包返回。后置(after end)节点可以对下载到本地的图片、视频进行后置处理(即环境清理工作),然后标记开始(start)节点、结束(end)节点、以及后置(after end)节点。
85.本实施例中,冗余节点是指没有数据流入或流出的节点,对功能计算无实际贡献。根据有向无环图中每个节点的输入数据和输出数据,可以确定有向无环图中是否存在某个计算节点的所有输出数据均不与有向无环图中的任意算子(即节点)构成连接,若存在这样的计算节点,则该计算节点为冗余节点,冗余节点浪费了计算资源。
86.本实施例中,通过分析有向无环图中每个节点的输入数据和输出数据,可以评估有向无环图中的节点是否为冗余节点,从而指导设计人员对有向无环图进行修改,以减少冗余节点浪费的计算资源。
87.一些实施例中,该有向无环图评估方法,还可以包括:根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中的冗余产出数据。
88.示例性地,对于有向无环图中的任意一个节点,当该节点有多个产出数据时,如果某个数据没有输入到其他算子(其他节点)中,则可以认为该产出数据为冗余产出,浪费了一定的计算、存储资源。通过对有向无环图中每个节点的输入数据和输出数据进行分析,可以评估有向无环图中是否存在冗余产出数据。
89.本实施例中,通过评估有向无环图中是否存在冗余产出数据,可以指导设计人员对有向无环图进行修改,以减少计算、存储资源的浪费。
90.一些实施例中,该有向无环图评估方法,还可以包括:根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中是否存在有环图。
91.一般而言,有向无环图的结构(框架)中不应该出现环结构。环结构会导致有向无环图中的节点无法执行或执行异常。本实施例中,可以根据有向无环图中每个节点的输入数据和输出数据,分析是否存在输出数据是自身的输入数据的有环图。当出现有环图时,表示有向无环图的实现逻辑存在错误。
92.本实施例中,通过评估有向无环图中是否存在有环图,可以指导设计人员对有向无环图进行修改,减少有向无环图中的实现逻辑错误。
93.一些实施例中,该有向无环图评估方法,还可以包括:根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中是否存在后置处理。
94.如前述实施例中所述,后置(after end)节点可以对下载到本地的图片、视频进行后置处理(即环境清理工作)。本实施例中,可以根据有向无环图中每个节点的输入数据和输出数据,分析评估有向无环图中是否存在后置处理。
95.本实施例中,通过评估有向无环图中是否存在后置处理,可以指导设计人员为有向无环图设置有效的后置处理,保证有向无环图在应用过程中存在正常的环境清理。
96.还有一些实施例中,该有向无环图评估方法中,还可以根据有向无环图中每个节点的输入数据和输出数据,分析一些常见的“download”等写操作类型的算子(节点)是否有输入到后置(after end)节点的连接;当写操作类型的节点有输入到后置(after end)节点的连接时,表示有向无环图对应的生产环境存在磁盘被打满的风险。
97.应当理解,前述实施例所述的对有向无环图的评估均为在有向无环图应用之前所进行的评估,均实现了在有向无环图应用之前对有向无环图进行进行更早的风险评估,可以指导设计人员设计更优的有向无环图,耗费的人力成本较低,提高算法接入效率,减少由于有向无环图早期设计不合理带来的无效开发测试。
98.图4为本公开实施例提供的有向无环图评估方法的另一流程示意图。
99.如图4所示,一些实施例中,该有向无环图评估方法,可以包括:
100.s401、获取有向无环图中每个节点在运行时的耗时数据。
101.其中,节点在运行时的耗时数据是指节点运行完成任务所需的耗时时长。
102.s402、根据有向无环图中每条执行路径包含的所有节点的耗时数据,确定每条执行路径的通路耗时。
103.根据有向无环图中每条执行路径包含的所有节点的耗时数据,确定每条执行路径的通路耗时,可以包括:对每条执行路径,将该条执行路径中所有节点的耗时数据进行求和,得到该条执行路径的通路耗时。
104.示例性地,以上述图2为例,图2所示的有向无环图中可以包括以下执行路径:“a-》b-》e-》g”、“a-》c-》f-》g”、“a-》d-》f-》g”等。
105.对于执行路径“a-》b-》e-》g”,可以将节点a、节点b、节点e、以及节点g的耗时数据进行求和,求和结果即执行路径“a-》b-》e-》g”的通路耗时。
106.对于执行路径“a-》c-》f-》g”,可以将节点a、节点c、节点f、以及节点g的耗时数据进行求和,求和结果即执行路径“a-》c-》f-》g”的通路耗时。
107.对于执行路径“a-》d-》f-》g”,可以将节点a、节点d、节点f、以及节点g的耗时数据
进行求和,求和结果即执行路径“a-》d-》f-》g”的通路耗时。
108.s403、根据每条执行路径的通路耗时,确定有向无环图的通路耗时方差。
109.也即,s403中可以计算有向无环图中的全部执行路径的通路耗时之间的方差,得到有向无环图的通路耗时方差。
110.例如,同样以上述图2为例,图2所示的有向无环图中可以包括以下执行路径:“a-》b-》e-》g”、“a-》c-》f-》g”、“a-》d-》f-》g”等。s403中可以计算执行路径“a-》b-》e-》g”的通路耗时、执行路径“a-》c-》f-》g”的通路耗时、以及执行路径“a-》d-》f-》g”的通路耗时之间的方差,计算得到的方差即图2所示的有向无环图的通路耗时方差。
111.s404、根据通路耗时方差,评估有向无环图是否需要优化。
112.本公开实施例中,根据通路耗时方差,对有向无环图是否需要优化及逆行评估时,可以对通路耗时方差的大小进行判断,当通路耗时方差过大时,表示有向无环图中存在部分通路的计算开销较大,且阻塞整体服务,可能导致其他节点存在空转等待场景,需要对有向无环图进行优化。
113.可以理解的,在有向无环图执行框架的在线服务中,服务的响应耗时由最长耗时的通路(即执行路径)决定。本公开实施例中,可以输入各个节点的耗时数据,利用宽度优先搜索(breadth-first search,bfs)算法遍历获取有向无环图的全部执行路径,在每条通路上累加该通路上各个节点耗时,并计算得到有向无环图的通路耗时方差。然后,根据有向无环图的通路耗时方差评估有向无环图是否需要优化。
114.可选地,当通路耗时方差过大时,可以建议进行单节点耗时优化或通路结构拆解和独立部署。
115.本公开实施例提供的该有向无环图评估方法中,通过获取有向无环图中每个节点在运行时的耗时数据;根据有向无环图中每条执行路径包含的所有节点的耗时数据,确定每条执行路径的通路耗时;根据每条执行路径的通路耗时,确定有向无环图的通路耗时方差;根据通路耗时方差,评估有向无环图是否需要优化,实现了在运行态下对有向无环图进行进一步地评估,可以实现对有向无环图进行更全面的评估,提高了对有向无环图的评估结果的准确性,实现了对有向无环图应用更全面的质量保障。
116.一些实施例中,s404可以包括:当通路耗时方差大于预设的方差阈值时,确定有向无环图的通路评估结果为需要优化。
117.其中,方差阈值可以由人工考虑到资源利用率和生产环境实际情况,按照经验进行设定。当通路耗时方差大于该方差阈值时,该方法可以直接输出对有向无环图的通路评估结果为需要优化或者通路耗时方差过大。
118.本实施例中,通过比较通路耗时方差和预设的并方差阈值,可以更直观地给出有向无环图的通路评估结果。
119.一些实施例中,上述s101可以包括:获取有向无环图的静态图描述。
120.其中,有向无环图的静态图描述主要是对有向无环图中节点和边的描述。以supermario框架为例,该框架主要解决内容理解策略工程化过程中常出现的开发、部署问题,将业务流程实现为dag结构,通过全局组装(assemble)配置描述。本公开实施例可以利用assemble中每个算子输入(input)和(output)标签,将节点-数据-节点连接起来,形成基本的图结构。
121.示例性,静态图描述中每个节点的描述配置可以如下表1所示,其中input和output标签可配置多个:
122.表1
[0123][0124]
表1中,“[.@op]name:node_name”表示节点的名称为node_name;“[..@input]type:contentvalue:input_arg”表示节点的输入标签,该输入标签中,输入数据的类型为content,值为input_arg;“[..@output]type:contentvalue:output_arg”表示节点的输出标签,该输出标签中,输出数据的类型为content,值为output_arg。
[0125]
本公开实施例中,可以根据有向无环图的静态图描述,确定有向无环图中节点之间的邻接关系,每个节点的输入数据和输出数据等。示例性地,有向无环图中节点之间的邻接关系可以通过一个邻接表呈现,在此不作限制。
[0126]
本实施例中,静态图描述可以为该有向无环图评估方法提供更容易理解的有向无环图的数据结构,该方法的运行速度可以更快,提高了对有向无环图进行评估的效率。
[0127]
示例性实施例中,本公开实施例还提供一种有向无环图评估装置,可以用于实现如前述实施例所述的有向无环图评估方法。图5为本公开实施例提供的有向无环图评估装置的组成示意图。如图5所示,该装置可以包括:获取单元501、并发度计算单元502、以及评估单元503。
[0128]
获取单元501,用于获取有向无环图,有向无环图包括至少两个节点。
[0129]
并发度计算单元502,用于根据有向无环图中节点之间的邻接关系,确定有向无环图中每个节点对应的目标无关前驱点集;节点对应的目标无关前驱点集为在有向无环图中与节点之间互相不存在前驱关系、且在目标无关前驱点集中与其他节点之间互相不存在前驱关系的节点的集合。
[0130]
并发度计算单元502,还用于根据有向无环图中所有节点对应的目标无关前驱点集中,节点数量最大的至少一个目标无关前驱点集的节点数量,确定有向无环图的初始并发度。
[0131]
评估单元503,用于根据初始并发度,对有向无环图进行评估。
[0132]
可选地,并发度计算单元502,具体用于:对有向无环图中的任意一个第一节点:根
据第一节点与有向无环图中其他节点之间的邻接关系,确定与第一节点之间互相不存在前驱关系的第二节点;按照互相存在前驱关系的节点只保留一个的规则,对第二节点进行筛选,得到第一节点对应的至少一个无关前驱点集;从第一节点对应的至少一个无关前驱点集中确定节点数量最大的目标无关前驱点集。
[0133]
可选地,评估单元503,具体用于当初始并发度大于预设的并发度阈值时,确定有向无环图的并发度评估结果为膨胀。
[0134]
可选地,评估单元503,还用于:根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中的冗余节点。
[0135]
可选地,评估单元503,还用于根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中的冗余产出数据。
[0136]
可选地,评估单元503,还用于根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中是否存在有环图。
[0137]
可选地,评估单元503,还用于根据有向无环图中每个节点的输入数据和输出数据,评估有向无环图中是否存在后置处理。
[0138]
图6为本公开实施例提供的有向无环图评估装置的另一组成示意图。可选地,如图6所示,该装置还可以包括:通路耗时计算单元601。
[0139]
获取单元501,还用于获取有向无环图中每个节点在运行时的耗时数据。
[0140]
通路耗时计算单元601,用于根据有向无环图中每条执行路径包含的所有节点的耗时数据,确定每条执行路径的通路耗时。
[0141]
通路耗时计算单元601,还用于根据每条执行路径的通路耗时,确定有向无环图的通路耗时方差。
[0142]
评估单元503,还用于根据通路耗时方差,评估有向无环图是否需要优化。
[0143]
可选地,评估单元503,具体用于当通路耗时方差大于预设的方差阈值时,确定有向无环图的通路评估结果为需要优化。
[0144]
可选地,获取单元501,具体用于获取有向无环图的静态图描述。
[0145]
本公开的技术方案中,所涉及的用户个人信息的获取,存储和应用等,均符合相关法律法规的规定,且不违背公序良俗。
[0146]
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
[0147]
示例性实施例中,电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如以上实施例所述的方法。该电子设备可以是上述计算机或服务器。
[0148]
示例性实施例中,可读存储介质可以是存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使计算机执行根据以上实施例所述的方法。
[0149]
示例性实施例中,计算机程序产品包括计算机程序,所述计算机程序在被处理器执行时实现根据以上实施例所述的方法。
[0150]
图7示出了可以用来实施本公开的实施例的示例电子设备700的示意性框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字
助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
[0151]
如图7所示,电子设备700包括计算单元701,其可以根据存储在只读存储器(rom)702中的计算机程序或者从存储单元708加载到随机访问存储器(ram)703中的计算机程序,来执行各种适当的动作和处理。在ram 703中,还可存储设备700操作所需的各种程序和数据。计算单元701、rom 702以及ram 703通过总线704彼此相连。输入/输出(i/o)接口705也连接至总线704。
[0152]
电子设备700中的多个部件连接至i/o接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许电子设备700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
[0153]
计算单元701可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元701的一些示例包括但不限于中央处理单元(cpu)、图形处理单元(gpu)、各种专用的人工智能(ai)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(dsp)、以及任何适当的处理器、控制器、微控制器等。计算单元701执行上文所描述的各个方法和处理,例如有向无环图评估方法。例如,在一些实施例中,有向无环图评估方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由rom 702和/或通信单元709而被载入和/或安装到电子设备700上。当计算机程序加载到ram 703并由计算单元701执行时,可以执行上文描述的有向无环图评估方法的一个或多个步骤。备选地,在其他实施例中,计算单元701可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行有向无环图评估方法。
[0154]
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(fpga)、专用集成电路(asic)、专用标准产品(assp)、芯片上系统的系统(soc)、负载可编程逻辑设备(cpld)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
[0155]
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
[0156]
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电
子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、光纤、便捷式紧凑盘只读存储器(cd-rom)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
[0157]
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
[0158]
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。
[0159]
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,也可以为分布式系统的服务器,或者是结合了区块链的服务器。
[0160]
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
[0161]
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献