CN111191778A - 深度学习网络处理方法、装置与编译器 - Google Patents
深度学习网络处理方法、装置与编译器 Download PDFInfo
- Publication number
- CN111191778A CN111191778A CN201911414406.3A CN201911414406A CN111191778A CN 111191778 A CN111191778 A CN 111191778A CN 201911414406 A CN201911414406 A CN 201911414406A CN 111191778 A CN111191778 A CN 111191778A
- Authority
- CN
- China
- Prior art keywords
- network layer
- layer packet
- deep learning
- feature map
- target
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Image Analysis (AREA)
Abstract
本申请提供一种深度学习网络处理方法、装置与编译器,涉及深度学习技术领域,其中,该方法包括:将深度学习网络拆分为至少一个网络层分组,其中,每个网络层分组均包含多个连续的运算操作;对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片;对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块。本申请提供的技术方案可以在编译器内实现网络层分组的切分和分片的运算操作组合过程,有效提升深度学习处理器的性能。
Description
技术领域
本申请涉及深度学习技术领域,尤其涉及一种深度学习网络处理方法、装置与编译器。
背景技术
近年来,深度学习网络在各领域的应用日益广泛,基于深度学习网络的各种深度学习框架和终端也越来越多。其中,目前主流的深度学习框架有TensorFlow、MXNet、Keras和PyTorch等,终端包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics Processing Unit,GPU)和现场可编程门阵列(Field-Programmable GateArray,FPGA)等通用的深度学习处理器和其他专用的深度学习处理器等,这些深度学习框架和终端之间都有所不同,显而易见,以点到点方式实现不同深度学习框架对所有种类的终端进行后端支持是不现实的,因此一款支持前端各种深度学习框架和后端各种终端的编译器显得尤为重要。
基于上述需求,基于端到端优化编译器堆栈的深度学习编译器应运而生,它可以将不同的深度学习框架部署到多种终端上,同时满足轻量级、高性能、灵活性与开发容易等要求。另外,用户可以通过深度学习编译器优化深度学习网络的编译过程,以提升深度学习处理器的处理速度。
但是,基于目前的编译技术,深度学习处理器与片上存储单元仍需要进行频繁的访存,因而处理性能有限。
发明内容
有鉴于此,本申请提供一种深度学习网络处理方法、装置与编译器,用于提升后端深度学习处理器的性能。
为了实现上述目的,第一方面,本申请实施例提供一种深度学习网络处理方法,包括:
将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;
对于每个网络层分组,对网络层分组进行切分,得到网络层分组的分片,其中,网络层分组的每个分片在网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;
对于网络层分组的每个分片,将与分片相关的各运算操作组合在一起,编译生成目标代码块,分片相关的各运算操作包括该分片对应的所有子特征图所涉及的运算操作。
第二方面,本申请实施例提供一种深度学习网络处理装置,包括:
拆分模块,用于将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;
切分模块,用于对于每个网络层分组,对网络层分组进行切分,得到网络层分组的分片,其中,网络层分组的每个分片在网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;
组合模块,用于对于网络层分组的每个分片,将与分片相关的各运算操作组合在一起,编译生成目标代码块,分片相关的各运算操作包括分片对应的所有子特征图所涉及的运算操作。
第三方面,本申请实施例提供一种编译器,包括:存储单元和处理单元,存储单元用于存储计算机程序;处理单元用于在调用计算机程序时执行上述第一方面或第一方面的任一实施方式所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述第一方面或第一方面的任一实施方式所述的方法。
本申请实施例提供的深度学习网络处理方法、装置与编译器,通过在编译器内将深度学习网络拆分为至少一个均包含多个连续的运算操作的网络层分组,然后对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片,最后对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块,可以使后端的深度学习处理器在处理完一个分片在网络层分组中相关的所有op后才将该分片的处理结果存储在片上存储单元,从而可以大幅减少深度学习处理器与片上存储单元之间的访存,有效提升深度学习处理器的性能。
附图说明
图1为本申请实施例提供的垂直切分片的切分示意图;
图2为本申请实施例提供的水平切分片的切分示意图;
图3为本申请实施例提供的在垂直和水平两个方向切分片的切分示意图;
图4为本申请实施例提供的LG的切分示意图;
图5为本申请实施例提供的一种深度学习网络处理方法的流程示意图;
图6为本申请实施例提供的深度学习网络拆分示意图;
图7为本申请实施例提供的切分网络层分组的方法流程示意图;
图8为本申请实施例提供的另一种深度学习网络处理方法的流程示意图;
图9为本申请实施例提供的深度学习网络处理装置的结构示意图;
图10为本申请实施例提供的编译器的结构示意图。
具体实施方式
为了便于理解本申请施例中的技术方案,下面首先对本申请实施例中所涉及的部分术语进行解释:
op:operation,运算操作。深度学习网络中的一个独立操作,比如:卷积操作、池化操作和激活操作等;深度学习网络的一个网络层(layer)中包含至少一个op。
LG:Layer Group,网络层分组;通过对深度学习网络进行拆分得到,其中,每个LG包括多个连续的op。在具体拆分时,一个LG也可能只包含一个op,本申请实施例中是针对包含多个op的LG进行处理。
LG切分技术:对LG的特征图进行切分。其中,对单个op的切分操作过程如下:
对op的切分实际上是对op的输入特征图的切分,假设深度学习处理器的乘加(mac)单元是224个(每个mac单元处理一个像素点),内部存储单元为224×128(最大支持存储宽度为224、高度为128个像素点的图片)。下面举例说明三种切分方式:
一种垂直切tile的方式如下(op的输入特征图的尺寸为320×128像素):
图1为本申请实施例提供的垂直切分片的切分示意图,如图1所示,某op的输入特征图的宽度为320像素,超过深度学习处理器最大支持的图片宽度224,则将输入特征图垂直切分为两个分片,其中一个分片(TileA)的宽度为224+2p像素,另一个分片(TileB)的宽度为96+2p像素,其中,2p为切分分片时输入与输出之间的缩水尺寸,为了保证数据的完整性,每个分片均增加一缩水尺寸。对应的,该op可以被认为切分为两个op,其中一个op的输入特征图为TileA,另一个op的输入特征图为TileB,即同一op切分得到的各op的区别之处只是在于输入特征图不同。
一种水平切tile的方式如下(op的输入特征图的尺寸为224×200像素):
图2为本申请实施例提供的水平切分片的切分示意图,如图2所示,某op的输入特征图的高度为200像素,超过深度学习处理器最大支持的图片高度128,则将输入特征图水平切分为两个分片,其中一个分片(TileX)的高度为120+2p像素,另一个分片(TileY)的高度为80+2p像素。
一种垂直、水平方向均切tile的方式如下(op的输入特征图的尺寸为896×600像素):
图3为本申请实施例提供的在垂直和水平两个方向切分片的切分示意图,如图3所示,某op的输入特征图的尺寸为896×600像素,超过深度学习处理器最大支持的图片尺寸224×128,则将输入特征图垂直切分为4个分片,水平切分为5个分片,即共切分20个分片,每个分片的尺寸可以为(224+2p)×(120+2p)像素。
需要说明的是,上述举例的各切分方式下分片的数量是以需切分的最小分片数量为例进行示例性说明,在具体切分时也可以切分为更多的分片。
LG的切分过程与单个op的切分过程类似,在切分时,可以根据需求通过水平和/或垂直切分方式对LG中各op的输入特征图进行切分,得到LG的切片。图4为本申请实施例提供的LG的切分示意图,如图4所示,假设每个Layer均包含一个op,网络层Layer i、Layer i+1和Layer i+2都超过了深度学习处理器的支持范围,需要对其切tile处理;经过切分被切为n+1个分片(Tile0、Tile1、Tile2……Tilen-1、Tilen)。为了减少深度学习处理器与片上存储单元之间的访存,提高深度学习处理器的处理性能,本申请实施例中,可以使深度学习处理器对每个分片的多个op都进行处理后,再将各个分片的处理结果在片上存储单元进行拼接,形成layer i+3的输入特征图。需理解,LG中后一op的输入是前一op的输出,上述切片的数量是对LG的整体切分而言,即多个op相对应的分片认为是一个分片。
例如:某LG包含三个op:op1、op2和op3,LG被垂直切分一次,则LG包含两个分片,其中,在切分时,LG中每个op的输入特征图都被切分为两个子特征图(为了与LG的分片进行区别,此处采用子特征图表示op的分片),对应的,每个op可以认为被切分为两个子op,其中,op1对应子op:op11和op12,op2对应子op:op21和op22,op3对应子op:op31和op32,op11的输出是op21的输入,op21的输出是op31的输入;则每个分片对应三个子特征图,其中一个分片对应的子特征图分别是op11、op21和op31的输入特征图,另一个分片对应的子特征图分别是op12、op22和op32的输入特征图;每个分片的op也均为三个,其中一个分片的op包括op11、op21和op31,另一个分片的op包括op12、op22和op32。也就是说,LG的每个分片在该LG的每个op的输入特征图中都具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图,一个分片相关的各op包括该分片对应的所有子特征图所涉及的op。
Schedule原语:用于编写算法的计算过程(schedule)。下面列举几个基本的Schedule原语:
split:沿着一个轴向,将该轴分成多个分片,每个分片的大小由factor参数指定;
npart:沿着一个轴向,将该轴分成多个分片,分片的数量由npart参数指定;
reorder:按照指定的顺序对各个轴进行排序;
compute_at:有多个op时,将一个op的计算前移到另一个op的轴。
针对目前的深度学习网络处理方法对深度学习处理器提升的性能有限的技术问题,本申请实施例提供一种深度学习网络处理方法、装置和编译器,主要通过在编译器内将深度学习网络拆分为至少一个均包含多个连续的运算操作的网络层分组,然后对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片,最后对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块,来使深度学习处理器可以在处理完一个分片相关的所有运算操作后再将该分片的处理结果存储在片上存储单元,以有效提升深度学习处理器的性能。
下面以具体地实施例对本申请的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图5为本申请实施例提供的一种深度学习网络处理方法的流程示意图,如图5所示,本实施例提供的方法可以包括如下步骤:
S110、将深度学习网络拆分为至少一个网络层分组。
具体的,编译器在接收到前端深度学习框架输出的深度学习网络后,根据后端深度学习处理器可处理的最小网络结构确定拆分规则,按照该拆分规则对深度学习网络进行拆分(比如从深度学习网络的分叉点对树形结构的深度学习网络进行拆分,将树形网络拆分为多个分支(branch),对每个有向直线型branch再运用贪心算法或二分法拆分,拆成一个个的网络层分组,拆分出的每个网络层分组(LG)均包含多个连续的op,且多个连续的op是一种有向直线型连接关系,以使编译器可以将LG中的op组合在一起。下面举例说明深度学习网络的拆分方式。
图6为本申请实施例提供的深度学习网络拆分示意图,如图6所示,深度学习网络包含9个网络层L01~L09,其中,L01为卷积层,L02为池化层,L03为卷积层,L04为池化层,L05为池化层,L06为卷积层,L07为卷积层,L08和L09为池化层。在进行拆分时,基于分叉点,将该深度学习网络拆分为4个LG:LG1~LG4,其中,LG1中包含两个Layer:L01和L02,LG1中包含两个Layer:L03和L04,LG3中包含两个Layer:L05和L06,LG4中包含两个Layer:L07、L08和L09。
其中,每个网络层中包含至少一个op,对于同一网络层的op,各op之间为直线型连接关系,根据LG中各网络层之间的连接关系以及每个网络层中op的连接关系,即可确定LG中包含的op之间的顺序。以LG1为例,L01中包含op1,L02中包含op2和op3,其中,op3在op2之后执行,则LG1包含的多个连续op依次为:op1、op2和op3。
本实施例中,深度学习网络可以是卷积神经网络(Convolutional NeuralNetworks,CNN)或递归神经网络(Recursive Neural Network,RNN)等,具体的深度学习网络类型本实施例不做特别限定。
S120、对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片。
在拆分出各个LG后,就可以在每个LG内部实现分片的切分和op组合过程。在具体实现时,可以先对LG进行切分,然后对切分出的分片进行运算操作组合处理。其中,在切分LG时,可以采用图7所示的方法实现。图7为本申请实施例提供的切分网络层分组的方法流程示意图,如图7所示,该方法可以包括如下步骤:
S121、根据网络层分组中各运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定网络层分组的目标切分方向和目标分片数量。
具体的,深度学习处理器的硬件架构包括mac单元数量和内部存储空间大小(即内部存储单元的存储空间大小)等硬件参数,编译器可以根据这些硬件架构的相关硬件参数确定深度学习处理器单次可处理的图片尺寸,进而根据该图片尺寸和LG中各运算操作的输入特征图的尺寸来确定LG的目标切分方向和待切分的目标分片数量,以获得较优的切分结果。
其中,目标切分方向可以为一个或多个,即编译器可以在水平和/或垂直方向上切分LG;目标分片数量为网络层分组在目标切分方向下待切分的分片数量。
为了使得深度学习处理器可以连续处理一个分片的多个op,网络层分组中每个op的分片(即子特征图)数量需要相同(也即深度学习处理器要将LG的所有op都处理完,才会与片上存储单元进行一次数据交互),同时,需要保证每个op的分片尺寸均满足深度学习处理器的图片尺寸要求,因此,本实施例中,在确定目标切分方向和目标分片数量时,基于网络层分组中所有op的切分方向和最小分片数量来确定。在具体实现时可以至少采用如下两种方法实现:
第一种:根据每个op的切分方向和需切分的最小分片数量确定目标切分方向和目标分片数量,该方法具体可以包括如下步骤:
a1、对于网络层分组中的每个运算操作,根据该运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定该运算操作对应的切分方向和分片数量。
其中,每个运算操作对应的分片数量为该运算操作的输入特征图在该运算操作对应的切分方向下的最小分片数量。
本实施例中,每个op对应至少一个切分方向,即该op需要在至少一个切分方向上进行切分;对应的,每个op对应的分片数量包括该op的输入特征图在该op对应的每个切分方向下的最小分片数量。例如:某op需要在水平和垂直两个方向进行切分,则水平和垂直两个方向均对应一最小分片数量。
具体的,每个op对应的切分方向和分片数量根据该op的输入特征图的尺寸和深度学习处理器的硬件架构确定,例如前述图1-图3所示的切分示例,当op的输入特征图的宽度过宽时,需要在垂直方向进行切分,切分数量根据该宽度和深度学习处理器可处理的图片宽度确定,其中,深度学习处理器可处理的图片尺寸根据深度学习处理器的硬件架构确定;当op的输入特征图的高度过高时,需要在水平方向进行切分,切分数量根据该高度和深度学习处理器可处理的图片高度确定。
a2、将确定出的各切分方向确定为网络层分组的目标切分方向。
具体的,以切分方向包括水平和垂直两个方向为例,若每个op对应的切分方向均只包含水平方向,则将水平方向确定为目标切分方向;若每个op对应的切分方向均只包含垂直方向,则将垂直方向确定为目标切分方向;若存在有的op对应的切分方向包含水平方向,有的op对应的切分方向包含垂直方向,或者,有op对应的切分方向同时包含水平方向和垂直方向,则将水平方向和垂直方向确定为目标切分方向。
a3、对于每个目标切分方向,将目标切分方向下数量最多的分片数量确定为网络层分组在目标切分方向下的目标分片数量。
具体的,在确定出目标切分方向后,对于每个目标切分方向来说,可以从各op的输入特征图在该目标切分方向下的分片数量中选出最多的分片数量,作为该LG在目标切分方向下的目标分片数量。
举例说明,某LG包含3个op,第一个op需要在水平方向上切分为4个tile,在垂直方向上切分为5个tile;第二个op需要在水平方向上切分为3个tile,在垂直方向上切分为4个tile;第三个op需要在水平方向上切分为2个tile,在垂直方向上切分为3个tile,则确定的目标切分方向包括水平方向和垂直方向。对于水平方向,从4、3和2中选出最大的分片数量,即4,将其确定为LG在水平方向下的目标分片数量;对于垂直方向,从5、4和3中选出最大的分片数量,即5,将其确定为LG在垂直方向下的目标分片数量。
通常情况下,LG中各op的输入特征图的尺寸是规律变化的,方便起见,在确定目标切分方向和目标分片数量时,也可以将各个运算操作中分片数量最多的运算操作对应的切分方向和分片数量分别确定为网络层分组的目标切分方向和目标分片数量。
需要说明的是,步骤a2与a3之间没有严格的时序执行关系,步骤a2与a3也可以交叉执行,即可以在确定出某个目标切分方向后,确定该目标切分方向对应的目标分片数量,然后再确定下一个目标切分方向和其对应的目标分片数量。
第二种:根据每个op的切分方向确定目标切分方向,根据分片数量范围确定目标分片数量,该方法具体可以包括如下步骤:
b1、根据网络层分组中各运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定网络层分组的目标切分方向和分片数量范围。
具体的,目标切分方向的确定过程与上述第一种方法中确定目标切分方向的过程类似,此处不再赘述。
本实施例中,分片数量范围指示了网络层分组的输入特征图在目标切分方向下的最小分片数量和最大分片数量。
在具体确定分片数量范围时,可以根据LG中各op的输入特征图的尺寸和深度学习处理器的硬件架构确定出每个op在各目标切分方向下的最小分片数量,进而可以确定出LG在各目标切分方向下的最小分片数量,该过程与上述第一种方法中确定目标分片数量的过程类似,此处不再赘述。
另外,根据各op的输入特征图在每个目标切分方向下的最小尺寸和深度学习处理器的硬件架构,可以确定LG在每个目标切分方向下的最大分片数量。具体的,可以根据深度学习处理器的硬件架构(例如:mac单元包含的mac数量)确定分片应切分的最小尺寸,在具体确定时可以以减少资源浪费为准提高处理速度进行确定;在确定出分片的最小尺寸后,则可以根据各op的输入特征图在每个目标切分方向下的最小尺寸确定出LG在各目标切分方向下的最大分片数量。
b2、根据分片数量范围确定网络层分组的目标分片数量。
具体的,在确定出分片数量范围后,编译器可以评估深度学习处理器在该分片数量范围内各分片数量下的性能,然后选出性能最优情况下的分片数量作为LG的目标分片数量。
S122、根据目标切分方向和目标分片数量对网络层分组进行切分。
具体的,在确定出目标切分方向和目标分片数量后,可以采用split或npart原语对LG进行切分。
例如:目标切分方向包括垂直和水平两个方向,这两个方向下的目标分片数量均为2,即将LG在垂直方向切分为两个tile,在水平方向切分为两个tile,schedule过程可以如下所示:
w_axis_outer,w_axis_inner=s[end_op].split(w_axis,npart=2)//垂直切分
h_axis_outer,h_axis_inner=s[end_op].split(h_axis,npart=2)//水平切分
上述是以采用npart原语指定tile个数来切分最后一个op(end_op)为例进行示例性说明,在具体切分时,也可以采用split原语,通过factor参数指定tile尺寸来切分op。
本实施例中,对LG的所有op的输入特征图的切分是采用Schedule原语compute_at完成的。该用于组合op的原语(compute_at)可以基于op之间的输入输出关系,在组合op时根据后一个op的切分方式推算前一个op的尺寸(也即对前一个op进行切分,需注意,这里连续的两个op是输入与输出关系(前一个op的输出是后一个op的输入)),因此,本实施例中,在切分时,只需对LG的最后一个op的输入特征图进行切分,然后用comput_at原语用倒推的方式组合分片在LG内的其他op,就可以实现LG的切分以及各分片的op组合过程。上述切分举例即以最后一个op的切分为例进行示例性说明,后续也在此基础上进行示例。
S130、对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块。
具体的,在切分出tile后,可以采用compute_at原语组合每个tile的op。其中,对于LG中某个tile来说,与其相关的各op包括该tile在该LG的每个op的输入特征图中对应的子特征图涉及的op,例如:最后一个op的某个tile,与其相关的op包括以该tile对应的最后一个子特征图为输入的最后一个op,以及LG中从第一个op开始,生成该最后一个子特征图所需的所有op。
对于某个tile的op组合操作,其schedule过程可以为:将tile的op从后向前依次导入,从tile的最后一个op开始,每个op按照指定的组合方向(例如w_axis_outer)compute_at前一个op。
为了使op组合操作有序的执行,本实施例中,在执行op组合操作前,可以先确定网络层分组的分片的遍历顺序,然后在执行op组合操作时,根据该遍历顺序遍历网络层分组的分片,对于遍历到的每个分片,将与该分片相关的各运算操作组合在一起。
此时,可以根据该遍历顺序确定分片的组合方向,然后按照该组合方向将与该分片相关的各运算操作按从后往前的顺序依次组合在一起。
编译器编译完上述schedule过程,可以生成目标代码块,然后再对目标代码块经过后续的编译,可以得到最终的编译结果(生成目标库函数)。后端的深度学习处理器在根据该编译结果处理深度学习神经网络时,就可以在处理完一个分片在网络层分组中相关的所有op后才将该分片的处理结果存储在片上存储单元,从而可以大幅减少深度学习处理器与片上存储单元之间的访存,有效提升深度学习处理器的性能。
本实施例提供的深度学习网络处理方法,通过在编译器内将深度学习网络拆分为至少一个均包含多个连续的运算操作的网络层分组,然后对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片,最后对于网络层分组的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块,可以使后端的深度学习处理器在处理完一个分片在网络层分组中相关的所有op后才将该分片的处理结果存储在片上存储单元,从而可以大幅减少深度学习处理器与片上存储单元之间的访存,有效提升深度学习处理器的性能。
图8为本申请实施例提供的另一种深度学习网络处理方法的流程示意图,本实施例是对图5所示实施例的进一步优化补充。在上述图5所示实施例的基础上,如图8所示,本实施例提供的方法可以包括如下步骤:
S210、将深度学习网络拆分为至少一个网络层分组。
S220、对于每个网络层分组,对该网络层分组进行切分,得到网络层分组的分片。
上述两个步骤可参考上述图5所示实施例对应步骤S110和S129的相关描述,在此不再赘述。
S230、确定网络层分组的分片的遍历顺序。
具体的,可以采用reorder原语指定遍历该LG的分片的顺序。
举例说明,以前述举例为例,LG在垂直方向切分为2个tile,水平方向切分为2个tile;按照先水平后垂直的方向对4个tile进行遍历(每个tile内部则也是先水平、后垂直方向进行计算),schedule过程可以如下所示:
s[end_op].reorder(h_axis_outer,w_axis_outer,h_axis_inner,w_axis_inner)
上述只是以先水平后垂直为例进行示例性说明,本实施例中,具体的遍历顺序也可以是其他顺序,在具体实现时可以根据需要设置,以尽量提升运算速度为准。
S240、根据该遍历顺序遍历网络层分组的分片,对于遍历到的每个分片,将与该分片相关的各运算操作组合在一起,编译生成目标代码块。
具体的,在确定了遍历顺序后,就可以按照该遍历顺序遍历LG的tile,对于每个tile,采用compute_at原语将与该tile相关的各op按从后往前的顺序依次组合在一起。
本实施例中,遍历顺序在指示分片之间遍历顺序之外,也指示了分片内部的计算顺序,在具体组合时,则可以根据遍历顺序确定组合方向,按照该组合方向将与该分片相关的各op按从后往前的顺序依次组合在一起,以保证组合操作的准确性。
例如:遍历顺序为先水平后垂直,则compute_at中指示组合方向的参数值为w_axis_outer;若指定的遍历顺序为先垂直后水平,compute_at中指示组合方向的参数值则为h_axis_outer。
本实施例提供的深度学习处理方法,通过在组合分片的运算操作时,按照预先确定的遍历顺序遍历分片,对遍历到的分片进行运算操作组合操作,可以使编译器按照指定的遍历顺序有序的执行分片的运算操作组合操作,提高组合操作的准确性。
基于同一发明构思,作为对上述方法的实现,本申请实施例提供了一种深度学习网络处理装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
图9为本申请实施例提供的深度学习网络处理装置的结构示意图,如图9所示,本实施例提供的装置包括:
拆分模块110,用于将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;
切分模块120,用于对于每个网络层分组,对所述网络层分组进行切分,得到所述网络层分组的分片,其中,所述网络层分组的每个分片在所述网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;
组合模块130,用于对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起,编译生成目标代码块,所述分片相关的各运算操作包括所述分片对应的所有子特征图所涉及的运算操作。
作为本申请实施例一种可选的实施方式,所述切分模块120具体用于:
根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,所述目标分片数量为所述网络层分组在所述目标切分方向下待切分的分片数量;
根据所述目标分片数量和所述目标切分方向对所述网络层分组进行切分。
作为本申请实施例一种可选的实施方式,所述切分模块120具体用于:
对于所述网络层分组中的每个运算操作,根据所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定所述运算操作对应的切分方向和分片数量,所述运算操作对应的分片数量为所述运算操作的输入特征图在所述运算操作对应的切分方向下的最小分片数量;
将确定出的各切分方向确定为所述网络层分组的目标切分方向;
对于每个目标切分方向,将所述目标切分方向下数量最多的分片数量确定为所述网络层分组在所述目标切分方向下的目标分片数量。
作为本申请实施例一种可选的实施方式,所述切分模块120具体用于:
根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定所述网络层分组的目标切分方向和分片数量范围,所述分片数量范围指示了所述网络层分组的输入特征图在所述目标切分方向下的最小分片数量和最大分片数量;
根据所述分片数量范围确定所述网络层分组的目标分片数量。
作为本申请实施例一种可选的实施方式,所述切分模块120具体用于:
对所述网络层分组的最后一个运算操作的输入特征图进行切分;
所述组合模块130具体用于:采用运算操作组合原语将与所述分片相关的各运算操作组合在一起。
作为本申请实施例一种可选的实施方式,所述装置还包括:
确定模块140,用于在所述切分模块120对所述网络层分组进行切分之后,所述组合模块130对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起之前,确定所述网络层分组的分片的遍历顺序;
所述组合模块130具体用于:根据所述确定模块140确定的遍历顺序遍历所述网络层分组的分片,对于遍历到的每个分片,将与所述分片相关的各运算操作组合在一起。
作为本申请实施例一种可选的实施方式,所述组合模块130具体用于:
根据所述遍历顺序确定所述分片的组合方向;
按照所述组合方向将与所述分片相关的各运算操作按从后往前的顺序依次组合在一起。
本实施例提供的深度学习网络处理装置可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。
基于同一发明构思,本申请实施例还提供了一种编译器。图10为本申请实施例提供的编译器的结构示意图,如图10所示,本实施例提供的编译器包括:存储单元210和处理单元220,存储单元210用于存储计算机程序;处理单元220用于在调用计算机程序时执行上述方法实施例所述的方法。
本实施例提供的编译器可以执行上述方法实施例,其实现原理与技术效果类似,此处不再赘述。
本申请实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例所述的方法。
本领域技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。
处理单元可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储单元可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储,信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (10)
1.一种深度学习网络处理方法,其特征在于,包括:
将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;
对于每个网络层分组,对所述网络层分组进行切分,得到所述网络层分组的分片,其中,所述网络层分组的每个分片在所述网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;
对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起,编译生成目标代码块,所述分片相关的各运算操作包括所述分片对应的所有子特征图所涉及的运算操作。
2.根据权利要求1所述的方法,其特征在于,所述对所述网络层分组进行切分,包括:
根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,所述目标分片数量为所述网络层分组在所述目标切分方向下待切分的分片数量;
根据所述目标分片数量和所述目标切分方向对所述网络层分组进行切分。
3.根据权利要求2所述的方法,其特征在于,所述根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,包括:
对于所述网络层分组中的每个运算操作,根据所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定所述运算操作对应的切分方向和分片数量,所述运算操作对应的分片数量为所述运算操作的输入特征图在所述运算操作对应的切分方向下的最小分片数量;
将确定出的各切分方向确定为所述网络层分组的目标切分方向;
对于每个目标切分方向,将所述目标切分方向下数量最多的分片数量确定为所述网络层分组在所述目标切分方向下的目标分片数量。
4.根据权利要求2所述的方法,其特征在于,所述根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构,确定所述网络层分组的目标切分方向和目标分片数量,包括:
根据所述网络层分组中各所述运算操作的输入特征图的尺寸和深度学习处理器的硬件架构确定所述网络层分组的目标切分方向和分片数量范围,所述分片数量范围指示了所述网络层分组的输入特征图在所述目标切分方向下的最小分片数量和最大分片数量;
根据所述分片数量范围确定所述网络层分组的目标分片数量。
5.根据权利要求1所述的方法,其特征在于,所述对所述网络层分组进行切分,包括:
对所述网络层分组的最后一个运算操作的输入特征图进行切分;
所述将与所述分片相关的各运算操作组合在一起,包括:
采用运算操作组合原语将与所述分片相关的各运算操作组合在一起。
6.根据权利要求1-5任一项所述的方法,其特征在于,在所述对所述网络层分组进行切分之后,所述对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起之前,所述方法还包括:
确定所述网络层分组的分片的遍历顺序;
所述对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起,包括:
根据所述遍历顺序遍历所述网络层分组的分片,对于遍历到的每个分片,将与所述分片相关的各运算操作组合在一起。
7.根据权利要求6所述的方法,其特征在于,所述将与所述分片相关的各运算操作组合在一起,包括:
根据所述遍历顺序确定所述分片的组合方向;
按照所述组合方向将与所述分片相关的各运算操作按从后往前的顺序依次组合在一起。
8.一种深度学习网络处理装置,其特征在于,包括:
拆分模块,用于将深度学习网络拆分为至少一个网络层分组,每个网络层分组均包含多个连续的运算操作;
切分模块,用于对于每个网络层分组,对所述网络层分组进行切分,得到所述网络层分组的分片,其中,所述网络层分组的每个分片在所述网络层分组的每个运算操作的输入特征图中具有对应的子特征图,每个分片对应的各子特征图中后一子特征图为前一子特征图对应的运算操作的输出特征图;
组合模块,用于对于所述网络层分组的每个分片,将与所述分片相关的各运算操作组合在一起,编译生成目标代码块,所述分片相关的各运算操作包括所述分片对应的所有子特征图所涉及的运算操作。
9.一种编译器,其特征在于,包括:存储单元和处理单元,所述存储单元用于存储计算机程序;所述处理单元用于在调用计算机程序时执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414406.3A CN111191778B (zh) | 2019-12-31 | 2019-12-31 | 深度学习网络处理方法、装置与编译器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911414406.3A CN111191778B (zh) | 2019-12-31 | 2019-12-31 | 深度学习网络处理方法、装置与编译器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111191778A true CN111191778A (zh) | 2020-05-22 |
CN111191778B CN111191778B (zh) | 2021-11-30 |
Family
ID=70709698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911414406.3A Active CN111191778B (zh) | 2019-12-31 | 2019-12-31 | 深度学习网络处理方法、装置与编译器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111191778B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112116071A (zh) * | 2020-09-07 | 2020-12-22 | 地平线(上海)人工智能技术有限公司 | 神经网络计算方法、装置、可读存储介质以及电子设备 |
CN113485836A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
US11789710B2 (en) | 2021-09-17 | 2023-10-17 | Samsung Electronics Co., Ltd. | Compilation method and apparatus with neural network |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
CN107679539A (zh) * | 2017-09-18 | 2018-02-09 | 浙江大学 | 一种基于局部感知野的单卷积神经网络局部信息与全局信息整合方法 |
US20180293493A1 (en) * | 2017-04-10 | 2018-10-11 | Intel Corporation | Abstraction layers for scalable distributed machine learning |
CN108875914A (zh) * | 2018-06-01 | 2018-11-23 | 北京地平线信息技术有限公司 | 对神经网络数据进行预处理和后处理的方法和装置 |
CN109993277A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 用于深度神经网络的计算优化机制 |
US10346944B2 (en) * | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
US10417731B2 (en) * | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
CN110288509A (zh) * | 2017-04-24 | 2019-09-27 | 英特尔公司 | 计算优化机制 |
-
2019
- 2019-12-31 CN CN201911414406.3A patent/CN111191778B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106650922A (zh) * | 2016-09-29 | 2017-05-10 | 清华大学 | 硬件神经网络转换方法、计算装置、编译方法和神经网络软硬件协作系统 |
US10346944B2 (en) * | 2017-04-09 | 2019-07-09 | Intel Corporation | Machine learning sparse computation mechanism |
US20180293493A1 (en) * | 2017-04-10 | 2018-10-11 | Intel Corporation | Abstraction layers for scalable distributed machine learning |
US10417731B2 (en) * | 2017-04-24 | 2019-09-17 | Intel Corporation | Compute optimization mechanism for deep neural networks |
CN110288509A (zh) * | 2017-04-24 | 2019-09-27 | 英特尔公司 | 计算优化机制 |
CN107679539A (zh) * | 2017-09-18 | 2018-02-09 | 浙江大学 | 一种基于局部感知野的单卷积神经网络局部信息与全局信息整合方法 |
CN109993277A (zh) * | 2017-12-29 | 2019-07-09 | 英特尔公司 | 用于深度神经网络的计算优化机制 |
CN108875914A (zh) * | 2018-06-01 | 2018-11-23 | 北京地平线信息技术有限公司 | 对神经网络数据进行预处理和后处理的方法和装置 |
Non-Patent Citations (2)
Title |
---|
XIANFU CHEN: "Multi-Tenant Cross-Slice Resource Orchestration:A Deep Reinforcement Learning Approach", 《IEEE》 * |
宫磊: "可重构平台上面向卷积神经网络的异构多核加速方法研究", 《中国博士学位论文全文数据库》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112116071A (zh) * | 2020-09-07 | 2020-12-22 | 地平线(上海)人工智能技术有限公司 | 神经网络计算方法、装置、可读存储介质以及电子设备 |
CN113485836A (zh) * | 2021-07-21 | 2021-10-08 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
CN113485836B (zh) * | 2021-07-21 | 2024-03-19 | 瀚博半导体(上海)有限公司 | 一种基于张量切分的张量处理方法和张量处理系统 |
US11789710B2 (en) | 2021-09-17 | 2023-10-17 | Samsung Electronics Co., Ltd. | Compilation method and apparatus with neural network |
Also Published As
Publication number | Publication date |
---|---|
CN111191778B (zh) | 2021-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111191778B (zh) | 深度学习网络处理方法、装置与编译器 | |
US20220012593A1 (en) | Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization | |
Zachariadis et al. | Accelerating sparse matrix–matrix multiplication with GPU Tensor Cores | |
US11816559B2 (en) | Dilated convolution using systolic array | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
US20080307189A1 (en) | Data partitioning via bucketing bloom filters | |
CN111831254A (zh) | 图像处理加速方法、图像处理模型存储方法及对应装置 | |
US8321492B1 (en) | System, method, and computer program product for converting a reduction algorithm to a segmented reduction algorithm | |
CN110390075B (zh) | 矩阵预处理方法、装置、终端及可读存储介质 | |
CN112668708B (zh) | 一种提高数据利用率的卷积运算装置 | |
CN110413539B (zh) | 一种数据处理方法及装置 | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
CN111064471A (zh) | 数据处理方法、装置及电子设备 | |
US11501145B1 (en) | Memory operation for systolic array | |
KR20210012882A (ko) | 컨볼루션 뉴럴 네트워크의 성능 향상을 위한 방법 및 시스템 | |
US10268798B2 (en) | Condition analysis | |
KR20100042052A (ko) | 영상처리를 위한 데이터 처리 장치 및 방법 | |
US20210149985A1 (en) | Method and apparatus for processing large-scale distributed matrix product | |
EP4328748A1 (en) | Data processing method and apparatus, computer device, computer-readable storage medium, and computer program product | |
CN116484947A (zh) | 算子的自动生成方法、装置、设备及介质 | |
CN113515674A (zh) | 时序图随机游走的采样方法及装置 | |
CN115102906A (zh) | 一种基于深度强化学习驱动的负载均衡方法 | |
CN110955380B (zh) | 访存数据生成方法、存储介质、计算机设备和装置 | |
US20220200803A1 (en) | Block operation method, electronic device, and storage medium | |
CN112507244A (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 |
Address after: 518000 1/F, 17 Building, Shenzhen Dayun Software Town, 8288 Longgang Avenue, Henggang Street, Longgang District, Shenzhen City, Guangdong Province Applicant after: Shenzhen Yuntian lifeI Technology Co., Ltd Address before: 518000 1/F, 17 Building, Shenzhen Dayun Software Town, 8288 Longgang Avenue, Henggang Street, Longgang District, Shenzhen City, Guangdong Province Applicant before: SHENZHEN INTELLIFUSION TECHNOLOGIES Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |