本发明涉及芯片推理,特别涉及一种模型拆分方法、装置、通信设备及存储介质。
背景技术:
1、神经网络模型在硬件设备(ai芯片)上执行的过程中会涉及到内存占用,具体来说,神经网络模型中的权重以及算子的输入输出会占据一定的存储空间。为了得到好的结果,往往需要复杂的模型,复杂的模型往往意味着更大的计算量,如大语言模型(largelanguage model,llm)可能有几千亿参数甚至更多。当前模型参数量的增长速度快于ai芯片的计算量增长,出现了日益增长的数据量和模型的复杂度与落后的计算资源之间的矛盾。正因为有了这个矛盾,当模型的权重和算子输入输出所需的存储空间大于ai芯片的存储空间时,此时模型无法直接在该ai芯片上执行,需要对模型进行拆分,将一个模型拆分成多个子模型,在多张ai芯片上并行执行。
2、相关技术中,通过推理加速引擎等方式对模型进行拆分及并行推理,然而,这种方式存在大模型在显存受限的计算加速卡执行前的模型仍需手动拆分导致耗时费力问题。
技术实现思路
1、本发明实施例的目的在于提供一种模型拆分方法、装置、通信设备及存储介质,具体技术方案如下:
2、在本发明实施的第一方面,首先提供了一种模型拆分方法,所述方法包括:
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、本发明实施例提供的模型拆分方法,拆分模块,用于在检测到初始计算加速卡对应的显存无法支持初始模型运行的情况下,针对第一计算算子将所述初始模型拆分为目标剖分结果集合,其中,所述第一计算算子是基于所述初始模型中的计算节点的输入类型确定的,所述第一计算算子的输入包括所述初始模型的输入,和/或,所述第一计算算子的输出;合并模块,用于根据预设时间均衡规则和预设空间均衡规则将所述目标剖分结果集合进行合并调整,得到目标算子块集合;运行模块,用于根据预设动态规划算法确定所述目标算子块集合中的目标算子块运行对应的流水线段数,并对每个所述流水线段分配对应的目标计算加速卡,以使所述初始模型通过所述目标计算加速卡按照流水线并行方式运行在所述目标计算加速卡,其中,每个所述流水线段对应有若干所述目标算子块。本发明实施例中,通过对初始模型的拆分,进一步再对其合并调整,最后根据预设动态规划算法确定每个流水线段上运行的目标算子块,并对每个流水线段分配对应的目标计算加速卡,即将模型划分为不同的子模型并为每个子模型分配一个计算加速卡,以便初始模型通过拆分为多个子模型进行流水线并行(pipeline并行)在多个计算加速卡上,即本发明实施例针对显存受限的计算加速卡,通过对初始模型的自动拆分,避免了模型手动拆分时耗时费力易出错等问题。
1.一种模型拆分方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述针对第一计算算子将所述初始模型拆分为目标剖分结果集合包括:
3.根据权利要求2所述的方法,其特征在于,所述针对第一计算算子将所述初始模型划分出至少一个初始剖分单元包括:
4.根据权利要求3所述的方法,其特征在于,所述预设算子识别规则包括:所述第一计算算子的输入包括所述初始模型的输入,和/或,第一计算算子的输出;所述第二计算算子的输入包括与所述初始模型无关的值节点。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第一计算算子和所述第二计算算子之间的关系得到至少一个初始剖分单元包括:
6.根据权利要求2所述的方法,其特征在于,所述初始剖分单元包括第一初始剖分单元和第二初始剖分单元,所述通过预先获取的针对特定计算加速卡的特殊组合和至少一个所述初始剖分单元生成目标剖分结果集合包括:
7.根据权利要求6所述的方法,其特征在于,所述目标剖分结果集合包括至少一个组合剖分单元和/或第二初始剖分单元。
8.根据权利要求7所述的方法,其特征在于,所述根据预设时间均衡规则和预设空间均衡规则将所述目标剖分结果集合进行合并调整,得到目标算子块集合包括:
9.根据权利要求8所述的方法,其特征在于,所述将所述目标剖分结果集合中的组合剖分单元和/或算子剖分单元进行合并处理,得到合并算子块集合包括:
10.根据权利要求9所述的方法,其特征在于,在所述第一合并算子块集合中根据第一预设条件搜索第二合并算子块的步骤之后,所述方法包括:
11.根据权利要求9所述的方法,其特征在于,所述第一预设条件包括:所述第一合并算子块和所述第二合并算子块相邻,以及,所述第一合并算子块集合中任意两个前后存在依赖关系数值节点在所述第一合并算子块集合内是联通的,以及,所述第二合并算子块对应的内存使用量小于目标计算加速卡的内存容量。
12.根据权利要求11所述的方法,其特征在于,所述根据合并算子块集合中的各个合并算子块通信时间调整所述合并算子块集合中的各个合并算子块之间的合并关系,得到调整算子块集合包括:
13.根据权利要求12所述的方法,其特征在于,所述将所述调整算子块集合中的各个调整算子块进行压缩合并处理,得到目标算子块集合包括:
14.根据权利要求13所述的方法,其特征在于,所述第二预设条件包括:
15.根据权利要求1所述的方法,其特征在于,所述根据预设动态规划算法确定每个所述流水线段上运行的所述目标算子块集合中的目标算子块,并对每个所述流水线段分配对应的目标计算加速卡包括:
16.根据权利要求1所述的方法,其特征在于,在所述在检测到初始计算加速卡对应的显存无法支持初始模型运行的情况下,针对第一计算算子将所述初始模型拆分为目标剖分结果集合的步骤之前,所述方法包括:
17.一种模型拆分装置,其特征在于,所述装置包括:
18.一种通信设备,其特征在于,包括:收发机、存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序;
19.一种可读存储介质,用于存储程序,其特征在于,所述程序被处理器执行时实现如权利要求1-16中任意一项所述模型拆分方法。
20.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现如权利要求1-16中任意一项所述模型拆分方法。