专利类型 | 发明授权 | 法律事件 | 公开; 实质审查; 授权; |
专利有效性 | 有效专利 | 当前状态 | 授权 |
申请号 | CN202110562786.6 | 申请日 | 2021-05-24 |
公开(公告)号 | CN113313252B | 公开(公告)日 | 2022-10-25 |
申请人 | 东南大学; | 申请人类型 | 学校 |
发明人 | 陆生礼; 张广明; 张娟; 庞伟; | 第一发明人 | 陆生礼 |
权利人 | 东南大学 | 权利人类型 | 学校 |
当前权利人 | 东南大学 | 当前权利人类型 | 学校 |
省份 | 当前专利权人所在省份:江苏省 | 城市 | 当前专利权人所在城市:江苏省南京市 |
具体地址 | 当前专利权人所在详细地址:江苏省南京市江宁区东南大学路2号 | 邮编 | 当前专利权人邮编:211189 |
主IPC国际分类 | G06N3/08 | 所有IPC国际分类 | G06N3/08 ; G06N3/04 ; G06F7/50 |
专利引用数量 | 0 | 专利被引用数量 | 0 |
专利权利要求数量 | 8 | 专利文献类型 | B |
专利代理机构 | 南京瑞弘专利商标事务所 | 专利代理人 | 陈国强; |
摘要 | 本 发明 公开了一种基于脉动阵列的深度可分离卷积实现方法,采用M行N列个处理单元(Processing Element,PE单元)构成脉动阵列结构:在 水 平方向上,相邻的PE单元之间相互连接,左侧的PE单元可以将数据传递给右侧的PE单元;在垂直方向上,每个PE单元有各自的数据输入端口和数据输出端口。数据预取模 块 为计算阵列提供特征图数据和权重参数。加法树对每一列PE单元并行输出的部分和数据进行累加。每个PE单元内部主要由寄存器、数据选择器、加法器和乘法器构成。本发明采用上述结构的脉动阵列并配合数据预取模块和加法树,可以实现不同的数据流和数据重用方式,从而实现对标准卷积、点卷积和深度卷积的 加速 计算。 | ||
权利要求 | 1.一种基于脉动阵列的深度可分离卷积实现方法,其特征在于,包括数据预取模块和脉动阵列,所述脉动阵列包括若干个水平方向和垂直方向上排布的PE单元,所述PE单元对于其输入数据、部分和数据具有不同的处理方式;PE单元对于数据A,每个周期更新一次或者将数据A固定在PE单元内部的寄存器中重复使用;PE单元对于数据B,每个周期更新一次,并将上一周期的数据B传输给相邻的PE单元;对于部分和数据每个周期输出一次或将部分和在PE单元内部累加,并保存在PE单元内部,在特定的周期输出;脉动阵列水平方向上相邻的PE单元之间相互连接,垂直方向上每个PE单元有各自的数据输入端口和数据输出端口; |
||
说明书全文 | 一种基于脉动阵列的深度可分离卷积实现方法技术领域背景技术[0002] 卷积神经网络由于具有很高的准确性,已经广泛应用于图像分类、目标检测、目标跟踪等计算机视觉领域。然而,卷积神经网络是计算密集型的模型,在训练和部署期间,需要庞大的计算量和参数量,这影响了其在资源受限的嵌入式移动端的应用。 [0003] 为了满足实际应用的需求,网络架构向轻量级网络发展,轻量级网络架构广泛的采用深度可分离卷积代替标准卷积计算,将标准卷积分解为深度卷积与点卷积两部分,使神经网络具有更少的参数量和计算量,同时具有与大网络可比拟的准确率。 [0004] 然而,由于深度可分离卷积具有较少的数据重用和计算并行度,导致加速器在计算深度可分离卷积的时候计算阵列的利用率大幅降低,进而导致性能的降低。因此,设计一种基于脉动阵列的深度可分离卷积实现方法具有重要意义。 发明内容[0005] 为了充分利用深度可分离卷积的数据重用和计算并行度,本发明提供了一种基于脉动阵列的深度可分离卷积实现方法,采用灵活的数据流,提高了加速器计算阵列的利用率,实现了加速器对标准卷积和深度可分离卷积的加速计算。 [0006] 本发明为解决上述问题采用如下的技术方案: [0007] 一种基于脉动阵列的深度可分离卷积实现方法,包括数据预取模块和脉动阵列,所述脉动阵列包括若干个水平方向和垂直方向上排布的PE单元,所述PE单元对于其输入数据、部分和数据具有不同的处理方式;PE单元对于数据A,每个周期更新一次或者将数据A固定在PE单元内部的寄存器中重复使用;PE单元对于数据B,每个周期更新一次,并将上一周期的数据B传输给相邻的PE单元;对于部分和数据每个周期输出一次或将部分和在PE单元内部累加,并保存在PE单元内部,在特定的周期输出;脉动阵列水平方向上相邻的PE单元之间相互连接,垂直方向上每个PE单元有各自的数据输入端口和数据输出端口;脉动阵列在计算不同的卷积时,水平方向和垂直方向传输的数据是不同的,计算标准卷积和点卷积时,水平方向传输的是特征图数据,垂直方向传输的是权重参数;计算深度卷积时,水平方向传输的是权重参数,垂直方向传输的是特征图数据;所述数据预取模块根据脉动阵列执行不同的卷积计算时对特征图数据和权重参数的需求,为脉动阵列提供特征图数据和权重参数。 [0008] 进一步的,脉动阵列在计算标准卷积和点卷积时,采用同时在输入通道维度和输出通道维度进行并行计算的方式,在水平方向,每一行PE单元并行计算不同的输入通道,在垂直方向上,每一列PE单元计算不同的输出通道;在计算深度卷积时,采用同时在输入通道维度和卷积窗口维度进行并行计算的方式,在水平方向,每一行PE单元并行计算不同的输入通道,在垂直方向上,每一列PE单元计算不同的卷积窗口。 [0009] 进一步的,所述PE单元包括乘法器、加法器、寄存器和数据选择器,所述寄存器为3个,分别为寄存器I、寄存器II和寄存器Ⅲ,所述数据选择器为4个,分别为数据选择器I、数据选择器II、数据选择器Ⅲ和数据选择器Ⅳ, [0010] 输入数据A不需要被重用时,输入数据A直接经过数据选择器Ⅱ传入乘法器,然后和输入数据B相乘, [0011] 输入数据A需要被重用时,在第一个时钟周期,输入数据A经过数据选择器Ⅱ传入乘法器,同时,输入数据A经过数据选择器Ⅰ寄存在寄存器Ⅰ中,之后每个周期数据选择器Ⅱ选择寄存器Ⅰ的输出数据作为乘法器的输入,寄存器Ⅰ通过数据选择器Ⅰ将寄存器Ⅰ的输出作为寄存器Ⅰ的输入,实现将输入数据A一直寄存在寄存器Ⅰ中,实现输入数据A的重用; [0012] 输入数据B直接作为乘法器的另一个输入与输入数据A相乘,同时,输入数据B寄存在寄存器Ⅱ中,在下一个时钟周期从寄存器Ⅱ中输出,作为相邻PE单元的输入数据; [0013] 输出不需要在PE内部累加时,数据选择器Ⅳ选择乘法器的输出作为寄存器Ⅲ的输入,然后在下一个时钟周期将寄存器Ⅲ中的数据输出, [0014] 输出需要在PE内部累加时,数据选择器Ⅲ选择数据0与乘法器的输出在加法器中进行第一次相加,数据选择器Ⅳ选择加法器的输出作为寄存器Ⅲ的输入,在之后的累加过程中,数据选择器Ⅲ选择寄存器Ⅲ的输出与乘法器的输出在加法器中相加,在特定的时钟周期,将寄存器Ⅲ中的数据输出。 [0015] 进一步的,所述脉动阵列在执行点卷积计算时,特征图数据在阵列的水平方向的PE单元之间脉动传输,权重参数在阵列的垂直方向并行进入每一列PE单元,阵列中的每一列PE单元并行输出计算的部分和,部分和通过加法树进行累加。 [0016] 进一步的,所述脉动阵列在执行标准卷积计算时,将标准卷积3*3的卷积核分成9组1*1的卷积核,对于每一组1*1卷积核,执行与点卷积相同的计算数据流;与点卷积不同的是,9组1*1卷积核中不同组的1*1卷积核对应的输入特征点的位置是不全相同的;最终9组1*1卷积核计算出的9组部分和再进行累加即可得到最终的输出。 [0017] 进一步的,所述脉动阵列在执行深度卷积计算时,权重参数在阵列的水平方向的PE单元之间脉动传输,不同卷积窗口的特征图数据在阵列的垂直方向并行进入每一列PE单元,阵列中的每一列PE单元需要9个周期计算完一个卷积窗口,在计算期间,部分和在PE单元内部累加;一个卷积窗口计算完成之后,并行输出计算的结果。 [0018] 进一步的,所述脉动阵列在执行不同类型的卷积时,其不同方向上具有不同的数据重用方式。 [0019] 进一步的,在执行标准卷积和点卷积计算时,在脉动阵列水平方向上,特征图数据脉动传输,实现特征图数据在水平方向上不同PE单元之间的重用,在脉动阵列垂直方向上,更新的权重数据在计算期间暂存在每个PE单元内部的寄存器中,实现权重参数在PE单元内部的重用;在执行深度卷积计算时,在脉动阵列水平方向上权重参数脉动传输,实现权重参数在水平方向上不同PE单元之间的重用,在脉动阵列垂直方向上,每个周期都会更新特征图数据,特征图数据在脉动阵列中不重用。 [0020] 进一步的,所述数据预取模块包括特征图缓存区、寄存器阵列、数据分组模块、数据选择模块和权重缓存区,在执行标准卷积和点卷积时,数据预取模块直接将特征图缓存区中的特征图数据和权重缓存区中的权重参数传输给脉动阵列;在执行深度卷积时,对于特征图数据,数据预取模块首先从特征图缓存区读取一部分特征图数据(对于步长为1的情况,读取3行(N+2)列M个输入通道的特征图数据,对于步长为2的情况,读取3行(2*N‑1)列M个输入通道的数据),暂存在寄存器存储阵列中,然后通过数据分组模块将寄存器存储阵列中的数据分成N组,每一组具有3*3*M个数据,分别提供给脉动阵列中的N列PE单元,对于权重参数,则直接将权重参数从权重缓存区传输到脉动阵列;所述数据预取模块在脉动阵列计算的同时更新下一批特征图数据到寄存器存储阵列,减少脉动阵列等待下一批特征图数据的时间。数据分组模块实现了特征图数据的重用;数据选择模块的功能是选择将特征图缓存区中的数据传输给PE单元阵列或是将分组之后的数据传输给PE单元阵列。 [0021] 进一步的,数据预取模块在脉动阵列计算深度卷积时,将一部分特征图数据从特征图缓存区读取出来,暂存在寄存器存储阵列中,通过数据分组模块对寄存器存储阵列中的特征图数据进行分组,实现特征图数据的重用。数据预取模块在脉动阵列计算上一批特征图数据的期间,从特征图缓存区读取下一批特征图数据到寄存器存储阵列,减少脉动阵列等待下一批特征图数据的时间。 [0022] 本发明采用上述技术方案,具有以下有益效果: [0023] (1)脉动阵列具有不同维度的计算并行度,可以匹配点卷积、标准卷积和深度卷积的计算特点,提高了脉动阵列在计算三种卷积时的PE单元利用率。 [0025] 图1是本发明所采用的数据预取模块和脉动阵列的结构示意图; [0026] 图2是本发明中PE单元的结构示意图; [0027] 图3是脉动阵列中点卷积的数据流示意图; [0028] 图4是脉动阵列中标准卷积的数据流示意图; [0029] 图5是脉动阵列中深度卷积的数据流示意图。 具体实施方式[0030] 下面结合附图对发明的技术方案进行详细说明。 [0031] 实施例1 [0032] 图1是本发明所采用的数据预取模块和脉动阵列的结构示意图,图2为本发明所采用的PE单元内部结构示意图。PE单元包括乘法器、加法器、寄存器和数据选择器。对于每个PE单元,根据不同的卷积类型,数据A和数据B分别是特征图数据和权重参数,数据A可以保存在PE单元内部重复使用,数据B则在PE单元之间传递,实现不同PE单元之间的数据重用。对于计算出的部分和,可以在PE单元内部实现累加。 [0033] 下面分别对点卷积、标准卷积、深度卷积的数据流和数据重用做详细说明: [0034] (1)点卷积 [0035] 点卷积的数据流如图3所示,权重和特征图同时进入阵列。第一个时钟周期,M个输入通道的特征图数据和第一组M个权重同时进入脉动阵列最左侧的一列PE单元,第二个时钟周期,最左侧的一列PE单元继续更新特征图数据,但不更新权重数据。第二组M个权重进入第二列PE单元。经过N个周期之后,N组权重全部进入阵列,阵列中每个PE单元都具有各自的权重,之后权重不更新,等待M个通道的输入特征图数据全部进入阵列之后,再同时更新权重和对应的特征图。 [0036] 在脉动阵列的水平方向上,每个时钟周期输入特征图数据自左向右依次在相邻的PE单元之间传输,实现输入特征图数据在不同PE单元之间的重用。权重数据固定在每个PE单元内部,在计算的过程中重复使用。 [0037] 对于输出,每一列PE单元在每个时钟周期计算出M个乘积,M个乘积经过M输入的加法树进行累加。 [0038] (2)标准卷积 [0039] 标准卷积的数据流如图4所示。标准卷积的数据流与点卷积类似。将标准卷积3*3的卷积核分成9组1*1的卷积核,对于每一组1*1卷积核,执行与点卷积相同的计算方式。与点卷积不同的是,9组1*1卷积核中不同组的1*1卷积核对应的输入特征点的位置是不全相同的,对于特征图数据预取模块来说,需要根据不同的情况从特征图缓存区读取对应的特征图数据。最终9组1*1卷积核计算出的9组部分和再进行累加即可得到最终的输出。 [0040] (3)深度卷积 [0041] 深度卷积的数据流如图5所示。深度卷积每个输入通道只对应一个3*3的卷积核,只能利用卷积核的权重重用。以步长为1的3*3深度卷积为例,在开始计算之前,特征图数据预取模块需要预先取M个通道的特征图数据,每个通道取3行N+2列数据。当滑动窗口步长为1时,每个通道的3行N+2列数据可以拆分成N个3*3的卷积窗口,数据拆分的功能由数据预取模块实现。之后,开始计算,权重从水平方向进入阵列,N个卷积窗口的输入特征图数据从垂直方向进入阵列。 [0042] 由于阵列在计算的过程中对特征图数据的带宽需求比较高,在阵列计算的同时,数据预取模块会从特征图缓存区继续读取新的特征图数据,减少阵列等待特征图数据的时间。 [0043] 在计算的过程中,阵列中的每一列PE单元需要每个周期都更新特征图数据,特征图数据不能在阵列中重用。由于数据预取模块内部包含寄存器存储阵列,特征图不同卷积窗口之间重叠的数据可以在数据预取模块内部实现重用,弥补阵列不能重用特征图数据的不足。对于权重数据,其在脉动阵列中水平方向脉动传输,在不同的PE单元之间可以实现重用。 [0044] 本发明公开了一种基于脉动阵列的深度可分离卷积实现方法,该方法采用M行N列个处理单元(Processing Element,PE单元)构成脉动阵列结构:在水平方向上,相邻的PE单元之间相互连接,左侧的PE单元可以将数据传递给右侧的PE单元;在垂直方向上,每个PE单元有各自的数据输入端口和数据输出端口。数据预取模块为计算阵列提供特征图数据和权重参数。加法树对每一列PE单元并行输出的部分和数据进行累加。每个PE单元内部主要由寄存器、数据选择器、加法器和乘法器构成。本发明采用上述结构的脉动阵列并配合数据预取模块和加法树,可以实现不同的数据流和数据重用方式,从而实现对标准卷积、点卷积和深度卷积的加速计算。 [0045] 以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所作的任何改动均落入本发明的保护范围之内。 |