CN116382658A - Ai模型的编译方法、装置、计算机设备及存储介质 - Google Patents

Ai模型的编译方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116382658A
CN116382658A CN202310352707.8A CN202310352707A CN116382658A CN 116382658 A CN116382658 A CN 116382658A CN 202310352707 A CN202310352707 A CN 202310352707A CN 116382658 A CN116382658 A CN 116382658A
Authority
CN
China
Prior art keywords
operator
target
sub
graph
subgraph
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.)
Pending
Application number
CN202310352707.8A
Other languages
English (en)
Inventor
姚建国
李晗东
张亚林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Enflame Technology Co ltd
Original Assignee
Shanghai Enflame Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Enflame Technology Co ltd filed Critical Shanghai Enflame Technology Co ltd
Priority to CN202310352707.8A priority Critical patent/CN116382658A/zh
Publication of CN116382658A publication Critical patent/CN116382658A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/37Compiler construction; Parser generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开了一种AI模型的编译方法、装置、计算机设备及存储介质。包括:获取与待编译的目标AI模型对应的多个计算子图,根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名;将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图;获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示;使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。采用上述技术方案,能够将相同计算子图的实现进行复用,从而有效减少AI模型的编译时长。

Description

AI模型的编译方法、装置、计算机设备及存储介质
技术领域
本发明实施例涉及计算机软件技术,尤其涉及一种AI模型的编译方法、装置、计算机设备及存储介质。
背景技术
随着AI(Artificial Intelligence,人工智能)模型在各个领域的广泛应用,工业界对AI模型的快速部署的需求越来越高,为了实现AI模型的快速部署,可以利用AI编译器自动生成AI模型的代码。
在AI模型的编译过程中,需要对AI模型的每个计算子图进行编译,因此,计算子图的数量会在很大程度上影响AI模型的编译时间。
在实际应用AI编译器自动生成AI模型的代码的过程中,由于单个子图的编译耗时较长,且在编译多个AI模型时,所需编译的计算子图数量较多,若使用现有的AI编译框架对多个AI模型进行编译,需要对每个计算子图搜索一个较优的实现,耗时较长,进而可能会影响工程项目的开发进程。
发明内容
本发明提供了一种AI模型的编译方法、装置、计算机设备及存储介质,能够将相同计算子图的实现进行复用,从而有效减少AI模型的编译时长。
根据本发明的一方面,提供了一种AI模型的编译方法,包括:
获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名;
将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图;
在所述低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示;
使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
根据本发明的另一方面,提供了一种AI模型的编译装置,包括:
子图签名生成模块,用于获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名;
子图签名匹配模块,用于将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图;
中间表示获取模块,用于在所述低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示;
底层执行代码生成模块,用于使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
根据本发明的另一方面,提供了一种计算机设备,所述计算机设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例所述的AI模型的编译方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一实施例所述的AI模型的编译方法。
本发明实施例的技术方案,通过根据计算子图的算子特征和输入输出张量特征,生成计算子图的子图签名,并根据计算子图的子图签名与低层级中间表示库中的各标准签名的匹配结果,获取各计算子图的低层级中间表示,进而生成与目标AI模型对应的底层执行代码的方式,能够在大量的计算子图中精准筛选已生成低层级中间表示的计算子图,对于这类计算子图可直接复用历史生成的低层级中间表示,节省了这类计算子图的编译时间,从而有效减少AI模型的编译时长,提高AI模型的编译效率。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例一提供的一种AI模型的编译方法的流程图;
图2是根据本发明实施例提供的一种计算子图的结构示意图;
图3是根据本发明实施例一提供的一种AI模型的编译系统架构图;
图4是根据本发明实施例二提供的另一种AI模型的编译方法的流程图;
图5是根据本发明实施例三提供的一种AI模型的编译装置的结构示意图;
图6是实现本发明实施例的AI模型的编译方法的计算机设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种AI模型的编译方法的流程图,本实施例可适用于在对计算子图进行编译时生成各计算子图的子图签名,并在之后的AI模型编译过程中搜索预先存储的低层级中间表示库中子图签名相同的计算子图,对具有相同子图签名的计算子图的低层级中间表示进行复用的情况,该方法可以由AI模型的编译装置来执行,该AI模型的编译装置可以采用硬件和/或软件的形式实现,该AI模型的编译装置可配置于具备数据处理功能的服务器中。如图1所示,该方法包括:
S110、获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名。
一般的,AI模型的底层架构可以为神经网络模型,神经网络模型是一个由大量神经元广泛的互相连接形成的复杂网络系统,因此,AI模型可通过计算图进行描述,计算图一般为拓扑图形式,可由多个顶点和边构成。每个顶点对应一个计算算子。
可选的,用于描述AI模型的计算图可由多个计算子图构成,也即一个计算图可按一定的拆分规律拆分成多个计算子图。在AI模型的代码编译过程中,需要对每个计算子图进行编译。
其中,目标AI模型可以指当前处于编译过程中的AI模型。
其中,算子特征可以理解为计算子图中的一个或者多个算子的特征,包括但不限于各算子的算子名称,输入张量大小,以所属算子为根节点的子树深度以及算子的数学计算特征;输入输出张量特征可以理解为整个计算子图的输入张量和输出张量的特征,包括但不限于输入输出张量大小、输入输出张量的张量存储排布信息以及张量元素的类型信息。
可选的,算子的数学计算特征与算子的运算逻辑相关,例如:加、减、乘、除或者卷积等运算逻辑具备不同的数学计算特征,算子可以通过其自身的数学计算特征将输入张量转变为输出张量,在一定情况下,也可将算子的输出张量大小添加至算子特征中。在一个具体的例子中,如果一个算子为卷积算子,则该卷积算子的数学计算特征可以包括该卷积算子的计算核大小等。
算子名称可根据用户设置的特定规则生成,不同算子的算子名称不同。以某个算子为根节点的子树深度取决于该算子在计算子图中的层级位置。可以理解的是,如果计算子图A和计算子图B完全一致,则计算子图A中包括的每个算子,均可以在计算子图B中寻找到算子特征一致的算子,同时,计算子图A与计算子图B的输入输出张量特征也应一致。
图2为一个可选的计算子图的结构示意图,在图2所示的计算子图中,包括4个算子以及连接各算子的边,当以算子2为根节点时,算子2之后的层级包括算子4所在层级,当以算子3为根节点时,算子3之后的层级包括算子4所在层级,因此,以算子2为根节点的子树深度与以算子3为根节点的子树深度相同。
可选的,输入输出张量特征中的输入输出张量大小为该计算子图的输入输出张量大小,输入输出张量的存储排布信息与物理存储规则相关,例如对于一个1*3*24*24的张量,其物理存储排布可能为1*24*3*24,张量元素的类型信息可包括整型(int)或浮点型(float)等。
可选的,在生成输入输出张量特征的过程中,可以分别生成计算子图的输入张量特征以及输出张量特征,通过将输入张量特征与输出张量特征进行拼接的方式,可以得到计算子图的输入输出张量特征。
进一步的,计算子图的子图签名同时取决于各算子的算子特征以及计算子图的输入输出张量特征,签名相同的两个计算子图结构相同、数据排布相同、输入输出张量大小相同,因此,子图签名相同的两个计算子图在数学逻辑上是等价的,进而子图签名相同的两个计算子图可复用相同的低层级中间表示。
S120、将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图。
可以理解的是,在采用本发明所述的AI模型的编译方法编译AI模型之后,可以将每次编译的计算子图签名以及与各计算子图签名匹配的低层级中间表示存储在低层级中间表示库中,以供之后的AI模型编译过程中能够迅速查询与调用,相同的子图签名以及低层级中间表示仅存储一次即可。
其中,低层级中间表示库中存储有标准签名与低层级中间表示之间的映射关系。其中,该标准签名的构建方式与S110中子图签名的构建方式完全一致。
可选的,对于一个已生成子图签名的计算子图,若低层级中间表示库中存在与其子图签名相同的标准签名,则该计算子图可划分为匹配子图,类似的,若低层级中间表示库中不存在与其子图签名相同的标准签名,则该计算子图可划分为未匹配子图。
S130、在低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示。
一般的,在AI模型的编译过程中,可通过AI编译器中的CPU资源生成计算子图的底层执行代码,并交由GPU资源执行底层执行代码,但对于高层级的计算子图,其无法直接转化为执行代码,因此,需要将高层级的计算子图转换为低层级的中间表示,例如,将高层级的计算子图转换为低层级的程序,进而将程序转换为执行代码,由GPU资源执行。
其中,第一类低层级中间表示可理解为匹配子图的低层级中间表示,第一类低层级中间表示可直接在低层级中间表示库中获取得到,第一类低层级中间表示可理解为匹配子图的最优程序,从而节省了匹配子图的编译时间,第二类低层级中间表示可理解为未匹配子图的低层级中间表示,由于低层级中间表示库中未存储适配未匹配子图的低层级中间表示,因此需要对未匹配子图进行编译以获取未匹配子图的最优程序。
S140、使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
可以理解的是,由于AI模型由多个计算子图构成,因此,需要根据每个计算子图的低层级中间表示生成每个计算子图的底层执行代码,从而生成与目标AI模型对应的底层执行代码。
图3为一个可选的AI模型的编译系统架构图,通过图3所示的例子,对本发明的技术方案进行一个具体的举例说明。在将AI模型处理为多个计算子图之后,可通过子图签名模块获取各计算子图的签名,进而通过重复子图检测模块判断在低层级中间表示库中是否存在与当前AI模型的各子图签名相同的标准签名,若存在,可直接通过子图实现复用模块在低层级中间表示库中获取具有相同签名的第一类低层级中间表示,若不存在,可通过自动代码生成编译引擎生成未匹配子图的第二类低层级中间表示,并通过底层代码生成模块生成与目标AI模型对应的底层执行代码。
本发明实施例的技术方案,通过根据计算子图的算子特征和输入输出张量特征,生成计算子图的子图签名,并根据计算子图的子图签名与低层级中间表示库中的各标准签名的匹配结果,获取各计算子图的低层级中间表示,进而生成与目标AI模型对应的底层执行代码的方式,能够在大量的计算子图中精准筛选已生成低层级中间表示的计算子图,对于这类计算子图可直接复用历史生成的低层级中间表示,节省了这类计算子图的编译时间,从而有效减少AI模型的编译时长,提高AI模型的编译效率。
实施例二
图2为本发明实施例二提供的一种AI模型的编译方法的流程图,本实施例在上述实施例的基础上,具体说明了计算子图的子图签名生成方法。如图2所示,该方法包括:
S210、获取与待编译的目标AI模型对应的多个计算子图。
S220、获取当前处理的目标计算子图,并识别目标计算子图中的全部目标算子。
其中,目标算子可理解为待生成子图签名的算子。
S230、根据各目标算子的算子特征,将各目标算子排序得到目标算子序列,并根据目标算子序列,生成目标计算子图的算子特征签名。
其中,根据各目标算子的算子特征,将各目标算子排序得到目标算子序列,可以具体包括:
根据目标计算子图中各目标算子之间的连接关系,将各目标算子划分至多个顺序相连的算子层中;
根据每个算子层中的各目标算子的算子特征,对每个算子层中的各目标算子进行排序;
根据不同算子层的排序顺序,以及每个算子层中的各目标算子的排序顺序,将各目标算子排序得到目标算子序列。
在如图2所示的计算子图中,算子1、算子2和算子3、算子4分别为三个不同的算子层,对于算子1和算子4所在的算子层,由于仅有1个算子,可无需排序,对于算子2与算子3所在的算子层,还需根据算子2和算子3的算子特征,对其进行排序。进一步的,在对算子2和算子3排序之后,还需要根据算子层的排序顺序,对三个算子层进行排序,例如,若算子1所在层级为第一层,算子2和3所在层级为第二次,算子4所在层级为第三层,一种可选的算子层的排序顺序为第三层-第二层-第一层。
其中,根据每个算子层中的各目标算子的算子特征,对每个算子层中的各目标算子进行排序,可以具体包括:
获取当前处理的目标算子层,并在目标算子层中获取各当前目标算子作为当前比对算子;
按照预设的算子特征优先级顺序,依次获取各当前比对算子中的同一当前算子特征;
按照与当前算子特征匹配的排序规则,对各当前比对算子进行排序,并检测排序结果中是否存在至少两个未排序算子;
若是,则将各未排序算子作为新的当前比对算子后,返回执行按照预设的算子特征优先级顺序,依次获取各当前比对算子中的同一当前算子特征的操作,直至完成对当前算子层中全部当前目标算子的排序。
续前例,若要对算子2和算子3进行排序,可先将算子2和算子3作为当前比对算子,并选取一个用于比对的算子特征,例如算子的数学计算特征,若算子2与算子3的数学计算特征不同,可直接根据预设的算子特征优先级顺序进行排序,若算子2与算子3的数学计算特征相同,可更换算子特征继续比对。进一步的,若算子2与算子3的顺序已确定,假设该层级中还存在一个未示出的算子5,其与算子2或者算子3之间的顺序未定,则可将算子5,以及算子2或者算子3中的一个,共同作为当前比对算子,继续选取新的算子特征进行新一轮的排序,直至该层级中所有算子均完成排序。
其中,根据目标算子序列,生成目标计算子图的算子特征签名,可以具体包括:
根据各目标算子的算子特征,序列化得到各目标算子的算子签名;
按照各目标算子在目标算子序列中的排序,将各目标算子的算子签名进行拼接,得到目标计算子图的算子特征签名。
续前例,假设图2所示的计算子图中最终的目标算子序列为算子4-算子2-算子3-算子1,且算子1的算子签名为x1,算子2的算子签名为x2,算子3的算子签名为x3,算子4的算子签名为x4,则进行拼接操作后,目标计算子图的算子特征签名可能为x4x2x3x1。
S240、根据目标计算子图的输入输出张量特征,生成目标计算子图的输入输出张量签名。
其中,根据目标计算子图的输入输出张量特征,生成目标计算子图的输入输出张量签名,可以具体包括:
根据目标计算子图的输入张量特征,序列化得到目标计算子图的输入张量签名;
根据目标计算子图的输出张量特征,序列化得到目标计算子图的输出张量签名;
将输入张量签名和输出张量签名进行拼接,得到目标计算子图的输入输出张量签名。
在一个具体的例子中,假设目标算子图的输入张量签名为x,输出张量签名为y,则拼接后的输入输出张量签名可以为xy。
S250、根据算子特征签名和输入输出张量签名,生成目标计算子图的子图签名。
S260、将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图。
S270、在低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示。
为了进一步理解AI模型的编译过程,此处对未匹配子图的第二类低层级中间表示的生成方法进行具体说明。
可以理解的是,计算子图的第二类低层级中间表示需要利用CPU资源对计算子图生成多个待测试程序,并生成与上述多个待测试程序分别对应的编译代码后,利用GPU资源执行计算子图的多个待测试程序的编译代码,并相应返回对多个编译代码的运行结果数据,CPU资源可根据接收到的运行结果数据,对各个待测试程序进行性能评估,并根据评估结果,以前序多个待测试程序为新的起点状态,继续迭代得到新的待测试程序,直至迭代出该计算子图最优(或者局部最优)的待测试程序,最优(或局部最优)的待测试程序即为计算子图的第二类低层级中间表示,这个过程也可以视为一个代码编译过程。
可选的,代码编译方法可以包括:
获取与待编译的AI模型匹配的多个待编译的计算子图,也即,本案中的多个未匹配子图;
规划与各计算子图对应的最小迭代次数和编译顺序,并根据最小迭代次数和编译顺序,确定最小子图编译总次数和每个子图编译轮次下所需处理的计算子图;
获取与当前子图编译轮次匹配的当前计算子图,并采用服务器中的中央处理器CPU资源,生成与当前计算子图匹配的多个待测试程序;
根据服务器中的图形处理器GPU资源的利用率,采用CPU资源分批次生成与各待测试程序匹配的编译代码,并将各编译代码提供给GPU资源执行,以完成当前子图编译轮次下当前计算子图的代码编译过程。
具体的,在完成整个代码编译过程之后,可以确定出与每个未匹配子图分别对应的最优的或者说局部最优的待测试程序,也即第二类低层级中间表示。
进一步的,规划与各计算子图对应的最小迭代次数和编译顺序,并根据最小迭代次数和编译顺序,确定最小子图编译总次数和每个子图编译轮次下所需处理的计算子图,可以包括:
根据每个计算子图的描述参数,确定与每个计算子图分别对应的最小迭代次数,并将各所述最小迭代次数的总和,确定为最小子图编译总次数;
按照预设的轮询算法,对各计算子图进行排序处理,得到各计算子图的编译顺序;
根据与每个计算子图分别对应的最小迭代次数、所述编译顺序和最小子图编译总次数,确定每个子图编译轮次下所需处理的计算子图。
进一步的,在获取与待编译的AI模型匹配的多个待编译的计算子图之前,还可以包括:
响应于与所述AI模型匹配的代码编译启动指令,从用户指定的编译配置信息中提取配置迭代次数;
在采用CPU资源分批次生成与各待测试程序匹配的编译代码,并将各编译代码提供给GPU资源执行之后,还包括:
在确定完成最小子图编译总次数下的全部代码编译过程时,根据所述配置迭代次数和所述最小子图编译总次数,检测是否存在剩余迭代总次数;
若是,则获取每个计算子图在执行所适配的最小迭代次数的代码编译过程后的梯度下降指数;
根据各计算子图的梯度下降指数和剩余迭代总次数,规划与各计算子图对应的迭代追加次数,并继续执行与剩余迭代总次数对应的代码编译过程。
进一步的,在获取与当前子图编译轮次匹配的当前计算子图,并采用服务器中的CPU资源,生成与当前计算子图匹配的多个待测试程序之后,还可以包括:
在所述GPU资源执行当前子图编译轮次下当前计算子图的代码编译过程中,如果检测到服务器中存在空闲的CPU资源,则获取与下一图编译轮次匹配的下一计算子图;
采用所述空闲的CPU资源,继续生成与下一计算子图匹配的多个待测试程序。
进一步的,根据服务器中的GPU资源的利用率,采用CPU资源分批次生成与各待测试程序匹配的编译代码,并将各编译代码提供给GPU资源执行,可以具体包括:
在执行当前批次的编译代码生成操作之前,检测所述服务器中是否存在空闲的GPU资源;
若是,则从各待测试程序中获取最小批次数量的目标待测试程序;
若否,则根据上一批次的编译代码生成过程所获取的上一批次数量,确定当前批次数量,并获取当前批次数量的目标待测试程序;
生成与各目标待测试程序匹配的编译代码,并将各编译代码提供给GPU资源执行。
进一步的,根据上一批次的编译代码生成过程所获取的上一批次数量,确定当前批次数量,可以具体包括:
在预先构建的批次数量递增表中,沿批次数量递增趋势获取与所述上一批次数量相邻的批次数量,作为当前批次数量。
进一步的,将各编译代码提供给GPU资源执行,可以具体包括:
将各编译代码存储至预先构建的执行队列中,以供所述GPU资源从所述执行队列依次获取各编译代码执行;
检测所述服务器中是否存在空闲的GPU资源,包括:
如果检测到所述执行队列为空,则确定检测到所述服务器中存在空闲的GPU资源。
S280、使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
本发明实施例的技术方案,通过根据各目标算子的算子特征,将各目标算子排序得到目标算子序列,并根据目标算子序列,生成目标计算子图的算子特征签名,根据目标计算子图的输入输出张量特征,生成目标计算子图的输入输出张量签名,并根据算子特征签名和输入输出张量签名,生成目标计算子图的子图签名的方式,能够保证不同计算子图的签名不相同,从而提高了子图签名的匹配准确率。
实施例三
图3为本发明实施例三提供的一种AI模型的编译装置的结构示意图。如图3所示,该装置包括:子图签名生成模块310、子图签名匹配模块320、中间表示获取模块330以及底层执行代码生成模块340。
子图签名生成模块310,用于获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名。
子图签名匹配模块320,用于将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图。
中间表示获取模块330,用于在所述低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示。
底层执行代码生成模块340,用于使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
本发明实施例的技术方案,通过根据计算子图的算子特征和输入输出张量特征,生成计算子图的子图签名,并根据计算子图的子图签名与低层级中间表示库中的各标准签名的匹配结果,获取各计算子图的低层级中间表示,进而生成与目标AI模型对应的底层执行代码的方式,能够在大量的计算子图中精准筛选已生成低层级中间表示的计算子图,对于这类计算子图可直接复用历史生成的低层级中间表示,节省了这类计算子图的编译时间,从而有效减少AI模型的编译时长,提高AI模型的编译效率。
在上述各实施例的基础上,子图签名生成模块310,可以包括:
目标算子识别单元,用于获取当前处理的目标计算子图,并识别目标计算子图中的全部目标算子;
算子特征签名生成单元,用于根据各目标算子的算子特征,将各目标算子排序得到目标算子序列,并根据目标算子序列,生成目标计算子图的算子特征签名;
输入输出张量签名生成单元,用于根据目标计算子图的输入输出张量特征,生成目标计算子图的输入输出张量签名;
子图签名生成单元,用于根据算子特征签名和输入输出张量签名,生成目标计算子图的子图签名。
在上述各实施例的基础上,算子特征签名生成单元,可以包括:
目标算子划分子单元,用于根据目标计算子图中各目标算子之间的连接关系,将各目标算子划分至多个顺序相连的算子层中;
目标算子排序子单元,用于根据每个算子层中的各目标算子的算子特征,对每个算子层中的各目标算子进行排序;
目标算子序列获取子单元,用于根据不同算子层的排序顺序,以及每个算子层中的各目标算子的排序顺序,将各目标算子排序得到目标算子序列。
在上述各实施例的基础上,目标算子排序子单元,可以具体用于:
获取当前处理的目标算子层,并在目标算子层中获取各当前目标算子作为当前比对算子;
按照预设的算子特征优先级顺序,依次获取各当前比对算子中的同一当前算子特征;
按照与当前算子特征匹配的排序规则,对各当前比对算子进行排序,并检测排序结果中是否存在至少两个未排序算子;
若是,则将各未排序算子作为新的当前比对算子后,返回执行按照预设的算子特征优先级顺序,依次获取各当前比对算子中的同一当前算子特征的操作,直至完成对当前算子层中全部当前目标算子的排序。
在上述各实施例的基础上,算子特征签名生成单元,还可以具体用于:
根据各目标算子的算子特征,序列化得到各目标算子的算子签名;
按照各目标算子在目标算子序列中的排序,将各目标算子的算子签名进行拼接,得到目标计算子图的算子特征签名。
在上述各实施例的基础上,输入输出张量签名生成单元,可以具体用于:
根据目标计算子图的输入张量特征,序列化得到目标计算子图的输入张量签名;
根据目标计算子图的输出张量特征,序列化得到目标计算子图的输出张量签名;
将输入张量签名和输出张量签名进行拼接,得到目标计算子图的输入输出张量签名。
在上述各实施例的基础上,算子特征包括算子名称,输入张量大小,以所属算子为根节点的子树深度以及算子的数学计算特征;
所述输入输出张量特征包括输入输出张量大小、输入输出张量的张量存储排布信息以及张量元素的类型信息。
本发明实施例所提供的AI模型的编译装置可执行本发明任意实施例所提供的AI模型的编译方法,具备执行方法相应的功能模块和有益效果。
实施例四
图6示出了可以用来实施本发明的实施例的计算机设备10的结构示意图。计算机设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。计算机设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图6所示,计算机设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储器,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储计算机设备10操作所需的各种程序和数据。处理器11、ROM 12以及RAM 13通过总线14彼此相连。输入/输出(I/O)接口15也连接至总线14。
计算机设备10中的多个部件连接至I/O接口15,包括:输入单元16,例如键盘、鼠标等;输出单元17,例如各种类型的显示器、扬声器等;存储单元18,例如磁盘、光盘等;以及通信单元19,例如网卡、调制解调器、无线通信收发机等。通信单元19允许计算机设备10通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器11可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器11的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器11执行上文所描述的各个方法和处理,例如如本发明实施例所述的AI模型的编译方法。也即:
获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名;
将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图;
在所述低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示;
使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
在一些实施例中,AI模型的编译方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到计算机设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的AI模型的编译方法的一个或多个步骤。备选地,在其他实施例中,处理器11可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行AI模型的编译方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机设备上实施此处描述的系统和技术,该计算机设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种人工智能AI模型的编译方法,其特征在于,包括:
获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名;
将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图;
在所述低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示;
使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
2.根据权利要求1所述的方法,其特征在于,根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名,包括:
获取当前处理的目标计算子图,并识别目标计算子图中的全部目标算子;
根据各目标算子的算子特征,将各目标算子排序得到目标算子序列,并根据目标算子序列,生成目标计算子图的算子特征签名;
根据目标计算子图的输入输出张量特征,生成目标计算子图的输入输出张量签名;
根据算子特征签名和输入输出张量签名,生成目标计算子图的子图签名。
3.根据权利要求2所述的方法,其特征在于,根据各目标算子的算子特征,将各目标算子排序得到目标算子序列,包括:
根据目标计算子图中各目标算子之间的连接关系,将各目标算子划分至多个顺序相连的算子层中;
根据每个算子层中的各目标算子的算子特征,对每个算子层中的各目标算子进行排序;
根据不同算子层的排序顺序,以及每个算子层中的各目标算子的排序顺序,将各目标算子排序得到目标算子序列。
4.根据权利要求3所述的方法,其特征在于,根据每个算子层中的各目标算子的算子特征,对每个算子层中的各目标算子进行排序,包括:
获取当前处理的目标算子层,并在目标算子层中获取各当前目标算子作为当前比对算子;
按照预设的算子特征优先级顺序,依次获取各当前比对算子中的同一当前算子特征;
按照与当前算子特征匹配的排序规则,对各当前比对算子进行排序,并检测排序结果中是否存在至少两个未排序算子;
若是,则将各未排序算子作为新的当前比对算子后,返回执行按照预设的算子特征优先级顺序,依次获取各当前比对算子中的同一当前算子特征的操作,直至完成对当前算子层中全部当前目标算子的排序。
5.根据权利要求2所述的方法,其特征在于,根据目标算子序列,生成目标计算子图的算子特征签名,包括:
根据各目标算子的算子特征,序列化得到各目标算子的算子签名;
按照各目标算子在目标算子序列中的排序,将各目标算子的算子签名进行拼接,得到目标计算子图的算子特征签名。
6.根据权利要求2所述的方法,其特征在于,根据目标计算子图的输入输出张量特征,生成目标计算子图的输入输出张量签名,包括:
根据目标计算子图的输入张量特征,序列化得到目标计算子图的输入张量签名;
根据目标计算子图的输出张量特征,序列化得到目标计算子图的输出张量签名;
将输入张量签名和输出张量签名进行拼接,得到目标计算子图的输入输出张量签名。
7.根据权利要求1-6任一项所述的方法,其特征在于,算子特征包括算子名称,输入张量大小,以所属算子为根节点的子树深度以及算子的数学计算特征;
所述输入输出张量特征包括输入输出张量大小、输入输出张量的张量存储排布信息以及张量元素的类型信息。
8.一种人工智能AI模型的编译装置,其特征在于,包括:
子图签名生成模块,用于获取与待编译的目标AI模型对应的多个计算子图,并根据各计算子图的算子特征和输入输出张量特征,生成各计算子图的子图签名;
子图签名匹配模块,用于将各计算子图的子图签名与预先存储的低层级中间表示库中的各标准签名进行匹配,并根据匹配结果,将全部计算子图划分为匹配子图和未匹配子图;
中间表示获取模块,用于在所述低层级中间表示库中,获取各匹配子图所匹配的标准子图的第一类低层级中间表示,并实时生成各未匹配子图的第二类低层级中间表示;
底层执行代码生成模块,用于使用第一类低层级中间表示和第二类低层级中间表示,生成与目标AI模型对应的底层执行代码。
9.一种计算机设备,其特征在于,所述计算机设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-7中任一项所述的人工智能AI模型的编译方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现权利要求1-7中任一项所述的人工智能AI模型的编译方法。
CN202310352707.8A 2023-04-04 2023-04-04 Ai模型的编译方法、装置、计算机设备及存储介质 Pending CN116382658A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310352707.8A CN116382658A (zh) 2023-04-04 2023-04-04 Ai模型的编译方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310352707.8A CN116382658A (zh) 2023-04-04 2023-04-04 Ai模型的编译方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN116382658A true CN116382658A (zh) 2023-07-04

