CN116301903B - 一种编译器、ai网络编译方法、处理方法、执行系统 - Google Patents

一种编译器、ai网络编译方法、处理方法、执行系统 Download PDF

Info

Publication number
CN116301903B
CN116301903B CN202310523795.3A CN202310523795A CN116301903B CN 116301903 B CN116301903 B CN 116301903B CN 202310523795 A CN202310523795 A CN 202310523795A CN 116301903 B CN116301903 B CN 116301903B
Authority
CN
China
Prior art keywords
network
subnet
compiler
task
sub
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.)
Active
Application number
CN202310523795.3A
Other languages
English (en)
Other versions
CN116301903A (zh
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.)
Chengdu Denglin Technology Co ltd
Hangzhou Denglin Hanhai Technology Co ltd
Original Assignee
Chengdu Denglin Technology Co ltd
Hangzhou Denglin Hanhai 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 Chengdu Denglin Technology Co ltd, Hangzhou Denglin Hanhai Technology Co ltd filed Critical Chengdu Denglin Technology Co ltd
Priority to CN202310523795.3A priority Critical patent/CN116301903B/zh
Publication of CN116301903A publication Critical patent/CN116301903A/zh
Application granted granted Critical
Publication of CN116301903B publication Critical patent/CN116301903B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • 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

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供一种编译器、AI网络编译方法、处理方法、执行系统,其中,所述编译器在编译要加载到AI处理器上的AI网络时,被配置为执行如下步骤对所述AI网络进行编译:获取AI网络涉及的多个任务节点的节点信息;预估任意依赖连续的多个任务节点被合并为一个子网后对应的性能增益,并在性能增益为正收益时,将这些任务节点合并为一个子网,以及基于子网划分结果为子网生成对应的指令,其中,合并后的任意一个子网运行一次所需的内存小于或等于AI处理器片上内存。通过在编译期以AI处理器片上内存容量为基础,根据片上内存的容量进行合理的子网划分,使得每个子网可以基于片上内存执行,节约子网内任务节点间的数据搬运时间,处理方式高效且实用。

Description

