CN115965065A - 一种模型计算方法、装置及设备 - Google Patents

一种模型计算方法、装置及设备 Download PDF

Info

Publication number
CN115965065A
CN115965065A CN202211669086.8A CN202211669086A CN115965065A CN 115965065 A CN115965065 A CN 115965065A CN 202211669086 A CN202211669086 A CN 202211669086A CN 115965065 A CN115965065 A CN 115965065A
Authority
CN
China
Prior art keywords
node
fusible
nodes
operator
tested
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
CN202211669086.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.)
University of Science and Technology of China USTC
Original Assignee
University of Science and Technology of China USTC
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 University of Science and Technology of China USTC filed Critical University of Science and Technology of China USTC
Priority to CN202211669086.8A priority Critical patent/CN115965065A/zh
Publication of CN115965065A publication Critical patent/CN115965065A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本申请公开了一种模型计算方法、装置及设备,能够应用于神经网络模型的加速计算,将神经网络模型的计算图进行节点拆分,获取单一节点;识别单一节点并确认可融合节点;将多个可融合节点融合生成融合节点;将融合节点替代多个可融合节点,并通过融合节点实现神经网络模型的计算。采用本申请提供的技术方案,能够大大提高神经网络模型的计算速度,并大量提高CPU效能,实现神经网络模型的高效计算。

Description

