模型处理方法及装置、电子设备及存储介质与流程

文档序号:33459186发布日期:2023-03-15 03:17阅读:18来源:国知局
模型处理方法及装置、电子设备及存储介质与流程

1.本公开涉及深度学习领域,尤其涉及一种模型处理方法及装置、电子设备及存储介质。


背景技术:

2.相关技术中,在人工智能(artificial intelligence,ai)加速器上部署带有控制流算子的模型时,需要手动将模型的整块计算网络切分下来,逐块进行编译转换,然后按照模型的运行流程在应用中开发相关逻辑以及调用切分的模型块,或者只把无控制流部分切分出来,其他全部在应用中实现。由于带有流程算子的模型通常很复杂,如果不结合源码,很难找到合理的划分点,而且由于控制逻辑比较复杂,编写相关应用逻辑也容易出错,造成较大的时间成本和人力成本。


技术实现要素:

3.本公开实施例提供一种模型处理方法及装置、电子设备及存储介质。
4.本公开实施例第一方面提供一种模型处理方法,包括:
5.基于待处理模型包含的算子以及算子间的连接关系,将所述待处理模型划分为多种类型的子网;
6.基于所述子网间的连接关系对所述多种类型的子网进行排序;
7.基于排序后的多个子网形成子网运行序列;所述子网运行序列用于运行所述子网以获取模型计算结果。
8.基于上述方案,所述子网至少包括:第一子网、第二子网或第三子网;
9.所述第一子网用于执行数据计算;
10.所述第二子网用于根据预设选择条件激活多个输出端中的一个输出端连接的子网;
11.所述第三子网用于选择多个输入数据中的一个进行输出。
12.基于上述方案,所述基于子网间的连接关系对所述多种类型的子网进行排序,包括:
13.所述子网为第一子网时,基于子网间的连接关系对应的顺序将所述第一子网依次添加至子网运行列表;
14.基于所述子网运行列表中的当前子网数量确定所述第一子网的后续运行序号。
15.基于上述方案,所述基于子网间的连接关系对所述多种类型的子网进行排序,包括:
16.所述子网为第二子网时,将所述第二子网添加至子网运行列表;
17.基于子网间的连接关系,对所述第二子网的输出端连接的多个子网集合进行排序;
18.基于排序后的多个子网集合以及所述子网运行列表中的子网数量,确定所述第二
子网的后续运行序号。
19.基于上述方案,所述方法还包括:
20.将所述多个子网集合输入的目标第三子网添加至所述子网运行列表;
21.基于所述子网运行列表中的子网数量,确定所述目标第三子网的后续运行序号。
22.基于上述方案,所述基于子网间的连接关系对所述多种类型的子网进行排序,包括:
23.所述子网为第三子网时,将所述第三子网添加至子网运行列表;
24.基于子网间的连接关系确定所述第三子网输出后的第一个目标第二子网;
25.将所述目标第二子网添加至所述子网运行列表;
26.基于所述子网运行列表中的子网数量,确定所述第三子网以及目标第二子网的后续运行序号。
27.基于上述方案,所述方法还包括:
28.基于子网间的连接关系,对所述第三子网与所述目标第二子网间的多个子网,以及所述目标第二子网输出端连接的多个子网集合进行排序;
29.基于排序后的所述多个子网和所述多个子网集合以及所述子网运行列表中的子网数量,确定所述子网运行列表中至少一个子网的后续运行序号。
30.基于上述方案,所述方法还包括:
31.确定所述待处理模型包含的算子类型;
32.所述算子类型为第一类型时,确定所述目标第二子网输出端连接的第一子网集合和第二子网集合;所述第一子网集合包括与目标第二子网的第一输出端连接的子网,所述第二子网集合包括与目标第二子网的第二输出端连接的子网。
33.基于上述方案,所述基于所述子网运行列表中的子网数量,确定所述第三子网以及目标第二子网的后续运行序号,包括:
34.基于所述目标第二子网的连接关系,确定所述目标第二子网的后续运行序号组中的预设序号位为所述子网运行列表中的当前子网数量;所述运行序号组包括至少两个序号位。
35.基于上述方案,所述方法还包括:
36.将所述子网运行列表中与其他子网之间无连接的独立子网的后续运行序号设置为预设值。
37.基于上述方案,所述基于待处理模型包含的算子以及算子间的连接关系,将所述待处理模型划分为多种类型的子网,包括:
38.确定所述待处理模型包含的算子类型;
39.所述算子类型为第一类型时,获取待处理模型中的全部算子的算子类型;
40.基于所述算子类型,将不同类型的算子整合形成第二子网和/或第三子网。
41.基于上述方案,所述方法还包括:
42.将所述第二子网中控制条件相同的第二子网合并;
43.基于合并后的第二子网,确定待处理模型包含的多个子网间的连接关系。
44.基于上述方案,所述方法还包括:
45.基于子网间的连接关系,将相邻的连续运行的第一子网合并。
46.本公开实施例第三方面提供一种模型处理装置,所述装置包括:
47.划分单元,用于基于待处理模型包含的算子以及算子间的连接关系,将所述待处理模型划分为多种类型的子网;
48.排序单元,用于基于子网间的连接关系对所述多种类型的子网进行排序;
49.处理单元,用于基于排序后的多个子网形成子网运行序列;所述子网运行序列用于运行所述子网以获取模型计算结果。
50.基于上述方案,所述子网至少包括:第一子网、第二子网或第三子网;
51.所述第一子网用于执行数据计算;
52.所述第二子网用于根据预设选择条件激活多个输出端中的一个输出端连接的子网;
53.所述第三子网用于选择多个输入数据中的一个进行输出。
54.基于上述方案,所述排序单元,具体用于:
55.所述子网为第一子网时,基于子网间的连接关系对应的顺序将所述第一子网依次添加至子网运行列表;
56.基于所述子网运行列表中的当前子网数量确定所述第一子网的后续运行序号。
57.基于上述方案,所述排序单元,具体用于:
58.所述子网为第二子网时,将所述第二子网添加至子网运行列表;
59.基于子网间的连接关系,对所述第二子网的输出端连接的多个子网集合进行排序;
60.基于排序后的多个子网集合以及所述子网运行列表中的子网数量,确定所述第二子网的后续运行序号。
61.基于上述方案,所述排序单元还用于:
62.将所述多个子网集合输入的目标第三子网添加至所述子网运行列表;
63.基于所述子网运行列表中的子网数量,确定所述目标第三子网的后续运行序号。
64.基于上述方案,所述排序单元,具体用于:
65.所述子网为第三子网时,将所述第三子网添加至子网运行列表;
66.基于子网间的连接关系确定所述第三子网输出后的第一个目标第二子网;
67.将所述目标第二子网添加至所述子网运行列表;
68.基于所述子网运行列表中的子网数量,确定所述第三子网以及目标第二子网的后续运行序号。
69.基于上述方案,所述排序单元还用于:
70.基于子网间的连接关系,对所述第三子网与所述目标第二子网间的多个子网,以及所述目标第二子网输出端连接的多个子网集合进行排序;
71.基于排序后的所述多个子网和所述多个子网集合以及所述子网运行列表中的子网数量,确定所述子网运行列表中至少一个子网的后续运行序号。
72.基于上述方案,所述划分单元还用于:
73.确定所述待处理模型包含的算子类型;
74.所述算子类型为第一类型时,确定所述目标第二子网输出端连接的第一子网集合和第二子网集合;所述第一子网集合包括与目标第二子网的第一输出端连接的子网,所述
第二子网集合包括与目标第二子网的第二输出端连接的子网。
75.基于上述方案,所述排序单元,具体用于:
76.基于所述目标第二子网的连接关系,确定所述目标第二子网的后续运行序号组中的预设序号位为所述子网运行列表中的当前子网数量;所述运行序号组包括至少两个序号位。
77.基于上述方案,所述排序单元还用于:
78.将所述子网运行列表中与其他子网之间无连接的独立子网的后续运行序号设置为预设值。
79.基于上述方案,所述划分单元,具体用于:
80.确定所述待处理模型包含的算子类型;
81.所述算子类型为第一类型时,获取待处理模型中的全部算子的算子类型;
82.基于所述算子类型,将不同类型的算子整合形成第二子网和/或第三子网。
83.基于上述方案,所述划分单元还用于:
84.将所述第二子网中控制条件相同的第二子网合并;
85.基于合并后的第二子网,确定待处理模型包含的多个子网间的连接关系。
86.基于上述方案,所述装置还包括:
87.合并单元,用于基于子网间的连接关系,将相邻的连续运行的第一子网合并。
88.本公开实施例第三方面提供一种电子设备,包括:
89.用于存储处理器可执行指令的存储器;
90.处理器,与所述存储器连接;
91.其中,所述处理器被配置为执行如前述任意技术方案提供的模型处理方法。
92.本公开实施例第四方面提供一种非临时性计算机可读存储介质,当所述存储介质中的指令由计算机的处理器执行时,使得计算机能够执行如前述任意技术方案提供的模型处理方法。
93.本公开的实施例提供的技术方案可以包括以下有益效果:
94.本公开实施例中提供的模型处理方法包括:基于待处理模型包含的算子以及算子间的连接关系,将所述待处理模型划分为多种类型的子网;基于子网间的连接关系对所述多种类型的子网进行排序;基于排序后的多个子网形成子网运行序列;所述子网运行序列用于运行所述子网以获取模型计算结果。如此,基于子网类型对模型进行切分,可以分离计算和控制逻辑对应的子网部分,网络切分边界清晰准确,利于更好地针对子网进行编译,从而可以提高网络切分处理的效率。在此基础上,基于连接关系进行排序形成子网运行序列,可以保留子网间的流程逻辑,从而基于运行序列运行时可以提高运行逻辑的简洁性,并保证计算结果的准确性。
附图说明
95.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
96.图1是根据一示例性实施例示出的一种模型处理方法的流程示意图;
97.图2是根据一示例性实施例示出的一种模型处理方法的流程示意图;
98.图3是根据一示例性实施例示出的一种模型处理方法的流程示意图;
99.图4是根据一示例性实施例示出的一种多子网结构的示意图;
100.图5是根据一示例性实施例示出的一种子网运行序列的示意图;
101.图6是根据一示例性实施例示出的一种模型处理方法的流程示意图;
102.图7是根据一示例性实施例示出的一种多子网结构的示意图;
103.图8是根据一示例性实施例示出的一种子网运行序列的示意图;
104.图9是根据一示例性实施例示出的一种数据处理装置的结构示意图。
具体实施方式
105.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置的例子。
106.如图1所示,本公开实施例提供一种模型处理方法,包括:
107.s110:基于待处理模型包含的算子以及算子间的连接关系,将所述待处理模型划分为多种类型的子网;
108.s120:基于子网间的连接关系对所述多种类型的子网进行排序;
109.s130:基于排序后的多个子网形成子网运行序列;所述子网运行序列用于运行所述子网以获取模型计算结果。
110.在本公开实施例中,模型可以为用于对数据进行计算等处理的模型,例如神经网络模型等,待处理模型中可以包含多个用于实现网络计算功能的算子,并通过输入和输出张量连接。其中,算子可以包括流程算子,例如switch算子、merge算子、while算子或if算子等。
111.在一个实施例中,模型包含的多个子网,每一子网中可以包含模型中的一部分算子以及张量,例如通过一定算法选择的部分算子和张量。其中,子网的类型可包括:第一子网、第二子网和第三子网。其中,第一子网可以为计算子网,第二子网可以为分支子网,第三子网可以为汇合子网。
112.在一个实施例中,所述第一子网用于执行数据计算;所述第二子网用于根据预设选择条件激活多个输出端中的一个输出端连接的子网;所述第三子网用于选择多个输入数据中的一个进行输出。其中,第二子网和第三子网属于控制逻辑子网。
113.第一子网的功能主要是执行数据计算,例如卷积、算术运算或矩阵乘法计算等。
114.第二子网的输入包含两部分:一个数据类型为整数的标量输入,用于表示分支选择条件,以及若干个张量组成的分支数据;输出有若干个分支,每个分支的输出均为分支数据,通过分支选择条件来激活对应分支。被激活的分支输出连接的后续子网会被执行,未被激活的分支输出连接的子网不执行。例如,一个分支子网可以包含一个输入端以及至少两个输出端,且用于激活所述至少两个输出端中的一个输出端,被激活的输出端所连接的子网待运行。
115.第三子网可以有若干组的输入张量,每组输入可以来源于不同的子网,但每组输入张量的个数相同的;输出为其中一组更新时间最晚的输入。例如,一个汇合子网可以包括
至少两个输入端以及一个输出端,输出端用于输出其中一个输入端输入的数据,例如更新时刻最接近当前时刻的输入端输入的数据。
116.在一个实施例中,子网间的连接关系,可以为多个子网间的网络连接顺序或者运行顺序等,例如可以指示子网间的输入输出关系。连接关系可以基于网络中多个子网的控制逻辑等确定,也可以在对多个子网进行重新排列后确定。
117.在一个实施例中,子网运行序列可以包括多个子网的身份标识(id)以及每个子网对应的后续运行序号,例如按从小到大或者从大到小等顺序排列的多个子网的后续运行序号。其中,运行序号可以指示子网在后续运行过程中的运行顺序,例如序号数值越小运行顺序越靠前等。
118.在一个实施例中,基于子网间的连接关系对所述多种类型的子网进行排序,可包括:基于子网间的连接关系对多种类型的子网设置对应的后续运行序号。其中,不同子网对应的后续运行序号不同。
119.在一个实施例中,对多种类型的子网进行排序,可以为对不同类型的子网执行不同的排序方式。例如,针对第二子网,可以确定第二子网输出端连接的多个子网集合以及子网集合汇合的目标第三子网,并基于目标第三子网以及多个子网集合进行排序。针对第三子网,可以基于第三子网输出端指向的目标第二子网,以及目标第二子网输出端连接的多个子网集合,对第三子网等进行排序。
120.在一个实施例中,基于子网间的连接关系对所述多种类型的子网进行排序,可包括:根据待处理模型包含的算子类型,基于子网间的连接关系对所述多种类型的子网进行排序。例如,对于switch或merge算子,可以基于连接关系确定第二子网的所有switch节点输出端连接的多个子网集合以及子网集合汇合的目标第三子网,并基于目标第三子网以及多个子网集合对第二子网进行排序。对于while或if算子,可以基于第三子网输出端指向的目标第二子网,以及目标第二子网输出端连接的多个子网集合,对第三子网等进行排序。
121.如此,基于子网类型对模型进行切分,可以分离计算和控制逻辑对应的子网部分,网络切分边界清晰准确,利于更好地针对子网进行编译,从而可以提高网络切分处理的效率。在此基础上,基于连接关系进行排序形成子网运行序列,可以保留子网间的流程逻辑,从而基于运行序列运行时可以提高运行逻辑的简洁性,并保证计算结果的准确性。
122.在一些实施例中,如图2所示,所述s120可包括:
123.s121:所述子网为第一子网时,基于子网间的连接关系对应的顺序将所述第一子网依次添加至子网运行列表;
124.s122:基于所述子网运行列表中的当前子网数量确定所述第一子网的后续运行序号。
125.在本公开实施例中,子网运行列表可以为用于记录子网运行顺序的列表,例如子网运行列表中记录子网的后续运行序号。连接关系对应的顺序可以为连接关系指示的子网运行顺序或者拓扑排序顺序等。
126.在一个实施例中,在步骤s121之前,所述方法还可包括:初始化子网运行列表,例如,可以将子网运行列表设置为空。
127.在一个实施例中,基于子网间的连接关系对应的顺序将所述第一子网依次添加至子网运行列表,可以为:基于子网间的连接关系对应的顺序遍历所有的第一子网,若第一子
网不在子网运行列表中,将当前第一子网添加到子网运行列表。
128.在一个实施例中,基于所述子网运行列表中的当前子网数量确定所述第一子网的后续运行序号,可以为将当前添加到子网运行列表的第一子网的后续运行序号设置为当前子网运行列表长度即当前子网运行列表中的子网数量。
129.如此,将第一子网单独进行整合排序,可以提高第一子网的统一性,便于集中对第一子网进行编译处理,保证在ai加速器上的性能发挥。
130.在一些实施例中,如图3所示,所述s120,可包括:
131.s123:所述子网为第二子网时,将所述第二子网添加至子网运行列表;
132.s124:基于子网间的连接关系,对所述第二子网的输出端连接的多个子网集合进行排序;
133.s125:基于排序后的多个子网集合以及所述子网运行列表中的子网数量,确定所述第二子网的后续运行序号。
134.在本公开实施例中,在待处理模型包含的算子类型为switch或merge时,第二子网的输出端连接的多个子网集合,可以包括:将当前第二子网中所有switch算子的第一个输出连接的子网作为第一子网集合,以及所有switch算子的第二个输出连接的子网作为第二子网集合。
135.在待处理模型包含的算子类型为while或if时,第二子网的输出端连接的多个子网集合可包括:第二子网的输出端连接的第一子网集合和第二子网集合。
136.在一个实施例中,基于子网间的连接关系,对所述第二子网的输出端连接的多个子网集合进行排序,可包括:基于子网间的连接关系对第一个子网集合和第二子网集合进行排序,例如基于子网间的连接关系指示的拓扑排序顺序对第一子网集合和第二子网集合进行排序。
137.在一个实施例中,子网运行列表中的子网数量,可以为子网运行列表中的当前子网数量。确定第二子网的后续运行序号,可以包括确定第二子网的后续运行序号组,其中,运行序号组可以包括两个或两个以上的序号位。在将第二子网添加至子网运行列表后,可以将当前子网运行列表长度记录在第二子网的后续运行序号组中的第一序号位。
138.在一个实施例中,在对第一子网集合进行排序后,可以将第一子网集合添加至子网运行列表,并将当前子网运行列表长度记录在第二子网的后续运行序号组中的第二序号位。例如,如图4和5所示,为第二子网对应的子网结构与对应的子网运行序号的对应关系,其中,id=0、1、2