一种编译器、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网络;其中,合并后得到的任意一个子网运行一次所需的内存小于或等于所述AI处理器的片上内存;
为含有子网的AI网络生成子网的指令。
通过上述编译器可以在编译期根据片上内存的容量进行合理的子网划分,节约子网内任务节点间的数据搬运时间,且无需像现有技术那样过多依赖实验性地运行网络来得到大量实验迭代结果从而导致消耗较多的资源。
优选的,所述性能增益是指多个任务节点合并前的运行时钟之和,与,多个任务节点合并为一个子网后的子网运行时钟这二者的差值。
优选地,所述性能增益是指相邻任务节点在合并前的运行时钟之和、所述相邻任务节点合并为一个子网后的子网运行时钟这二者的差值。
其中,一个任务节点的运行时钟为从系统内存中搬运该任务节点所需数据到片上内存所需的时钟、该任务节点基于片上内存执行所需的时钟、将该任务节点的执行结果从片上内存搬运到系统内存所需的时钟三者之和;子网运行时钟为从系统内存中搬运该子网所需数据到片上内存所需的时钟、该子网基于片上内存执行所需的时钟、将该子网的执行结果从片上内存搬运到系统内存所需的时钟三者之和。
相较于AI处理器的片上内存,系统内存可以视为相对于片上内存的片外内存,例如,系统内存可以是双倍速率同步动态随机存储器(Double Data Rate SDRAM,简称DDR),SDRAM 是Synchronous Dynamic Random Access Memory的缩写。
通过准确预估不同情况下的运行时钟,比较合并前、后的运行时钟差异,可以更准确的计算合并子网可能带来的性能增益,从而进行更合理的子网划分。
优选的,AI处理器是GPU,该GPU具有片上内存。
在本发明的一些实施例中,所述编译器还被配置为:以AI网络中的一个任务节点为一个初始子网,获得AI网络的初始子网划分结果;基于初始子网划分结果,对AI网络进行多轮子网合并直至无合并性能增益以获得最终的子网划分结果,其中,每轮子网合并时,预估上一轮合并后得到的子网划分结果中任意两个相邻子网合并后的性能增益,并将其中性能增益为正收益且增益最大的两个相邻子网合并为一个新的子网;为所述最终的子网划分结果生成各子网对应的指令。
在本发明的一些实施例中,所述编译器还被配置为:以AI网络的一个任务节点为一个初始子网,获得AI网络的初始子网划分结果;基于初始子网划分结果,对AI网络进行多轮子网合并直至无合并性能增益以获得最终的子网划分结果,其中,每轮合并时,预估上一轮合并后得到的子网划分结果中任意两个相邻子网合并后的性能增益,将为正收益的所有性能增益进行降序排列,并基于该降序排列依次进行各性能增益对应的子网合并;为所述最终的子网划分结果生成各子网对应的指令。
优选的,所述编译器还被配置为:在基于所述降序排列进行子网合并时,如果性能增益对应的子网合并会改变周围子网结构,则跳过该性能增益对应的子网合并。
优选的,所述编译器还被配置为:在进行每一轮子网合并的过程中,根据相邻子网在合并前的运行时钟之和,以及,所述相邻子网合并为一个新的子网后的运行时钟,确定相邻子网合并后的性能增益。
优选的,子网的运行时钟为:子网任务总量*子网对应的单位任务量的运行时钟。其中,优选的,所述子网对应的单位任务量的运行时钟为该子网对应的:AI处理器片上内存满载任务量的运行时钟/片上内存满载任务量。
例如,若AI处理器是GPU,片上内存满载情况下,子网对应的单位任务量的运行时钟为该子网对应的:GPU片上内存满载任务量的运行时间/片上内存满载任务量,其中,GPU片上内存满载任务量的运行时间包括从系统内存获取满载任务量数据到片上内存的时钟、满载任务量在片上内存执行的时钟、将满载任务量情况下对应的执行结果从片上内存搬运到系统内存的时钟之和。
根据本发明的第二方面,提供一种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为根据本发明实施例的一种DAG网络示意图;
图2为根据本发明实施例的编译器对AI网络进行编译的流程示意图;
图3为根据本发明实施例的一种线性AI网络示意图;
图4为根据本发明实施例对图3中的AI网络进行初始子网划分的一种结果示意图;
图5为根据本发明实施例对图4中的初始子网进行一轮子网划分的一种结果示意图;
图6为根据本发明实施例对图4中的初始子网进行一轮子网划分的另一种结果示意图;
图7为根据本发明实施例的一个实例中的验证效果对比示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
在人工智能领域,常常采用由很多节点组成的有向无环的计算图来表示AI网络(例如卷积神经网络CNN、循环神经网络RNN、深度神经网络DNN等)模型设计的计算逻辑,并普遍应用在各类数据处理平台。在处理AI网络时,AI网络模型被表示为具有大量节点的有向无环的计算图,通过按照某种拓扑序来依次调度并执行计算图中的节点对应的内核函数,从而完成对于AI网络模型的执行。计算图中的每个节点表示网络模型需要进行的相应运算(即算子或操作),节点之间的有向边表示节点对应的操作(或算子)之间的依赖关系,例如数据的输入输出关系(若一个节点X的输出张量需要传递给另一个节点Y作为该节点Y的输入,则视为这两个节点X、Y之间有依赖关系、该两个节点相邻,若节点Y的输出还需要给节点Z,可以视为节点Y、Z之间有依赖关系,节点Y、Z相邻)。每个节点对应的运算可以被定义在代数运算符(例如向量的加、减、乘、除和矩阵乘法等基础运算)的粒度上,当然根据不同的优化规则可以进行算子融合,以使计算图中一些节点对应的内核函数被融合,从而减少对于粒度较低但数量多的内核函数的启动所带来的开销。AI网络中不同类型操作对应的指令可以给人工智能(Artificial Intelligence,AI)处理器中不同的模块执行。AI网络在片内异构的AI处理器上执行的时候是基于硬件异构执行的方式,片内异构的不同模块在能够访问片上内存的情况下执行速度会很快。
GPU(Graphic Processing Unit, 图形处理器)作为一种支持大规模并行计算的处理器架构,常作为AI处理器,被广泛应用于各类任务处理场景,尤其是应用于处理机器学习领域的AI网络任务。GPU常作为AI处理器协助主处理器(一般是CPU)运行AI网络,以执行各类应用场景的AI任务。按照GPU片内架构的不同,可分为传统的能够进行并行计算的GPU、包括至少两种不同结构类型计算单元的片内异构GPU(简称异构GPU),本发明涉及的AI网络可被异构GPU运行。
在一些实施例中,一种片内异构的GPU既可以包含有能实现传统CPU功能的单元,又可以包含有传统GPU的并行计算单元。异构GPU可将AI网络中不同类型的操作对应的指令给不同的模块处理。示例性的,根据能够处理的内容或硬件结构类型的不同,异构GPU中的模块可被定义为不同的单元,例如:能够对张量进行处理的张量计算单元(可记为TU或张量单元)、负责通用计算任务的通用图形处理单元(可记为CU或通用计算单元)、负责数据搬运的数据搬运单元(可记为DMA)等。在处理AI网络时,可将AI网络中的一些具有固定特点的算子(例如卷积,池化,激活等)对应的指令给张量计算单元(Tu)执行,其他通用的算子或者自定义的算子对应的指令给通用计算单元(Cu)执行,具有大量算子的AI网络要处理的任务会需要经由多个不同的单元配合处理,若这些单元需要处理的任务数据存储在能够被快速读写的片上内存中,这些单元在能够访问片上内存的情况下执行效率和速度会特别快。
但是正如背景技术介绍的,片上内存的容量有限,且难以支持各种单元的同时访问,为了提升AI网络在AI处理器芯片上的执行效率和速度,需要对AI网络进行合理的切分,以获得更好的子网划分结果,使得每个子网的运行能够基于片上内存完成。但是,由于片上内存的容量很小,如何对AI网络进行合理的子网划分是一个关键的问题。
为了更好的理解本发明,下面首先介绍一下AI网络对应的任务在GPU上执行的原理。如图1所示的为一个DAG(Directed Acyclic Graph,有向无环图)结构的网络示意图,网络中的每一层均为有向无环图,各层可以有来自其他层的多个输入和多个输出,该部分AI网络包含四个任务节点,分别为Tu任务节点(张量计算任务)、Cu任务节点、Tu任务节点、Cu任务节点,该部分AI网络要处理的任务需要通过这几个任务节点配合进行,为了便于区分,将这些任务节点称之为Tu order1、Cu order2、Tu order3、Cu order4,并将任务的输入称之为Input order0,不同的任务节点之间有不同的依赖关系,所谓的依赖关系是任务节点之间的输入输出关系。从图1中可以看出,Tu order1的输入是 Input order0,Tu order1的输出有两个,一个输出到Cu order2,一个输出到Cu order4;Cu order2的输入是Tu order1的输出,Cu order2的输出是Tu order3的一个输入;Tu order3的输入有两个,一个是Cuorder2的输出,另一个是Input order0,Tu order3的输出是Cu order4的一个输入;Cuorder4的输入有两个,一个是Tu order3的输出,一个是Tu order1的输出。在没有对AI网络进行子网划分时,AI网络编译完以后加载到GPU上时,在片上内存的执行方式是执行完一个子网(AI网络没有划分子网时,一个任务节点可以理解为一个子网)对应的所有任务后再执行下一个子网,例如,以图1中所示的DAG网络为例,在没有进行合理的子网划分时,该网络在片上内存的执行方式是执行完Tu order1、再执行Cu order2,以此类推,对于每个任务节点,都需要从系统内存中获取执行该子网的任务所需的数据后在片上内存执行,并在执行完该子网的任务后将该任务节点的执行结果输出存储到系统内存,以释放片上内存的空间来存储下一个子网或其他网络的数据。
通过本发明的方案,可在将AI网络加载到GPU之前,在编译阶段就将有依赖的连续两个或者多个任务节点划分到一个子网,并且为最终划分好的子网生成子网对应的指令,可以节约子网内部的上游任务节点需要将输出结果从片上内存存储到系统内存、下游任务节点将上游任务节点的结果再从系统内存搬运到片上内存这些数据搬运阶段所带来的时间消耗和资源消耗,例如,如果在编译阶段将图1中的Tu order1、Cu order2合并为一个子网,在执行该子网对应的指令运行该子网时,Tu order1的输出结果就会暂存在片上内存,Cu order2的输入就不需要再从系统内存中去搬运该Tu order1的输出结果,直接在片上内存快速读取即可,极大提升了任务执行效率。
本发明的目的在于提供一种能够对AI网络进行合理的子网划分的方案,使得每个子网都能够完全基于片上内存执行,由此提升任务执行效率和速度。为了实现该目的,本发明对编译器进行改进,提出一种能够对AI网络进行合理子网划分的编译器方案。根据本发明的一个实施例,本发明提供一种编译器,其在编译待加载到AI处理器上的AI网络时,如图2所示,被配置为执行如下步骤对所述AI网络进行编译:
获取AI网络涉及的多个任务节点的节点信息,其中,节点信息用于反映任务节点之间的依赖关系,还可反映任务节点的类型,任务节点所需处理的数据类型;为所述多个任务节点中存在依赖关系的相邻任务节点预估节点合并后对应的性能增益,并在性能增益为正收益时,将对应的相邻任务节点合并为一个子网,得到经过合并后含有子网的AI网络;为AI网络生成子网的指令。
其中,此处的存在依赖关系的相邻任务节点是具有连续依赖关系的至少两个节点。可以为任意依赖连续的多个任务节点预估合并后对应的性能增益,并在性能增益为正收益时,将这些任务节点合并为一个子网,其中,合并后的任意一个子网运行一次所需的内存小于或等于AI处理器的片上内存。可以理解的是,可以进行不止一轮合并。例如,可以在合并过一次以后,具有合并后得到的AI网络,进行下一轮的性能增益计算,并基于新一轮的性能增益计算结果判断是否有必要继续进行合并。可以在为整个AI网络确定最终的子网划分结果后,为不适合再被合并的对象(有不适合再被合并的子网,可能有不适合被合并的节点)生成相应的指令,从而得到编译结果。在一些情况下,一个任务节点也可以作为一个子网。
此处的AI处理器可以是具有片上内存且可以用于运行AI网络的任何类型的处理器,例如可以是具有片上内存的GPU。
根据本发明的一个实施例,所述性能增益是根据预估节点或子网的运行时钟确定的。所述性能增益可以表示为运行时钟的差值,例如可表示为:多个任务节点合并前的运行时钟之和、多个任务节点合并为一个子网后的运行时钟的差值。例如,对于存在依赖关系的相邻任务节点:节点1和节点2,预估该两个相邻任务节点合并后对应的性能增益时,性能增益可以是:合并前的节点1的运行时钟+合并前的节点2的运行时钟-节点1与节点2合并为一个子网后的运行时钟。可以理解的是,此处仅以两个节点的情况为例,且,性能增益为正收益的计算表达式不唯一。
由于本发明对AI网络进行子网划分的目的之一就是为了节约数据搬运时间,提升执行效率和速度,因此,通过计算合并前后带来的运行时钟收益(性能增益)来衡量是否进行子网合并。需要说明的是,为了更加准确的衡量划分子网带来的性能增益,在每次计算性能增益时,一个任务节点的运行时钟为:从系统内存中搬运该任务节点所需数据到片上内存所需的时钟、该任务节点基于片上内存执行所需的时钟、将该任务节点的执行结果从片上内存搬运到系统内存所需的时钟三者之和。同理,一个子网的运行时钟为:从系统内存中搬运该子网所需数据到片上内存所需的时钟、该子网基于片上内存执行所需的时钟、将该子网的执行结果从片上内存搬运到系统内存所需的时钟三者之和。示例性的,对于一个子网,该子网所需的任务数据可能涉及:该子网内部节点待处理的特征图、权重数据、计算结果等,通过在编译器中提前执行这样的子网划分方案并生成相应的指令后,AI处理器可基于片上内存执行该子网对应的指令以完成子网的任务,任务处理过程中可以获取子网的部分或全部任务数据、对获取的数据进行处理,以及将处理结果进行存储。若子网的任务数据能够被尽量合理的放在片上内存,可被同一子网内的节点所涉及的硬件单元快速访问,有利于提升整个AI网络的执行效率。
通过在编译器中执行这样的子网划分方案,可以使得划分后的每个子网均在片上内存执行,从而节约子网内节点间的数据搬运时间。
其中,需要说明的是,由于实际应用中,遇到的不同的AI网络对应的节点类型、张量大小以及子网的结构等各不相同,因此,划分出的子网大小以及子网类型和结构也会各不相同,但是划分目标都是一致的,就是使得划分后的每个子网均能基于片上内存执行,因此可根据具体的AI网络的节点类型、张量大小以及网络结构等选择合适的子网划分方案,例如,可根据实际情况配置哪些节点不应被合并或什么情况下不允许合并等。
根据本发明的一个实施例,本发明提供的编译器在进行子网划分时:
可以AI网络中的一个任务节点为一个初始子网,获得AI网络的初始子网划分结果;基于初始子网划分结果,对AI网络进行多轮子网合并直至无合并性能增益以获得最终的子网划分结果,其中,每轮子网合并时,预估上一轮合并后得到的子网划分结果中任意两个相邻子网合并后的性能增益,并将其中性能增益为正收益且增益最大的两个子网合并为一个新的子网。编译器可为这种情况下最终的子网划分结果生成各子网对应的指令。可以理解的是,针对不同的AI网络,根据其节点类型、张量大小以及子网结构的不同,也可以每次以相邻的三个或三个以上的相邻子网为一组进行性能增益的预估计算。根据本发明的一个示例,如图3所示,其展示了一种线性AI网络,该网络包括8个任务节点,依次为Tuorder1、Cu order2、Tu order3、Tu order4、Cu order5、Tu order6、Tu order7、Tu order8。初始时,以Tu order1、Cu order2、Tu order3、Tu order4、Cu order5、Tu order6、Tuorder7、Tu order8分别为一个子网获得如图4所示的初始子网划分结果,然后以任意两个或两个以上的相邻子网为一组,预估其合并后的性能增益。假设以任意两个相邻子网为一组,并以Gij表示任务节点和任务节点合并后的性能增益,在第一轮合并时,分别计算G12(子网1、子网2合并为一个新的子网后的性能增益,其他增益类似)、G23、G34、G45、G56、G67、G78,找出G12、G23、G34、G45、G56、G67、G78中为表示性能增益为正收益且最大的一个值,假设G12、G34、G45、G67、G78均大于零,即表示相应的性能增益为正收益,且G12最大,那么就合并G12对应的子网1、子网2为一个新的子网12,第一轮合并后的网络如图5所示,然后在图4的基础上重复上述过程直至无合并性能增益,此处所谓的无合并性能增益是指合并子网后的增益为零或者负增益(表示即使合并了也无法缩短运行时间),也就是在某一轮计算合并后的性能增益时,全部都为负增益的话就停止合并。同理,假设以相邻的任意三个或三个以上的子网为一组时,与两个一组的情况类似,每轮合并时依次预估每组合并后子网的性能增益,并选择性能增益为正收益且最大的一组进行合并,由于原理与两个一组的类似,此处不再赘述。
根据本发明的另一个实施例,本发明提供的编译器在进行子网划分时:以AI网络的一个任务节点为一个初始子网,获得AI网络的初始子网划分结果;基于初始子网划分结果,对AI网络进行多轮子网合并直至无合并性能增益以获得最终的子网划分结果,其中,每轮合并时,预估上一轮合并后得到的子网划分结果中的任意两个相邻子网合并后的性能增益,将表示正收益的性能增益进行降序排列,并基于该降序排列依次进行性能增益对应的子网合并。编译器可基于这种情况下最终的子网划分结果生成各子网对应的指令。可以理解的是,针对不同的AI网络,根据其节点类型、张量大小以及子网结构的不同,也可以每次以相邻三个或三个以上的子网为一组进行性能增益预估,然后再进行排序。根据本发明的一个示例,仍旧以图3中的示例为例,初始子网划分结果如图4所示,然后以任意两个或两个以上的相邻子网为一组,预估其合并后的性能增益。假设以任意两个相邻子网为一组,并以Gij表示任务节点和任务节点合并后的性能增益,在第一轮合并时,分别计算G12、G23、G34、G45、G56、G67、G78,假设G12、G34、G45、G67、G78均大于零即为正收益,且正收益对应的降序排列为G12>G34>G45>G67>G78,按照该排序,从排序中最大的性能增益开始进行子网合并,即从合并子网1和子网2开始,如果某个合并子网的动作执行后周围的子网结构会发生变化,则跳过该子网合并动作,例如,在此处的示例中,首先进行了子网1和子网2的合并,然后进行子网3和子网4的合并,由于子网4已经和子网3合并了,如果再接着合并子网4和子网5,就会导致周围的子网结构发生变化,所以跳过子网4和子网5的合并,直接进行子网6和子网7的合并,并且由于在此例中本轮得到的G34、G45这两个性能增益都是针对相邻两个子网为一组计算的,所以本轮也不适合将子网3、子网4、子网5这三个子网在未经以三子网为一组进行性能增益预估计算的情况下直接一起合并,同理,由于子网7已经与子网6合并了,就不能再进行子网7和子网8的合并,经过该轮合并后,得到如图6所示的子网划分结果,然后在图6所示子网划分结果的基础上,重复上述预估计算和子网合并步骤,直至无合并性能增益以获得最终的子网划分结果。此处所谓的无合并性能增益仍然是指合并子网后的增益为零或者负增益,也就是在某一轮计算合并后的性能增益时,全部都为负增益的话就停止合并。同理,假设以任意三个或三个以上的子网为一组时,与两个一组类似,每轮合并时依次预估每组合并后子网的性能增益,并对为正收益的性能增益进行降序排列后进行子网合并,由于与两个一组的类似,此处不再赘述。
从上述实施例可以看出,无论采用哪种方案进行子网合并,均需要估算子网运行时钟,根据本发明的一个实施例,本发明可采用性能估算模型预估子网的运行时钟,其中,所述性能估算模型采用的计算规则可包括:子网的性能估算的运行时钟=子网任务量M*子网单位任务量的运行时钟C,且C=片上内存满载的总运行时钟T/片上内存满载时的总任务量N,T=处理片上内存满载情况下存放的子网总任务量N所需的子网总运行时钟。在一些情况下,T还可以被表示为=片上内存满载时从系统内存获取数据的时钟+满载时在片上内存执行的时钟+满载时存放执行结果到系统内存的时钟。根据不同AI网络的节点类型、张量大小以及子网结构的不同,片上内存满载任务量也是不同的,当子网越小时,片上内存可存放的任务量可能会更多即N更大,那么未被合并的子网对应的运行时钟计算值可能较小,处理速度快;相应的,当子网合并为一个新的子网后,虽然子网会变大,但是子网合并后,不仅可以节省合并前的子网之间的内存搬运,同时也可以带来子网不同节点之间的并行收益(合并后可能使得某些节点的任务可在不冲突的情况下被并行处理),即子网的总运行时钟T会更低,只不过会降低片上内存的任务量N,因此,相邻子网若合并为一个新的子网,新的子网对应的子网运行时钟也可能会是一个较小的值,所以可以比较合并前、合并后两种不同情况下的运行时钟对应的差值,从而判断子网合并是否能够带来较好的性能增益,实际情况下,合并子网带来的收益可能是正的,也有可能是负收益,所以本发明中通过对该性能增益进行计算来判断是否进行子网合并,只有子网合并可以带来正收益时才进行合并动作,因此本发明划分子网的思路也可被称为全局贪心合并划分子网,进行所有正收益的子网合并。可选的,为了更好的得知AI处理器在不同情况下对于AI网络的运行情况,可以调用预先为AI处理器和AI网络设置的性能模型来进行模拟和/或计算。本申请不对具体用于模拟或仿真AI处理器的具体模型表现形式进行限制,只要能够根据AI处理器的设计逻辑,在每一轮子网合并的过程中预估对于子网的运行时间即可。
通过采用本发明的方案可以对AI网络进行合理的子网划分,使得每个子网均能在片上内存执行,由于子网划分后子网均可在片上内存完成执行,即使子网的任务总量M大于片上内存满载任务量N,只需要在片上内存执行M/N次即可(若不能整除,则对于次数向上取整,每次执行的过程中,相应的任务数据可放在片上内存中),相较于未经子网划分的情况,仍然可以节约子网内节点数据之间的搬运时间。采用如上编译方案的编译器与AI处理器组合配置构建的AI网络任务处理系统,则可以极大的提升任务执行效率和速度。
为了进一步验证本发明的效果,将本发明的全局贪心合并划分子网的方案与传统的线性扫描划分子网的方案进行实验对比,采用线性扫描划分子网的方案和本发明的全局贪心合并划分子网的方案,对Inception v3网络和Mobilenet v1这两种网络分别进行子网划分,并记录子网执行时间,实验结果如图7所示。其中,众所周知,Inception v3 模型总共有46层,由11 个Inception 模块组成,每个Inception 模块包含Convolution算子(卷积处理节点)、AvgPool算子(平均池化节点)、MaxPool算子(最大池化节点)、Concatenate算子(卷积结果连接节点)等任务节点。Mobilenet v1网络包含Convolution算子(卷积处理节点)、AvgPool算子(平均池化节点)等任务节点。可将固定特点的算子(例如卷积,池化,激活等)给异构GPU的其中一种硬件单元(例如TU)执行,其他通用的算子或者自定义的算子给该异构GPU的另一种硬件单元(例如CU)执行。从图7可以看出,采用线性扫描思路对Inceptionv3网络进行子网划分的节点在任务节点concatenate4、concatenate8、concatenate10处,对Mobilenet v1网络进行子网划分的节点在Tu7和tu26处;采用本发明的全局贪心合并思路对Inception v3网络进行子网划分的节点在任务节点concatenate3、concatenate5、concatenate9,对Mobilenet v1网络进行子网划分的节点在Tu11。两种划分方案对相同的AI网络进行子网划分后, AI网络的执行时间差异不大,这意味着,即使本发明将子网划分的时机提前在编译期,基于编译期的子网划分结果编译并运行AI网络的情况下,也可以达到现有技术期望的效果,但是,现有技术这种线性扫描划分子网的思路实际上是由人工先验的方式选取较优的切分的集合再使用贪心切分的方式逐渐切开全图,这种方式是实验迭代的结果,需要多次实验性的运行网络来得到这些切分集合点,消耗的资源比较多,成本较高。而本发明的方案可以在编译期就实现,无需进行人工先验的方式进行实验性运行,既节省子网划分所需的时间又能达到比较优的结果,实用性更强。
基于同样的发明构思,本申请实施例还提供了一种AI网络编译方法,包括:获取AI网络;采用前述的编译器对AI网络进行编译,获得AI网络的子网划分结果;基于所述AI网络的子网划分结果,为划分确定的各子网生成子网对应的指令。该方法可应用于编译器。
基于同样的发明构思,本申请实施例还提供了一种AI网络处理方法,所述方法包括:获取采用前述的AI网络编译方法得到的编译结果,所述编译结果包括基于AI网络的子网划分结果为子网生成的指令;按照子网划分结果将为子网生成的指令加载给AI处理器执行。该方法可应用于加载器,可以应用于处理器的内核。
基于同样的发明构思,本申请实施例还提供了一种AI网络执行系统,所述系统包括前述的编译器、加载器、AI处理器,其中:所述编译器用于确定AI网络的子网划分结果,并基于子网划分结果对AI网络进行编译;所述加载器用于根据编译器确定的子网划分结果将AI网络对应的任务加载给AI处理器;所述AI处理器用于以子网为单位,基于片上内存执行AI网络对应的任务。AI处理器可以基于编译结果中为子网生成的指令,执行指令以完成相应子网的任务,在完成子网的任务的过程中,执行子网任务所需的数据能够被放在AI处理器的片上内存中。可选的,该系统可以呈现具有数据处理能力的电子设备或电子设备的集群。
本说明书的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例或实施方式的不同之处,在本申请的各个实施例之间相同或相似的部分相互参见即可,围绕发明构思的实现原理以及产生的技术效果可相互参照,例如,可参照前述关于编译器实施例的相应内容,此处不再赘述。在不冲突的情况下,本申请中的各实施例或实施方式可相互组合。
需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种编译器,其特征在于,所述编译器在编译待加载到AI处理器上的AI网络时,被配置为执行如下步骤对所述AI网络进行编译:
获取AI网络涉及的多个任务节点的节点信息,所述节点信息用于反映任务节点之间的依赖关系;
为所述多个任务节点中存在依赖关系的任意相邻任务节点预估节点合并后对应的性能增益,并将其中对应性能增益最大且为正收益的相邻任务节点合并为一个子网,得到经过合并后含有子网的AI网络;其中,所述性能增益是指相邻任务节点在合并前的运行时钟之和、所述相邻任务节点合并为一个子网后的子网运行时钟的差值,合并后得到的任意一个子网运行一次所需的内存小于或等于所述AI处理器的片上内存;
为AI网络生成子网对应的指令。
2.根据权利要求1所述的编译器,其特征在于,一个任务节点的运行时钟为从系统内存中搬运该任务节点所需数据到片上内存所需的时钟、该任务节点基于片上内存执行所需的时钟、将该任务节点的执行结果从片上内存搬运到系统内存所需的时钟三者之和;子网运行时钟为从系统内存中搬运该子网所需数据到片上内存所需的时钟、该子网基于片上内存执行所需的时钟、将该子网的执行结果从片上内存搬运到系统内存所需的时钟之和。
3.根据权利要求2所述的编译器,其特征在于,所述编译器还被配置为:
以AI网络中的一个任务节点为一个初始子网,获得AI网络的初始子网划分结果;
基于初始子网划分结果,对AI网络进行多轮子网合并直至无合并性能增益以获得最终的子网划分结果,其中,每轮子网合并时,预估上一轮合并后得到的子网划分结果中任意两个相邻子网合并后的性能增益,并将其中性能增益为正收益且增益最大的两个相邻子网合并为一个新的子网;
为所述最终的子网划分结果生成各子网对应的指令。
4.根据权利要求2所述的编译器,其特征在于,所述编译器还被配置为:
以AI网络的一个任务节点为一个初始子网,获得AI网络的初始子网划分结果;
基于初始子网划分结果,对AI网络进行多轮子网合并直至无合并性能增益以获得最终的子网划分结果,其中,每轮合并时,预估上一轮合并后得到的子网划分结果中任意两个相邻子网合并后的性能增益,将为正收益的所有性能增益进行降序排列,并基于该降序排列依次进行各性能增益对应的子网合并;
为所述最终的子网划分结果生成各子网对应的指令。
5.根据权利要求4所述的编译器,其特征在于,所述编译器还被配置为:在基于所述降序排列进行子网合并时,如果性能增益对应的子网合并会改变周围子网结构,则跳过该性能增益对应的子网合并。
6.根据权利要求3-5任一项所述的编译器,其特征在于,所述编译器还被配置为:在进行每一轮子网合并的过程中,根据相邻子网在合并前的运行时钟之和,以及所述相邻子网合并为一个新的子网后的子网运行时钟,确定相邻子网合并后的性能增益;其中,子网的运行时钟为:子网任务总量*子网对应的单位任务量的运行时钟。
7.根据权利要求6所述的编译器,其特征在于,所述子网对应的单位任务量的运行时钟为该子网对应的:AI处理器片上内存满载任务量的运行时钟/片上内存满载任务量。
8.一种AI网络编译方法,其特征在于,所述方法包括:
获取AI网络;
采用如权利要求1-7任一所述的编译器对所述AI网络进行编译,获得AI网络的子网划分结果;
基于所述AI网络的子网划分结果,为划分确定的各子网生成子网对应的指令。
9.一种AI网络处理方法,其特征在于,所述方法包括:
获取采用权利要求8所述的方法得到的编译结果,所述编译结果包括基于AI网络的子网划分结果为子网生成的指令;
按照子网划分结果将为子网生成的指令加载给AI处理器执行。
10.一种AI网络执行系统,其特征在于,所述系统包括如权利要求1-7任一所述的编译器、加载器、AI处理器,其中:
所述编译器用于确定AI网络的子网划分结果,并基于子网划分结果对AI网络进行编译;
所述加载器用于根据编译器确定的子网划分结果将AI网络对应的任务加载给AI处理器;
所述AI处理器用于以子网为单位,基于片上内存执行AI网络对应的任务。
CN202310523795.3A 2023-05-11 2023-05-11 一种编译器、ai网络编译方法、处理方法、执行系统 Active CN116301903B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310523795.3A CN116301903B (zh) 2023-05-11 2023-05-11 一种编译器、ai网络编译方法、处理方法、执行系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310523795.3A CN116301903B (zh) 2023-05-11 2023-05-11 一种编译器、ai网络编译方法、处理方法、执行系统