Family

ID=86974564

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310352707.8A Pending CN116382658A (zh) 2023-04-04 2023-04-04 Ai模型的编译方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116382658A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116756589A (zh) * 2023-08-16 2023-09-15 北京壁仞科技开发有限公司 匹配算子的方法、计算设备和计算机可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116756589A (zh) * 2023-08-16 2023-09-15 北京壁仞科技开发有限公司 匹配算子的方法、计算设备和计算机可读存储介质
CN116756589B (zh) * 2023-08-16 2023-11-17 北京壁仞科技开发有限公司 匹配算子的方法、计算设备和计算机可读存储介质

Similar Documents

Publication Publication Date Title
CN116126346A (zh) Ai模型的代码编译方法、装置、计算机设备及存储介质
CN113568821A (zh) 一种ai芯片计算性能的测试方法、装置、设备、及介质
CN116382658A (zh) Ai模型的编译方法、装置、计算机设备及存储介质
CN114048816A (zh) 一种图神经网络数据采样方法、装置、设备及存储介质
CN111626311A (zh) 一种异构图数据处理方法和装置
CN117032938A (zh) 一种算子的并行调度方法、装置、电子设备及存储介质
CN115665783A (zh) 一种异常指标溯源方法、装置、电子设备及存储介质
CN114239198A (zh) 一种基于并行优化的电网子图划分方法及装置
Sinaei et al. Run-time mapping algorithm for dynamic workloads using association rule mining
CN113190730A (zh) 一种区块链地址的分类方法及装置
CN117273115B (zh) 一种反向计算图的静态生成方法、装置、设备及介质
CN114816758B (zh) 资源分配方法和装置
CN115796228B (zh) 算子融合方法、装置、设备以及存储介质
CN117271098B (zh) 一种ai模型计算核调度方法、装置、设备及存储介质
CN117609870B (zh) 结构识别模型训练、模型结构识别方法、设备及介质
CN116205279A (zh) 深度学习模型的硬件调度执行方法、装置、设备及介质
CN114418063B (zh) 神经网络模型中网络层的分配方法与装置
CN117076129A (zh) 一种算子的自动融合方法及装置
CN115951936B (zh) 向量化编译程序的芯片适配方法、装置、设备及介质
CN116523051A (zh) 一种模型混精推理方法、装置、设备及存储介质
CN116150048A (zh) 一种内存优化方法、装置、设备及介质
CN116111562A (zh) 一种配电网可靠性确定方法、装置、设备及存储介质
CN117215952A (zh) 一种软件异构度的度量方法、装置、设备及存储介质
CN116757285A (zh) 一种电网知识推理方法、装置、电子设备和存储介质
CN117632748A (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
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Applicant after: Shanghai Suiyuan Technology Co.,Ltd.

Address before: Room a-522, 188 Yesheng Road, Lingang New District, China (Shanghai) pilot Free Trade Zone, Pudong New Area, Shanghai, 201306

Applicant before: SHANGHAI ENFLAME TECHNOLOGY Co.,Ltd.

Country or region before: China