表示子网id为0、1、2

等的子网。
139.在一个实施例中,将当前子网运行列表长度记录在第二子网的后续运行序号组中的一个序号位后,所述方法还可包括:确定当前子网运行列表中的最后一个子网;将第二子网集合进行排序后添加至子网运行列表;将所述最后一个子网的后续运行序号设置为添加第二子网集合后的当前子网运行列表的长度。
140.在一些实施例中,所述方法还可包括:
141.将所述多个子网集合输入的目标第三子网添加至所述子网运行列表;
142.基于所述子网运行列表中的子网数量,确定所述目标第三子网的后续运行序号。
143.在本公开实施例中,多个子网集合汇聚到多个第三子网上,多个第三子网又可以合并成一个目标第三子网。
144.在一个实施例中,子网运行列表中的子网数量,可以为子网运行列表中的当前子网数量。将目标第三子网加入到子网运行列表中,并将目标第三子网的后续运行序号设置为添加目标第三子网后的子网运行列表的当前长度,即子网运行列表中的当前子网数量。
145.在一些实施例中,如图6所示,所述s120,可包括:
146.s126:所述子网为第三子网时,将所述第三子网添加至子网运行列表;
147.s127:基于子网间的连接关系确定所述第三子网输出后的第一个目标第二子网;
148.s128:将所述目标第二子网添加至所述子网运行列表;
149.s129:基于所述子网运行列表中的子网数量,确定所述第三子网以及目标第二子网的后续运行序号。
150.在本公开实施例中,将所述第三子网添加至子网运行列表后,可以将第三子网的后续运行序号设置为当前子网运行列表的长度。
151.在一个实施例中,第三子网输出后的第一个目标第二子网,可以为沿着当前第三子网的输出端查找到后续的第一个第二子网。将目标第二子网添加到子网运行列表后,确定目标第二子网的后续运行序号可包括:将目标第二子网的后续运行序号组中的一个序号位设置为子网运行列表的当前长度。
152.例如,将目标第二子网的后续运行序号组(nextids)的长度设置为2,即可包含nextids[0]和nextids[1]两个序号位。如果目标第二子网的预设条件判定为true,令nextids[0]=当前子网运行列表长度,否则令nextids[1]=当前子网运行列表长度。
[0153]
在一些实施例中,所述方法还包括:
[0154]
基于子网间的连接关系,对所述第三子网与所述目标第二子网间的多个子网,以及所述目标第二子网输出端连接的多个子网集合进行排序;
[0155]
基于排序后的所述多个子网和所述多个子网集合以及所述子网运行列表中的子网数量,确定所述子网运行列表中至少一个子网的后续运行序号。
[0156]
在本公开实施例中,在步骤s128之前,可以确定第三子网与所述目标第二子网间的多个子网,可包括:沿目标第二子网的输入向前直到第三子网之间收集到的多个或全部子网。其中,多个子网中的第三子网可以合并为一个第三子网。s128及s129中的第三子网可以为合并后的第三子网。
[0157]
在一个实施例中,基于子网间的连接关系对多个子网排序,可包括:基于子网间的连接关系指示的拓扑顺序对所述多个子网进行排序。
[0158]
在一个实施例中,子网运行列表中的子网数量,可以为子网运行列表中的当前子网数量。步骤s128可包括:将所述目标第二子网与所述多个子网添加到子网运行列表中,相应地s129中确定目标第二子网的后续运行序号可包括:将目标第二子网的后续运行序号组中的一个序号位设置为当前子网运行列表的长度。
[0159]
例如,将目标第二子网的后续运行序号组(nextids)的长度设置为2,即可包含next ids[0]和nextids[1]两个序号位。如果目标第二子网的预设条件判定为true,令nextids[0]=当前子网运行列表长度,否则令nextids[1]=当前子网运行列表长度。
[0160]
在一些实施例中,所述方法还包括:
[0161]
确定所述待处理模型包含的算子类型;
[0162]
所述算子类型为第一类型时,确定所述目标第二子网输出端连接的第一子网集合
和第二子网集合;所述第一子网集合包括与目标第二子网的第一输出端连接的子网,所述第二子网集合包括与目标第二子网的第二输出端连接的子网。
[0163]
在本公开实施例中,第一类型包括switch或merge算子,第二类型包括while或if算子。
[0164]
在一个实施例中,将目标第二子网中所有switch算子的第一个输出(即第一输出端)连接的子网作为第一子网集合,所有switch算子第二个输出(即第二输出端)连接的子网作为第二子网集合。如图7所示,如果第一子网集合中包含第三子网例如前述合并后的第三子网,则将第一子网集合作为循环体子网集合,将第二子网集合作为输出子网集合,否则将第二子网集合作为循环体子网集合,将第一子网集合作为输出子网集合。
[0165]
在一个实施例中,可以用标志f指示循环体子网集合是否是第二子网集合,循环体子网集合是否是第二子网集合可以作为目标第二子网的预设条件。
[0166]
在一个实施例中,所述方法还可包括:基于连接关系对循环体子网集合进行排序,并将循环体子网集合添加至子网运行列表;将当前子网运行列表中最后一个子网的后续运行序号设置为前述第三子网的后续运行序号;如果目标第二子网的预设条件判定为true,令nextids[0]=当前子网运行列表长度,否则令nextids[1]=当前子网运行列表长度。如图8所示,为第三子网对应的子网结构与对应的子网运行序号的对应关系。
[0167]
在一个实施例中,所述方法还可包括:基于子网间的连接关系对输出子网集合进行排序,并将输出子网集合添加至子网运行列表。
[0168]
在一些实施例中,所述s129,可包括:
[0169]
基于所述目标第二子网的连接关系,确定所述目标第二子网的后续运行序号组中的预设序号位为所述子网运行列表中的子网数量;所述运行序号组包括至少两个序号位。
[0170]
在本公开实施例中,基于所述目标第二子网的连接关系,确定所述目标第二子网的后续运行序号组中的预设序号位为所述子网运行列表中的子网数量,可包括:基于连接关系指示的拓扑排序顺序对前述第三子网与所述目标第二子网间的多个子网进行排序;将目标第二子网与多个子网添加到子网运行列表中,将目标第二子网的后续运行序号组中的一个序号位设置为当前子网运行列表的长度。
[0171]
例如,将目标第二子网的后续运行序号组(nextids)的长度设置为2,即可包含nextids[0]和nextids[1]两个序号位。如果目标第二子网的预设条件判定为true,令nextids[0]=当前子网运行列表长度,否则令nextids[1]=当前子网运行列表长度。
[0172]
在一些实施例中,所述方法还包括:
[0173]
将所述子网运行列表中与其他子网之间无连接的独立子网的后续运行序号设置为预设值。
[0174]
其中,预设值可以为固定值,例如-1等。
[0175]
在一些实施例中,所述s110可包括:
[0176]
确定所述待处理模型包含的算子类型;
[0177]
所述算子类型为第一类型时,获取待处理模型中的全部算子的算子类型;
[0178]
基于所述算子类型,将不同类型的算子整合形成第二子网和/或第三子网。
[0179]
在本公开实施例中,基于所述算子类型,将不同类型的算子整合形成第二子网和/或第三子网,可包括:获取全部模型输入张量;基于算子间的连接关系遍历待处理模型中所
有算子,并将可执行的switch算子整合形成第二子网,和/或,将可执行的merge算子整合形成第三子网。
[0180]
例如,可包括:建立张量集合,并将所有模型输入添加至所述张量集合;按模型连接顺序遍历模型中所有算子;对于除merge算子外的可执行算子的输出添加至张量集合里;将除switch算子和merge算子外的可执行算子放到一个子网;将可执行的switch算子单独形成第二子网;收集所有可执行的merge算子后,在模型中移除已经形成子网的算子和可执行的merge算子,如果模型已经没有算子,则结束;否则,在可执行的merge算子中选择一个算子,形成第三子网,并将其输出添加至张量集合中。
[0181]
在一些实施例中,所述方法还可包括:
[0182]
将所述第二子网中控制条件相同的第二子网合并;
[0183]
基于合并后的第二子网,更新待处理模型包含的多个子网间的连接关系。
[0184]
在本公开实施例中,将所述第二子网中控制条件相同的第二子网合并,可包括:将所有第二子网移动到一个目标集合中;从目标集合中取一个第二子网,并将该第二子网的第二个输入的张量为控制条件,其中,该第二子网中只有一个switch算子;遍历当前所有第二子网,将所有受同一控制条件控制的第二子网合并成一个第二子网。
[0185]
这里,合并后的第二子网中,所有switch算子的非条件输入作为第二子网的数据输入。
[0186]
在一些实施例中,所述方法还包括:
[0187]
基于子网间的连接关系,将相邻的连续运行的第一子网合并。
[0188]
如此,可以减少子网运行时的子网间切换次数。
[0189]
如图9所示,本实施例提供一种模型处理装置,所述装置包括:
[0190]
划分单元10,用于基于待处理模型包含的算子以及算子间的连接关系,将所述待处理模型划分为多种类型的子网;
[0191]
排序单元20,用于基于子网间的连接关系对所述多种类型的子网进行排序;
[0192]
处理单元30,用于基于排序后的多个子网形成子网运行序列;所述子网运行序列用于运行所述子网以获取模型计算结果。
[0193]
基于上述方案,所述子网至少包括:第一子网、第二子网或第三子网;
[0194]
所述第一子网用于执行数据计算;
[0195]
所述第二子网用于根据预设选择条件激活多个输出端中的一个输出端连接的子网;
[0196]
所述第三子网用于选择多个输入数据中的一个进行输出。
[0197]
基于上述方案,所述排序单元20,具体用于:
[0198]
所述子网为第一子网时,基于子网间的连接关系对应的顺序将所述第一子网依次添加至子网运行列表;
[0199]
基于所述子网运行列表中的当前子网数量确定所述第一子网的后续运行序号。
[0200]
基于上述方案,所述排序单元20,具体用于:
[0201]
所述子网为第二子网时,将所述第二子网添加至子网运行列表;
[0202]
基于子网间的连接关系,对所述第二子网的输出端连接的多个子网集合进行排序;
[0203]
基于排序后的多个子网集合以及所述子网运行列表中的子网数量,确定所述第二子网的后续运行序号。
[0204]
基于上述方案,所述排序单元20还用于:
[0205]
将所述多个子网集合输入的目标第三子网添加至所述子网运行列表;
[0206]
基于所述子网运行列表中的子网数量,确定所述目标第三子网的后续运行序号。
[0207]
基于上述方案,所述排序单元20,具体用于:
[0208]
所述子网为第三子网时,将所述第三子网添加至子网运行列表;
[0209]
基于子网间的连接关系确定所述第三子网输出后的第一个目标第二子网;
[0210]
将所述目标第二子网添加至所述子网运行列表;
[0211]
基于所述子网运行列表中的子网数量,确定所述第三子网以及目标第二子网的后续运行序号。
[0212]
基于上述方案,所述排序单元20还用于:
[0213]
基于子网间的连接关系,对所述第三子网与所述目标第二子网间的多个子网,以及所述目标第二子网输出端连接的多个子网集合进行排序;
[0214]
基于排序后的所述多个子网和所述多个子网集合以及所述子网运行列表中的子网数量,确定所述子网运行列表中至少一个子网的后续运行序号。
[0215]
基于上述方案,所述划分单元10还用于:
[0216]
确定所述待处理模型包含的算子类型;
[0217]
所述算子类型为第一类型时,确定所述目标第二子网输出端连接的第一子网集合和第二子网集合;所述第一子网集合包括与目标第二子网的第一输出端连接的子网,所述第二子网集合包括与目标第二子网的第二输出端连接的子网。
[0218]
基于上述方案,所述排序单元20,具体用于:
[0219]
基于所述目标第二子网的连接关系,确定所述目标第二子网的后续运行序号组中的预设序号位为所述子网运行列表中的当前子网数量;所述运行序号组包括至少两个序号位。
[0220]
基于上述方案,所述排序单元20还用于:
[0221]
将所述子网运行列表中与其他子网之间无连接的独立子网的后续运行序号设置为预设值。
[0222]
基于上述方案,所述划分单元10,具体用于:
[0223]
确定所述待处理模型包含的算子类型;
[0224]
所述算子类型为第一类型时,获取待处理模型中的全部算子的算子类型;
[0225]
基于所述算子类型,将不同类型的算子整合形成第二子网和/或第三子网。
[0226]
基于上述方案,所述划分单元10还用于:
[0227]
将所述第二子网中控制条件相同的第二子网合并;
[0228]
基于合并后的第二子网,确定待处理模型包含的多个子网间的连接关系。
[0229]
基于上述方案,所述装置还包括:
[0230]
合并单元,用于基于子网间的连接关系,将相邻的连续运行的第一子网合并。
[0231]
本公开实施例提供一种电子设备,包括:
[0232]
用于存储处理器可执行指令的存储器;
[0233]
处理器,与存储器连接;
[0234]
其中,处理器被配置为执行前述任意技术方案提供的模型处理方法。
[0235]
处理器可包括各种类型的存储介质,该存储介质为非临时性计算机存储介质,在电子设备掉电之后能够继续记忆存储其上的信息。
[0236]
处理器可以通过总线等与存储器连接,用于读取存储器上存储的可执行程序,例如,能够执行前述一个或多个技术方案所述方法。
[0237]
本公开一实施例示出一种电子设备的结构。电子设备包括处理组件,其进一步包括一个或多个处理器,以及由存储器所代表的存储器资源,用于存储可由处理组件的执行的指令,例如应用程序。存储器中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件被配置为执行指令,以执行上述方法应用在所述电子设备的任意方法,例如,前述一个或多个技术方案所述方法。
[0238]
电子设备还可以包括一个电源组件被配置为执行电子设备的电源管理,一个有线或无线网络接口被配置为将电子设备连接到网络,和一个输入输出(i/o)接口。电子设备可以操作基于存储在存储器的操作系统,例如windows server tm,mac os xtm,unixtm,linuxtm,freebsdtm或类似。
[0239]
本公开实施例提供一种非临时性计算机可读存储介质,当存储介质中的指令由计算机的处理器执行时,使得计算机能够执行前述一个或多个技术方案所述的模型处理方法。
[0240]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
[0241]
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1