Publications (2)

Publication Number Publication Date
CN116301903A CN116301903A (zh) 2023-06-23
CN116301903B true CN116301903B (zh) 2023-08-08

Family

ID=86790855

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310523795.3A Active CN116301903B (zh) 2023-05-11 2023-05-11 一种编译器、ai网络编译方法、处理方法、执行系统

Country Status (1)

Country Link
CN (1) CN116301903B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003317073A (ja) * 2002-04-24 2003-11-07 Fuji Xerox Co Ltd ニューラルネットワーク処理装置
CN110495144A (zh) * 2017-06-29 2019-11-22 华为技术有限公司 网络拓扑结构映射方法及装置、终端、存储介质
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
CN111158790A (zh) * 2019-12-31 2020-05-15 清华大学 面向云端深度学习推理的fpga虚拟化方法
CN111880807A (zh) * 2020-07-31 2020-11-03 Oppo广东移动通信有限公司 深度学习编译方法、装置、设备及存储介质
CN112543918A (zh) * 2019-07-24 2021-03-23 华为技术有限公司 神经网络切分方法、预测方法及相关装置
CN113554157A (zh) * 2020-04-24 2021-10-26 上海商汤智能科技有限公司 数据处理方法及相关产品

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003317073A (ja) * 2002-04-24 2003-11-07 Fuji Xerox Co Ltd ニューラルネットワーク処理装置
CN110495144A (zh) * 2017-06-29 2019-11-22 华为技术有限公司 网络拓扑结构映射方法及装置、终端、存储介质
CN110766147A (zh) * 2018-07-25 2020-02-07 赛灵思公司 神经网络编译器架构及编译方法
CN112543918A (zh) * 2019-07-24 2021-03-23 华为技术有限公司 神经网络切分方法、预测方法及相关装置
CN111158790A (zh) * 2019-12-31 2020-05-15 清华大学 面向云端深度学习推理的fpga虚拟化方法
CN113554157A (zh) * 2020-04-24 2021-10-26 上海商汤智能科技有限公司 数据处理方法及相关产品
CN111880807A (zh) * 2020-07-31 2020-11-03 Oppo广东移动通信有限公司 深度学习编译方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
杜伟健 ; 陈云霁 ; 支天 ; 吴林阳 ; 陈小兵 ; 庄毅敏 ; .QingLong:一种基于常变量异步拷贝的神经网络编程模型.计算机学报.2020,(第04期),全文. *

Also Published As

Publication number Publication date
CN116301903A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
CN110766147B (zh) 神经网络编译器架构及编译方法
CN110490309B (zh) 一种用于神经网络的算子融合方法及其相关产品
CN113703775B (zh) 一种编译方法、装置、设备及存储介质
CN110764744A (zh) 用于神经网络计算的中间表示生成方法和装置
CN111160551B (zh) 计算图执行方法、计算机设备及存储介质
KR20210002676A (ko) 집약성을 개선하기 위한 머신 학습 모델들의 수정
US11556756B2 (en) Computation graph mapping in heterogeneous computer system
Moreira et al. Graph partitioning with acyclicity constraints
CN108875914B (zh) 对神经网络数据进行预处理和后处理的方法和装置
CN110490302B (zh) 一种神经网络编译优化方法、装置以及相关产品
CN112001491A (zh) 针对处理器确定神经网络架构的搜索方法和装置
CN112949815A (zh) 用于模型优化的方法和设备以及加速器系统
CN116680063B (zh) 任务调度方法、装置、计算系统、电子设备和存储介质
CN116301903B (zh) 一种编译器、ai网络编译方法、处理方法、执行系统
KR102326586B1 (ko) 큰 규모 분산 행렬 곱 처리 방법 및 그 장치
CN108021563B (zh) 一种指令间数据依赖的检测方法和装置
CN113496248A (zh) 训练计算机实施的模型的方法和设备
JP2002108958A (ja) 回路設計システム、回路設計方法および回路設計プログラムを格納したコンピュータ読取り可能な記録媒体
CN116227599A (zh) 一种推理模型的优化方法、装置、电子设备及存储介质
US11734003B2 (en) Non-transitory computer-readable recording medium, compilation method, and compiler device
WO2022252839A1 (zh) 计算流图调度方案的生成方法、装置、电子设备及计算机可读存储介质
CN112015472B (zh) 基于数据流架构的稀疏卷积神经网络加速方法及系统
CN117273115B (zh) 一种反向计算图的静态生成方法、装置、设备及介质
CN113780553B (zh) 一种基于高层次综合工具的深度学习模型优化方法及系统
US20220383133A1 (en) Processing of neural networks

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
GR01 Patent grant
GR01 Patent grant