一种模型计算方法、装置及设备
技术领域
本申请涉及数据处理技术领域,特别是涉及一种模型计算方法、装置及设备。
背景技术
随着人工智能的不断发展,人工智能的应用方式也逐渐地不断发掘创造。其中,神经网络模型是在人工智能应用中的一种热门应用方法,越来越广泛地应用于各领域的人工智能计算中。
而在神经网络模型的应用范围越来越广阔的同时,为了实现越来越多样化的需求,神经网络模型复杂性增加的同时,其也伴随着神经网络模型的计算量越来越大,在不断扩展大量计算过程的同时,为了满足计算而设立的各种算子的数量也随之不断增长。基于上述情况,在大量计算过程中,其响应的时间也在不断的增加。因此,如何减少神经网络模型的响应时间,是本领域技术人员急需解决的技术问题。
发明内容
基于上述问题,本申请提供了一种模型计算方法、装置及设备,实现对神经网络模型的加速计算,本申请实施例公开了如下技术方案:
一种模型计算方法,所述方法包括:
将神经网络模型的计算图进行节点拆分,获取单一节点;
识别所述单一节点并确认可融合节点;
将多个所述可融合节点融合生成融合节点;
将所述融合节点替代多个所述可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
可选的,所述识别所述单一节点并确认可融合节点,具体包括:
读取待测节点中的算子,获取所述待测节点中的算子的类型和执行逻辑;
根据所述待测节点中所述算子的类型和执行逻辑确认所述待测节点是否满足可融合性;
在所述待测节点满足所述可融合性的基础上,确定所述待测节点为可融合节点。
可选的,所述根据所述待测节点中的算子的类型和执行逻辑确认所述待测节点是否满足可融合性,具体包括:
确认所述待测节点中的算子的访存类型,并且计算所述待测节点中的算子的执行逻辑的复杂度;
比较所述待测节点中的算子的访存类型与预存的访存类型的归属关系,并且计算所述待测节点中的算子的执行逻辑的复杂度与所述复杂度阈值之间的关系;
若所述待测节点中的算子的访存类型归属于预存的所述访存类型,且所述待测节点中的算子的执行逻辑的复杂度小于所述复杂度阈值,确认所述待测节点中的算子满足可融合性。
可选的,在所述识别所述单一节点并确认可融合节点之后,还包括:
将所述可融合节点进行子图划分,将相邻可融合节点划分至同一所述子图中。
可选的,所述将所述可融合节点进行子图划分,将相邻可融合节点划分至同一所述子图中,具体包括:
依据所述节点间的连接结构遍历节点,定位当前可融合节点;
获取所述当前可融合节点的下级节点,并识别下级节点的类型;所述当前可融合节点的下级节点为,输入与所述当前可融合节点的输出相关的节点,节点的类型包括:可融合节点和不可融合节点;
若所述下级节点为所述可融合节点,则对所述下级节点赋予与所述当前可融合节点相同的子图标识;
将所述下级节点作为新的当前可融合节点循环执行上述步骤直至新的当前可融合节点的下级节点类型为不可融合节点;
将所述可融合节点进行子图划分,将同一子图标识的相邻可融合节点划分至同一所述子图中。
可选的,在若所述下级节点为所述可融合节点,则对所述下级节点赋予与所述当前可融合节点相同的子图标识;将所述下级节点作为新的当前可融合节点循环执行上述步骤直至所述下级节点类型为不可融合节点之后,还包括:
若所述下级节点类型为不可融合节点,将所述当前可融合节点的下级节点的子图标识进行修改,使所述下级节点的子图标识不同于已有子图标识。
可选的,若所述下级节点为所述可融合节点,所述方法还包括:
获取下级的所述可融合节点的其它上级可融合节点,所述其它上级可融合节点为不同于所述当前可融合节点的可融合节点;
连续遍历所述其它上级可融合节点的相邻上级可融合节点,直至出现第一不可融合节点,对所述下级节点与所述第一不可融合节点间的可融合节点赋予与所述当前可融合节点相同的子图标识。
可选的,所述将多个所述可融合节点融合生成融合节点,具体包括:
读取所述多个可融合节点中所述算子的运行代码;
根据多个所述可融合节点的运行代码,生成一个新运算代码,所述新运算代码能实现所述多个可融合节点中所述算子的总功能;
依据预设融合规则,生成新运行代码的融合节点。
可选的,所述将神经网络模型的计算图进行节点拆分,获取单一节点,具体包括:
读取所述计算图的拓扑结构;
根据所述拓扑结构遍历所述计算图的所有节点;
将所述计算图依据所述拓扑结构的拓扑顺序进行节点拆分,获取单一节点。
一种模型计算装置,所述装置包括:
节点拆分模块,用于将神经网络模型的计算图进行节点拆分,获取单一节点;
节点确认模块,用于识别所述单一节点并确认可融合节点;
节点融合模块,用于将多个所述可融合节点融合生成融合节点;
节点替代模块,用于将所述融合节点替代多个所述可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
一种模型计算设备,所述设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现一种模型计算方法的步骤。
为了实现对神经网络模型的加速计算,本申请的技术方案提出对神经网络模型的节点进行遍历,从神经网络模型节点筛选可融合节点,将有逻辑关系的可融合节点融合为一个统一的融合节点,在需要执行可融合节点的计算时,可直接执行融合节点的计算,减少了针对每一节点都需要执行相应的数据的调用和计算的过程,能够有效地减少神经网络模型的计算时间,提升神经网络模型的计算效率。
本申请还提供了一种模型计算装置及设备,具有以上有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术任务来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的一种模型计算方法的流程图;
图2为本申请实施例提出的一种子图划分的一种示例图;
图3为本申请实施例提出的一种子图划分的另一种示例图;
图4为本申请实施例公开的一种模型计算装置的示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术任务在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在不冲突的情况下,本申请中的实施方式及实施方式中的特征可以相互组合。
下面结合参考附图与实施方式来对本方案的发明进行详细说明。
图1是本申请实施例的一种模型计算方法的流程示意图,所述方法包括以下步骤:
S101,将神经网络模型的计算图进行节点拆分,获取单一节点。
在神经网络模型的计算图中,计算图的主要组成结构是由各个节点按逻辑次序依次组成。在本实施例的内容中,对计算图进行节点级别的拆分,以使计算图被划分为各个单一节点。
本申请的一种实施例内容中,将神经网络模型的计算图进行节点拆分,获取单一节点,具体包括:
读取计算图的拓扑结构;
根据拓扑结构遍历计算图的所有节点;
将计算图依据拓扑结构的拓扑顺序进行节点拆分,获取单一节点。
本申请提供的技术方案主要运用于神经网络模型的加速计算,具体应用于包含点对点计算的访存型算子较多的神经网络模型。本申请技术方案需要对神经网络模型计算图的节点进行拆分,具体拆分方式依赖于神经网络模型的具体拓扑结构,依赖于拓扑结构进行节点拆分。具体而言,当拓扑结构为环形,则可以对同环形的节点进行同步拆分,当为树状拓扑时,则从分支向总支拆分或从总支向分支拆分。按照神经网络模型的计算图的拓扑结构本身进行相应的按序拆分,能够最大限度的保证拆分的合理性,同时,也便于为拆分后的节点进行结构排布和结构获取。
S102,识别所述单一节点并确认可融合节点。
在将神经网络模型的计算图拆分为各个单一节点后,对所拆分出的单一节点进行分别识别。其中,节点的类型包括计算型节点、访存型节点,其中计算型节点包含密集型计算节点和简单计算节点,密集型计算节点为包含重型算子的节点,例如,表示针对卷积、矩阵乘等进行计算的算子为重型算子,如Conv,Gemm等算子;简单计算节点为只包含较为简单计算过程算子的节点,例如计算过程只为加、减、乘、除等简单计算的算子为简单计算,例如包含Relu,BatchNorm等ElemWise型算子的节点,计算过程简单,可认为是简单计算节点;而访存型节点为包含用于等待/执行调用操作等访存操作算子的节点。其中,上述节点类型的具体划分方式,在于根据节点中算子类型和计算复杂度来进行划分。具体来讲,由于节点是由至少一个算子组成,同时算子之间以一定的工作逻辑组成完整节点。因此,识别一个节点的所属类型需要从其所包含算子的类型和执行逻辑所造成的计算复杂度两方面因素来进行确认。首先,需要保证算子为简单计算过程算子或访存操作算子,上述两种算子可共同归类于简单算子,同时,确定算子间的执行逻辑也较为简单,同时满足节点间算子的为简单算子且算子间的执行逻辑较为简单时,确认包含该算子的节点为可融合节点。
在本申请的一种具体实施例中,针对识别可融合节点的具体过程,识别所述单一节点并确认可融合节点,具体包括:
读取待测节点中的算子,获取待测节点中的算子的类型和执行逻辑;
根据待测节点中算子的类型和执行逻辑确认待测节点是否满足可融合性;
在待测节点满足可融合性的基础上,确定待测节点为可融合节点。
本实施例的内容主要针对节点中的算子的类型和执行逻辑对待测节点的可融合性进行判断,具体而言,实现对待测节点中的算子的类型和执行逻辑进行判断准确。其中,可融合性为预存的用于判断算子是否可以作为可融合算子的判断指标。
本实施例中,确定可融合节点时,所确定的节点中包含的算子类型为访存型算子。确定算子的类型为访存型算子的具体方式包括:确定算子中是否只包括简单算子,简单算子指令在算子总指令中的指令占比以及简单算子指令在算子总指令中的指令占比。同时,在一个节点中,可能包含至少一个算子,所以还针对算子间的执行逻辑来评判节点的可融合性,获取具体的可融合性数值。也就是说,在本申请实施例中,通过待测节点的算子的归属类型以及算子间的执行逻辑共同计算出待测节点的可融合性数值,在可融合性的可融合数值满足融合性预设条件下,确定当前的待测节点为可融合节点。
本实施例中,确认了可融合节点的具体获取逻辑,即能够从所有的不同节点中确认哪些可以被视为可融合节点,哪些不能被视为可融合节点,明确了可融合节点的具体特征,使可融合节点更加明确。
在本申请的一种进一步实施例内容中,根据待测节点中的算子的类型和执行逻辑确认待测节点是否满足可融合性,具体包括:
确认待测节点中的算子的访存类型,并且计算待测节点中的算子的执行逻辑的复杂度;
比较待测节点中的算子的访存类型与预存的访存类型的归属关系,并且计算待测节点中的算子的执行逻辑的复杂度与复杂度阈值之间的关系;
若待测节点中的算子的访存类型归属于预存的访存类型,且待测节点中的算子的执行逻辑的复杂度小于复杂度阈值,确认待测节点中的算子满足可融合性。
在本实施例的内容中,在确定待测节点的算子的访存类型以及算子的执行逻辑的复杂性。在确定算子的访存类型后,将算子的访存类型与预存的访存类型进行比较,判断当前算子的访存类型是否符合系统中预存的算子访存类型。其中,算子的访存类型基于固定访存阈值来进行确认,具体在于,根据节点中算子的访存操作与算子占用的总指令的指令比,与固定访存阈值进行比较。其中,固定访存阈值可以为多个,每一固定访存阈值的设立都对应相应的具体的算子的访存类型,例如,密集访存算子、一般访存算子等。同时,计算待测节点中算子的执行逻辑的复杂度,即计算同一节点间不同算子的调用复杂程度,或一个节点间算子与其它节点算子连接的逻辑复杂程度,并通过复杂度来进行数值表示,并与预设的复杂度阈值进行比较。
当待测节点中的算子的访存类型归属于预存的访存类型,且待测节点中的算子的执行逻辑的复杂度小于复杂度阈值时,确认待测节点中算子的可融合性满足预设的可融合性,也即待测节点中的算子为可融合算子。
考虑到,在一个节点中,可能不止包括一个算子,同时,一个节点中的不同算子与其它节点中的算子包含多种可能的连接方式,由此衍生出复杂的算子执行逻辑,针对上述情况,本实施例的内容强调,确认节点中的算子的类型,因为节点中包括不同的算子,由此算子的类型会对节点的类型产生相应的影响,并获取节点内部的算子调用过程。同时获取节点间的执行逻辑,由此获取节点间的算子执行逻辑,将节点间的算子执行逻辑与节点中算子的执行逻辑工作作为计算待测节点中的算子的执行逻辑的复杂度的因变量因素,依据算子的访存类型及待测节点中的算子的执行逻辑的复杂度共同与可融合性进行标准对比,以识别待测节点是否可被视为可融合节点。
在本申请的一种实施例中,在识别所述单一节点并确认可融合节点之后,还包括:
将可融合节点进行子图划分,将相邻可融合节点划分至同一子图中。
在逐一对节点进行识别并确定可融合节点后,依据可融合节点对神经网络模型的计算图进行相应的子图划分,以使计算图划分出若干个子图,同时保证所划分的同一子图中包含相邻的可融合节点。
本实施例中说明,将相邻的可融合节点共同划分为统一子图中,这些可融合节点都为可融合节点,且相互之间存在数据计算关系,在数据处理过程中,如果能够实现数据的统一处理,能够大大缩减分节点处理的时间。
在本申请的一种具体实施例中,针对将可融合节点进行子图划分,将相邻可融合节点划分至同一子图中,具体包括:
依据节点间的连接结构遍历节点,定位当前可融合节点;
获取当前可融合节点的下级节点,并识别下级节点的类型;当前可融合节点的下级节点为,输入与当前可融合节点的输出相关的节点,节点的类型包括:可融合节点和不可融合节点;
若下级节点为可融合节点,则对下级节点赋予与当前可融合节点相同的子图标识;
将下级节点作为新的当前可融合节点循环执行上述步骤直至新的当前可融合节点的下级节点类型为不可融合节点;
将可融合节点进行子图划分,将同一子图标识的相邻可融合节点划分至同一子图中。
针对节点间的具体连接结构,从底至上遍历神经网络模型的计算图的全部节点,并按照遍历顺序定位可融合节点为当前可融合节点。依据当前可融合节点的输出内容,获取输入内容与当前可融合节点输出内容直接相关的节点为当前可融合节点的下级节点,下级节点的数量为至少一个,识别下级节点的节点类型,节点的类型包括:可融合节点和不可融合节点。
如果下级节点的节点类型都为可融合节点,则对下级节点进行子图标识赋予,所赋予的子图标识与当前可融合节点的子图标识相同,同时,将各下级可融合节点视为新的当前可融合节点循环执行上述步骤,直至出现新的当前可融合节点的下级节点出现不可融合节点。
将子图标识的节点划分至同一子图中,同时,因为同一子图中的可融合节点之间互为上下级节点,因此,可融合节点间存在相邻关系。
具体示例如图2所示,定位到当前可融合节点K1中,获取K1的下级节点K2,确认节点K2为可融合节点,则向K2赋予与K1相同的子图标识。同时,将K2确认为新的当前可融合节点,并获取K2的下级节点K3、K4,获取K3、K4的节点的类型,向K3、K4赋予子图标识,并分别将确认K3、K4确认为新的当前可融合节点,直至获取到不可融合节点B1,此时将如图所示的K1~K6赋予相同的子图标识,并划分至同一子图中。
在本实施例中,存在相邻关系的可融合节点都可以作为同子图的节点,因为相邻节点的可融合节点存在直接的数据调用的关系,上级节点产生的输出可直接被下级节点所调用,如果能实现统一处理,能够避免获取、调用的时间,大大缩减整个神经网络的计算时间。
在本申请的一种实施例情况中,在若下级节点为可融合节点,则对下级节点赋予与当前可融合节点相同的子图标识;将下级节点作为新的当前可融合节点循环执行上述步骤直至下级节点类型为不可融合节点之后,还包括:
若下级节点类型为不可融合节点,将当前可融合节点的下级节点的子图标识进行修改,使下级节点的子图标识不同于已有子图标识。
在新的当前可融合节点对下级节点的类型进行判断的过程中,如果判断新的可融合节点对应的下级节点为不可融合节点时,则将当前可融合节点的下级节点的子图标识赋值为不同于当前可融合节点的数值。例如,当前可融合节点的子图标识为0,则可以将当前可融合节点的下级其它可融合节点的子图标识赋值为1。
在本申请的一种额外实施例中,若下级节点为可融合节点,所述方法还包括:
若下级节点为可融合节点,获取下级的可融合节点的其它上级可融合节点,其它上级可融合节点为不同于当前可融合节点的可融合节点;
连续遍历其它上级可融合节点的相邻上级可融合节点,直至出现第一不可融合节点,对下级节点与第一不可融合节点间的可融合节点赋予与当前可融合节点相同的子图标识。
考虑到某一可融合节点的上级节点可能不止为一个节点,本实施例提出,在确定当前可融合节点的下级节点为同标识的可融合节点时,识别此下级节点是否与其它上级节点连接,并确定其它上级节点是否为可融合节点,并将此其它上级节点视为其它上级可融合节点,其中,其它上级可融合节点为不同于当前可融合节点的可融合节点。连续遍历此下级节点的其它上级节点,直至此下级节点的上级节点中出现不可融合节点。并为此下级节点的其它上级节点赋予当前可融合节点的子图标识。
具体示例如图3所示,当前节点为K2时,此时K3为K2的下级节点,并确认K3为可融合节点。此时,K3存在其它上级节点K7,确认K7的节点类型为可融合节点,则连续遍历K7的上级节点,获取到上级节点K8、K9,并确认K8、K9的节点类型为可融合节点,继续遍历K8、K9的上级节点类型,直至获取到B2,识别B2节点的类型为不可融合节点,将B2至K3中的可融合节点K7、K8、K9作为与K2同标识的可融合节点进行同步划分。
需要注意的是,如果某一子图标识下只包括一个可融合节点,则删除此可融合节点的子图标识,此可融合节点不作后续的节点融合处理。
S103,将多个可融合节点融合生成融合节点。
在确认节点为可融合节点后,并将融合节点进行划分之后,按照节点间的运行逻辑将多个可融合节点划分为统一的融合节点。
在本实施例内容中,将多个可融合节点融合生成融合节点,具体包括:
读取多个可融合节点中算子的运行代码;
根据多个可融合节点的运行代码,生成一个新运算代码,新运算代码能实现多个可融合节点中所述算子的总功能;
依据预设融合规则,生成新运行代码的融合节点。
读取各可融合节点中的具体算子内容,依据算子中内容提取相应的执行代码,将执行代码相互融合,形成新的执行代码,使新的执行代码所能实现的功能能够满足各个执行代码组合所能实现的功能,并依据算子间预设的融合规则,生成新的能够运行新运行代码的融合节点。
举例来讲,可融合节点包括x1,x2(x1,x2均未在图中示出),其中x1的算子内容为{Sub},而x2的算子内容为{Div},x1、x2的执行代码分别用于实现上述计算过程,其中x2为x1的下级节点,则将x1、x2进行融合后,所产生的融合代码需要实现的新功能为Div(Sub),并依据上述需要实现的新功能设立新运行代码,并依据新运行代码设立相应的融合节点,以实现新运行代码需要实现的功能。
S104,将融合节点替代多个可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
在产生新的融合节点后,将融合节点替代其所能表示的多个可融合节点,并通过新的融合节点实现神经网络模型的计算过程。
本申请公开的技术方案尤其适用于包含大量的点对点计算的访存型算子的神经网络模型中,在上述种类的神经网络模型中,在进行点对点调用访问的过程中,大量的计算时间实质上被消耗于等待对方连接和响应的过程,同时,在整个模型进行运算的过程中,可能同时存在多个节点在等待连接和响应,极大地占用了大量的CPU效能,采用本申请提供的技术方案,能够将大量访存型算子所需要执行的功能进行统一的整合,不需要在每个节点的算子进行计算时重新进等待数据通信和响应,在减少计算时间的同时也能够解放大量的CPU性能,加快神经网络模型的计算效率。
基于上述实施例公开的一种模型计算方法,本实施例对应公开了一种模型计算装置,该装置包括:
节点拆分模块401,用于将神经网络模型的计算图进行节点拆分,获取单一节点;
节点确认模块402,用于识别所述单一节点并确认可融合节点;
节点融合模块403,用于将多个所述可融合节点融合生成融合节点;
节点替代模块404,用于将所述融合节点替代多个所述可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
可选的,节点确认模块402,具体包括:
算子读取模块,用于读取待测节点中的算子,获取所述待测节点中的算子的类型和执行逻辑;
可融合性比较模块,用于根据所述待测节点中所述算子的类型和执行逻辑确认所述待测节点是否满足可融合性;
可融合节点确定模块,用于在所述待测节点满足所述可融合性的基础上,确定所述待测节点为可融合节点。
具体的,可融合性比较模块,具体包括:
算子特征获取模块,用于确认所述待测节点中的算子的访存类型,并且计算所述待测节点中的算子的执行逻辑的复杂度;
算子特征类比模块,用于比较所述待测节点中的算子的访存类型与预存的访存类型的归属关系,并且计算所述待测节点中的算子的执行逻辑的复杂度与所述复杂度阈值之间的关系;
算子可融合性确认模块,用于,若所述待测节点中的算子的访存类型归属于预存的所述访存类型,且所述待测节点中的算子的执行逻辑的复杂度小于所述复杂度阈值,确认所述待测节点中的算子满足可融合性。
可选的,一种模型计算装置,还包括:
子图划分模块,用于将所述可融合节点进行子图划分,将相邻可融合节点划分至同一所述子图中。
可选的,子图划分模块,具体包括:
可融合节点定位模块,用于依据所述节点间的连接结构遍历节点,定位当前可融合节点;
下级节点确认模块,用于获取所述当前可融合节点的下级节点,并识别下级节点的类型;所述当前可融合节点的下级节点为,输入与所述当前可融合节点的输出相关的节点,节点的类型包括:可融合节点和不可融合节点;
子图标识赋予模块,若所述下级节点为所述可融合节点,则对所述下级节点赋予与所述当前可融合节点相同的子图标识;
循环执行模块,将所述下级节点作为新的当前可融合节点循环执行上述步骤直至新的当前可融合节点的下级节点类型为不可融合节点;
子图划分模块,将所述可融合节点进行子图划分,将同一子图标识的相邻可融合节点划分至同一所述子图中。
可选的,子图划分模块,还包括:
子图标识更新模块,用于若所述下级节点类型为不可融合节点,将所述当前可融合节点的下级节点的子图标识进行修改,使所述下级节点的子图标识不同于已有子图标识。
可选的,若所述下级节点为可融合节点,一种模型计算装置,还包括:
上级可融合节点识别模块,用于获取下级的所述可融合节点的其它上级可融合节点,所述其它上级可融合节点为不同于所述当前可融合节点的可融合节点;
上级模块子图标识获取模块,用于连续遍历所述其它上级可融合节点的相邻上级可融合节点,直至出现第一不可融合节点,对所述下级节点与所述第一不可融合节点间的可融合节点赋予与所述当前可融合节点相同的子图标识。
具体的,节点融合模块403,具体用于:
读取所述多个可融合节点中所述算子的运行代码;
根据多个所述可融合节点的运行代码,生成一个新运算代码,所述新运算代码能实现所述多个可融合节点中所述算子的总功能;
依据预设融合规则,生成新运行代码的融合节点。
具体的,节点拆分模块401,具体用于:
读取所述计算图的拓扑结构;
根据所述拓扑结构遍历所述计算图的所有节点;
将所述计算图依据所述拓扑结构的拓扑顺序进行节点拆分,获取单一节点。
一种模型计算设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上述任意一种所述一种模型计算方法的步骤。主要在于,将神经网络模型的计算图进行节点拆分,获取单一节点;识别所述单一节点并确认可融合节点;将多个所述可融合节点融合生成融合节点;将所述融合节点替代多个所述可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种模型计算方法、装置及设备进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

Claims (11)

1.一种模型计算方法,其特征在于,所述方法包括:
将神经网络模型的计算图进行节点拆分,获取单一节点;
识别所述单一节点并确认可融合节点;
将多个所述可融合节点融合生成融合节点;
将所述融合节点替代多个所述可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
2.根据权利要求1所述的方法,其特征在于,所述识别所述单一节点并确认可融合节点,具体包括:
读取待测节点中的算子,获取所述待测节点中的算子的类型和执行逻辑;
根据所述待测节点中所述算子的类型和执行逻辑确认所述待测节点是否满足可融合性;
在所述待测节点满足所述可融合性的基础上,确定所述待测节点为可融合节点。
3.根据权利要求2所述的方法,其特征在于,所述根据所述待测节点中的算子的类型和执行逻辑确认所述待测节点是否满足可融合性,具体包括:
确认所述待测节点中的算子的访存类型,并且计算所述待测节点中的算子的执行逻辑的复杂度;
比较所述待测节点中的算子的访存类型与预存的访存类型的归属关系,并且计算所述待测节点中的算子的执行逻辑的复杂度与所述复杂度阈值之间的关系;
若所述待测节点中的算子的访存类型归属于预存的所述访存类型,且所述待测节点中的算子的执行逻辑的复杂度小于所述复杂度阈值,确认所述待测节点中的算子满足可融合性。
4.根据权利要求1所述的方法,其特征在于,在所述识别所述单一节点并确认可融合节点之后,还包括:
将所述可融合节点进行子图划分,将相邻可融合节点划分至同一所述子图中。
5.根据权利要求4所述的方法,其特征在于,所述将所述可融合节点进行子图划分,将相邻可融合节点划分至同一所述子图中,具体包括:
依据所述节点间的连接结构遍历节点,定位当前可融合节点;
获取所述当前可融合节点的下级节点,并识别下级节点的类型;所述当前可融合节点的下级节点为,输入与所述当前可融合节点的输出相关的节点,节点的类型包括:可融合节点和不可融合节点;
若所述下级节点为所述可融合节点,则对所述下级节点赋予与所述当前可融合节点相同的子图标识;
将所述下级节点作为新的当前可融合节点循环执行上述步骤直至新的当前可融合节点的下级节点类型为不可融合节点;
将所述可融合节点进行子图划分,将同一子图标识的相邻可融合节点划分至同一所述子图中。
6.根据权利要求5所述的方法,其特征在于,在若所述下级节点为所述可融合节点,则对所述下级节点赋予与所述当前可融合节点相同的子图标识;将所述下级节点作为新的当前可融合节点循环执行上述步骤直至所述下级节点类型为不可融合节点之后,还包括:
若所述下级节点类型为不可融合节点,将所述当前可融合节点的下级节点的子图标识进行修改,使所述下级节点的子图标识不同于已有子图标识。
7.根据权利要求5所述的方法,其特征在于,若所述下级节点为所述可融合节点,所述方法还包括:
获取下级的所述可融合节点的其它上级可融合节点,所述其它上级可融合节点为不同于所述当前可融合节点的可融合节点;
连续遍历所述其它上级可融合节点的相邻上级可融合节点,直至出现第一不可融合节点,对所述下级节点与所述第一不可融合节点间的可融合节点赋予与所述当前可融合节点相同的子图标识。
8.根据权利要求1所述的方法,其特征在于,所述将多个所述可融合节点融合生成融合节点,具体包括:
读取所述多个可融合节点中所述算子的运行代码;
根据多个所述可融合节点的运行代码,生成一个新运算代码,所述新运算代码能实现所述多个可融合节点中所述算子的总功能;
依据预设融合规则,生成新运行代码的融合节点。
9.根据权利要求1所述的方法,其特征在于,所述将神经网络模型的计算图进行节点拆分,获取单一节点,具体包括:
读取所述计算图的拓扑结构;
根据所述拓扑结构遍历所述计算图的所有节点;
将所述计算图依据所述拓扑结构的拓扑顺序进行节点拆分,获取单一节点。
10.一种模型计算装置,其特征在于,所述装置包括:
节点拆分模块,用于将神经网络模型的计算图进行节点拆分,获取单一节点;
节点确认模块,用于识别所述单一节点并确认可融合节点;
节点融合模块,用于将多个所述可融合节点融合生成融合节点;
节点替代模块,用于将所述融合节点替代多个所述可融合节点,并通过所述融合节点实现所述神经网络模型的计算。
11.一种模型计算设备,其特征在于,所述设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1~9任一项所述的一种模型计算方法的步骤。
CN202211669086.8A 2022-12-23 2022-12-23 一种模型计算方法、装置及设备 Pending CN115965065A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211669086.8A CN115965065A (zh) 2022-12-23 2022-12-23 一种模型计算方法、装置及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211669086.8A CN115965065A (zh) 2022-12-23 2022-12-23 一种模型计算方法、装置及设备

Publications (1)

Publication Number Publication Date
CN115965065A true CN115965065A (zh) 2023-04-14

Family

ID=87354384

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211669086.8A Pending CN115965065A (zh) 2022-12-23 2022-12-23 一种模型计算方法、装置及设备

Country Status (1)

Country Link
CN (1) CN115965065A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117576125A (zh) * 2024-01-16 2024-02-20 芯瞳半导体技术(山东)有限公司 一种神经网络计算图的分割方法、装置、设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117576125A (zh) * 2024-01-16 2024-02-20 芯瞳半导体技术(山东)有限公司 一种神经网络计算图的分割方法、装置、设备及存储介质
CN117576125B (zh) * 2024-01-16 2024-04-16 芯瞳半导体技术(山东)有限公司 一种神经网络计算图的分割方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN112163625B (zh) 基于人工智能和云计算的大数据挖掘方法及云端服务中心
CN109697500B (zh) 数据处理方法、装置、电子设备及存储介质
CN113946546B (zh) 异常检测方法、计算机存储介质及程序产品
CN104423968A (zh) 设计业务逻辑的方法、执行其的服务器和储存媒介
CN117271101B (zh) 一种算子融合方法、装置、电子设备及存储介质
CN115965065A (zh) 一种模型计算方法、装置及设备
CN109409746A (zh) 一种生产调度方法及装置
CN112712125B (zh) 事件流的模式匹配方法、装置、存储介质及处理器
CN111078573A (zh) 一种测试报文的生成方法及装置
CN109165102B (zh) 一种基于智能合约的约束求解器分布式调度方法
CN113254068B (zh) 一种控制流平坦化自动检测方法、装置
Hofmann et al. I/O guided detection of list catamorphisms: towards problem specific use of program templates in ip
CN115525534A (zh) 基于swagger的接口测试的测试用例生成方法、生成平台
CN117149770A (zh) 数据库的存储过程执行方法、装置以及计算机设备
CN115130043B (zh) 基于数据库的数据处理方法、装置、设备及存储介质
CN111538715B (zh) 一种风控方案的迁移方法、装置及电子设备
CN113377419B (zh) 一种业务处理方法、装置、可读存储介质及电子设备
CN115755867A (zh) 一种车辆诊断方法及相关装置
CN113076244B (zh) 一种函数调用关系检测方法及装置
JP7508841B2 (ja) システム検証プログラム生成装置、システム検証プログラム生成方法およびシステム検証プログラム生成プログラム
Pagnozzi et al. Evaluating the impact of grammar complexity in automatic algorithm design
CN109491892B (zh) 一种项目环境的配置方法和装置
CN112540979A (zh) 表达式的存储方法及装置
CN117313700B (zh) 汽车场景编排文件的条件表达式生成方法、装置及介质
CN113792247B (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