首页> 中国专利> 一种基于非结构化稀疏的卷积神经网络加速系统

一种基于非结构化稀疏的卷积神经网络加速系统

摘要

本申请提供一种基于非结构化稀疏的卷积神经网络加速系统,包括:片外存储以及与所述片外存储网络连接的加速装置。所述加速装置包括:偏置缓存区、权重缓存区、激活缓存区、处理模块、输入重叠区、可配置的累加模块、后处理模块以及顶层控制器。本申请中,缓存区和处理模块之间设置有灵活的片上网络,使得本方案中的计算流程更为灵活。另外,可配置的累加模块能够降低计算过程中的加法树延时,提升计算效率。

著录项

  • 公开/公告号CN113158132A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 南京风兴科技有限公司;

    申请/专利号CN202110460210.9

  • 发明设计人 谢逍如;王丹阳;王中风;

    申请日2021-04-27

  • 分类号G06F17/15(20060101);G06F7/498(20060101);G06N3/04(20060101);G06N3/063(20060101);

  • 代理机构11363 北京弘权知识产权代理有限公司;

  • 代理人逯长明;许伟群

  • 地址 210032 江苏省南京市江北新区星火路17号创智大厦B座601室

  • 入库时间 2023-06-19 11:57:35

说明书

技术领域

本申请涉及加速器技术领域,具体涉及一种基于非结构化稀疏的卷积神经网络加速系统。

背景技术

目前,DCNN(Deep convolutionalneural networks,深度卷积神经网络)被广泛应用在许多计算机视觉方面的任务,例如:图像分类以及目标识别等。为了达到更好的性能,DCNN模型倾向于变得更宽更深,因此引入了大量增加的参数数量,使得计算复杂度以及存储需求都在大批量增长。网络压缩技术,例如剪枝,可以在精度可接受的情况下大幅度减少模型的计算复杂度。剪枝算法可以分为两类:结构化稀疏和非结构化稀疏。相对于结构化稀疏,非结构化稀疏可以在相同精度情况下达到更好的压缩效率,但同时也在非零参数分布上存在更多的不规则性。

在具体实现时,由于DCNN低效的性能或大量的能量消耗,通用加速平台例如CPU以及GPU不能达到预期的加速效果。因此,许多基于现场可编程门阵列(field-programmablegate array,FPGA)以及专用集成电路(application-specific integratedcircuit,ASIC)平台的专用硬件加速器被研制开发,以实现更好的能耗效率以及更快的处理速度。目前加速器主要针对计算规律的稠密神经网络或者结构化稀疏神经网络。针对于非结构化稀疏神经网络,由于非零数据的不规则分布,如何高效支持稀疏计算成为专用加速器一个问题。如果不做特殊设计,非结构化稀疏神经网络无法将压缩比映射到硬件执行速度。如果做过多特殊设计,硬件资源冗余巨大,不足以做到高效加速。因此,对于非结构化稀疏神经网络如何实现有效加速称为亟需解决的问题。

发明内容

本申请提供一种基于非结构化稀疏的卷积神经网络加速系统,以解决现有加速器无法实现有效加速的问题。

本申请的第一方面,提供一种基于非结构化稀疏的卷积神经网络加速系统,包括:片外存储以及与所述片外存储网络连接的加速装置,其中,所述片外存储用于存储卷积计算所需的卷积计算数据,所述卷积计算数据至少包括偏置数据、权重数据以及激活数据;

所述加速装置包括:

偏置缓存区,用于获取所述片外存储传输的偏置数据;

权重缓存区,用于获取所述片外存储传输的权重数据;

激活缓存区,用于获取所述片外存储传输的激活数据,其中,所述激活数据与所述权重数据相对应;

处理模块,包括多个处理单元,所述处理单元用于获取所述卷积计算数据并进行计算;

输入重叠区,设置于所述激活缓存区和所述处理模块之间,用于存储输入重叠的数据,所述输入重叠的数据用于下一次计算的输入;

可配置的累加模块,用于将所述处理单元输出的部分和进行累加;

后处理模块,用于对累加后的部分和进行线性整流和池化处理,并将处理结果写回至所述激活缓存区,以便被下一次计算利用;

顶层控制器,与所述偏置缓存区、权重缓存区以及激活缓存区相连接,用于控制所述偏置缓存区、权重缓存区以及激活缓存区的运行。

可选的,所述权重缓存区包括多个权重存储体,所述权重存储体的输出端与所述处理单元的输入端之间以交叉路由结构连接,以便所述处理单元从任意一个所述权重存储体中获取权重数据。

可选的,所述激活缓存区包括多个激活存储体;

所述激活存储体的输出端与所述处理单元的输入端之间以单播结构连接,以便所述处理单元从对应的激活存储体中获取激活数据;

所述处理单元的输出端与所述激活存储体的输入端之间以单播结构连接,以便所述处理单元将处理结果写回至对应的激活存储体。

可选的,还包括:权重解码器;所述权重解码器设置于所述权重缓存区,用于对所述权重数据进行解码操作。

可选的,所述处理单元包括多个乘累加单元。

本申请的第二方面,提供一种卷积计算方法,所述方法应用于第一方面任意一种可能实现方式提供的处理单元,所述处理单元包括多个乘累加单元,所述方法包括:

获取目标权重数据,所述目标权重数据的尺寸与单位卷积核的尺寸相同,所述单位卷积核为用于卷积计算时卷积核的最小尺寸;

获取目标权重数据中的各个目标非零元素以及各个所述目标非零元素的位置信息;

将所述目标非零元素按照所述位置信息的先后顺序串行进入目标乘累加单元,各个所述目标乘累加单元用于计算所述目标权重数据中至少一行元素的乘累加操作;

选择与所述目标非零元素对应的目标激活数据进入所述目标乘累加单元;

执行乘累加操作。

可选的,执行乘累加操作的步骤包括:

计算当前目标非零元素与其对应的目标激活数据的乘积作为当前乘积;

判断当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值是否为零;

如果是,则将当前乘积与前一个乘积相加;

如果否,则根据当前目标非零元素对应的行坐标与前一个目标非零元素的行坐标的差值,确定所述当前乘积的移动位置。

本申请的第三方面,提供一种卷积计算装置,所述装置应用于第一方面任意一种可能实现方式提供的处理单元,所述处理单元包括多个乘累加单元,所述装置包括:

第一获取模块,用于获取目标权重数据,所述目标权重数据的尺寸与单位卷积核的尺寸相同;

第二获取模块,用于获取目标权重数据中的各个目标非零元素以及各个所述目标非零元素的位置信息;

输入模块,用于将所述目标非零元素按照所述位置信息的先后顺序串行进入目标乘累加单元,各个所述目标乘累加单元用于计算所述目标权重数据中至少一行元素的乘累加操作;

选择模块,用于选择与所述目标非零元素对应的目标激活数据进入所述目标乘累加单元;

乘累加模块,用于执行乘累加操作。

可选的,所述乘累加模块包括:

计算单元,用于计算当前目标非零元素与其对应的目标激活数据的乘积作为当前乘积;

判断单元,用于判断当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值是否为零;

累加单元,用于在所述判断单元确定当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值为零的情况下,将当前乘积与前一个乘积相加;

移动单元,用于在所述判断单元确定当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值为不为零的情况下,则根据当前目标非零元素对应的行坐标与前一个目标非零元素的行坐标的差值,确定所述当前乘积的移动位置。

由以上技术方案可知,本申请提供一种基于非结构化稀疏的卷积神经网络加速系统,包括:片外存储以及与所述片外存储网络连接的加速装置。所述加速装置包括:偏置缓存区、权重缓存区、激活缓存区、处理模块、输入重叠区、可配置的累加模块、后处理模块以及顶层控制器。本申请中,缓存区和处理模块之间设置有灵活的片上网络,使得本方案中的计算流程更为灵活。另外,可配置的累加模块能够降低计算过程中的加法树延时,提升计算效率。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例提供的一种基于非结构化稀疏的卷积神经网络加速系统的结构示意图;

图2为本申请实施例提供的灵活的片上网络结构示意图;

图3为本申请实施例提供的累加模块的结构示意图;

图4为本申请实施例提供的一种卷积计算方法的工作流程图;

图5为非稀疏权重数据示例;

图6为稀疏权重数据示例;

图7为的结构示意图的一种卷积计算装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

针对DCNN的非结构化稀疏,由于其对计算复杂度的大规模压缩,在硬件加速上被寄予厚望。但是由于非结构化稀疏过程后参数的分布具有很高的不规则性,在通用加速平台(CPU,GPU)以及针对稠密神经网络的专用加速平台上实现时会引入不同问题:1)处理单元(processing elements,PEs)之间的负载不均衡;2)对有限带宽的片上存储出现访存冲突。针对非结构化稀疏DCNN的加速,上述平台不能获得与其计算强度降低相匹配的理想加速效果。

参见图1所示的结构示意图,本申请实施例提供一种基于非结构化稀疏的卷积神经网络加速系统,包括:片外存储以及与所述片外存储网络连接的加速装置。其中,所述片外存储用于存储卷积计算所需的卷积计算数据,所述卷积计算数据至少包括偏置数据、权重数据以及激活数据。

当处理计算时,配置信息被首先读取到了顶层控制器当中,这些信息可以用于重新配置灵活的片上网络。激活数据和权重数据被内存直接访问模块从片外DRAM取到片上SRAM。其中权重数据为有效的权重,它是由剪枝后的非零权重和零值权重(填满由于不平衡负载导致的空闲周期)构成。顶层控制器在接收到卷积计算数据传输的结束信号之后开始处理进程。激活数据被按照对应的权重数据的位置索引读入,权重数据和相关的激活数据被输入到G_max个并行处理单元当中,其中每个PE由P×P个乘累加(multiplier andaccumulator,MAC)单元组成。该设计能够支持任意大小的卷积和稀疏度。

在每个周期中,PE中的MAC均以相同的权重和取自于相同输入特征平面的Ph×(Pw+卷积核边长-步长)输入。经过处理后,将会产生同一输出特征平面的Ph×Pw个部分和,以及(卷积核边长-步长)×Pw个用于进行重叠的部分和。

在PE计算完之后,部分和的结果被输入到可配置的累加器模块来完成单个输出通道上的累加运算。累加模块由一个加法树和一个累加器阵列组成,也可以用来计算类瓶颈(Bottleneck-liked Operation,BLO)结构当中的快捷连接加法。部分和的结果在被线性整流函数(ReLU)和最大池化层(max pooling)处理之后,写回到激活缓存区。在计算完一个BLO结构之后,计算结果被传回到外部大容量存储单元当中。

根据以上计算流程进行加速装置的设计,所述加速装置包括:

偏置缓存区(Bias RAM),用于获取所述片外存储传输的偏置数据;

权重缓存区(Weight RAM),用于获取所述片外存储传输的权重数据;

激活缓存区(Activation RAM),用于获取所述片外存储传输的激活数据,其中,所述激活数据与所述权重数据相对应;

处理模块,包括多个处理单元,所述处理单元用于获取所述卷积计算数据并进行计算;

输入重叠区(InOV),设置于所述激活缓存区和所述处理模块之间,用于存储输入重叠的数据,所述输入重叠的数据用于下一次计算的输入;

可配置的累加模块,用于将所述处理单元输出的部分和进行累加;

后处理模块,用于对累加后的部分和进行线性整流和池化处理,并将处理结果写回至所述激活缓存区,以便被下一次计算利用;

顶层控制器,与所述偏置缓存区、权重缓存区以及激活缓存区相连接,用于控制所述偏置缓存区、权重缓存区以及激活缓存区的运行。

本申请实施例中,在权重数据经过特殊编码的情况下,加速装置中还包括权重解码器;所述权重解码器设置于所述权重缓存区,用于对所述权重数据进行解码操作。

本申请实施例中,为了使计算流程更为灵活,设计了一种灵活的片上网络,参见图2所示的结构示意图。将激活缓存区和权重缓存区分为对应的G_max个分区。每个权重缓存区的宽度是一个有效权重的宽度,而每个激活缓存区的宽度是一个Ph×Pw的激活块。缓存区和PE之间的片上网络被分为三个部分。其中,第一个部分是G_max个权重存储体和G_max个处理单元之间通过交叉路由方式连接,被称为权重输入网络(weight datafeednetwork,weight DFN);第二个部分是激活缓存区到处理单元之间的连接,G_max个激活存储体的数据以单播的形式连接到G_max个处理单元;第三个部分是G_max个处理单元的输出通过单播结构连接到G_max个激活存储体。

在缓存区和PE之间的片上网络中,处理单元能够从任意一个所述权重存储体中获取权重数据,并且能够从对应的激活存储体中获取激活数据。另外,所述处理单元将处理结果写回至对应的激活存储体。由此可见,灵活的片上网络设计,使得本方案中的计算流程更为灵活。

两个相邻的PE可以配置为对同一个输入特征平面进行卷积计算,在这种情况下,他们聚类为一个PE_G。否则,当PE划分到不同PE_G时,即处理不同的特征图时,每个PE的相应部分和连线输入零值。

在进行部分和的计算过后,不同PE内的结果需要按照数据流的指示进行累加。由于片上的PE可以被划分为不同的PE_G,最后的累加器也需要考虑多种累加情况。当每个PE被分配为独立的输入通道时,不同PE内的结果需要累加,PE计算后的加法树首先需要保证这个特点。当几个PE被映射进入同一PE_G后,需要的累加过程减少,固定级数的加法树增加了整体延迟,降低硬件计算效率。因此,本方案中使用可配置的累加模块,具体结构参见图3,该累加模块包括可选择级数的灵活加法树以及累加器,其中,可选择技术的灵活加法树用以降低整体计算延迟。

如图3所示,假设片上包含有8个独立处理单元;

当并行度的值为1时,8个处理单元配置为1个计算组对1个特征图进行卷积计算,输出8个计算结果;

当并行度的值为2时,8个处理单元配置为2个计算组对2个特征图进行卷积计算,即处理单元0、处理单元4、处理单元2以及处理单元6被配置为1个计算组,处理单元1、处理单元5、处理单元3以及处理单元7被配置为1个计算组,每组输出4个计算结果;

当并行度的值为4时,8个处理单元平均配置为4个计算组对4个特征图进行卷积计算,即处理单元0与处理单元4被配置为1个计算组,处理单元1与处理单元5被配置为1个计算组,处理单元2与处理单元6被配置为1个计算组,处理单元3与处理单元7被配置为1个计算组,每组输出2个计算结果;

当并行度的值为8时,8个处理单元平均配置为8个计算组对8个特征图进行卷积运算,每组输出1个计算结果。

根据输入的特征图的通道数不同,选择处理单元运行时的并行度。图3中,饱和截位1_0,1_1,1_2,1_3为加法树的一级结构,饱和截位2_0,2_1为加法树的二级结构,饱和截位3_0为加法树的三级结构。选择器能够根据并行度的不同,选择不同的累加方式,并将计算结果输入至累加器进行累加。

本申请实施例中,片上网络提供了足够的片上带宽,除不同形式的卷积外,还可以支持深度分离卷积和全连接层。对于深度分离卷积,从缓存区到处理单元的连接是根据卷积形状相匹配的PE_G,从处理单元到激活缓存区的配置为PE_G=1。在处理全连接层时,与卷积相比,权重数据存储在原始激活缓存区中,并保留激活数据在原始权重缓冲区中。缓存区存储位置的互换,相应的连接网络可以支持全连接层的计算而无需额外的硬件消耗。

在处理稀疏权重时,本申请实施例提供一种卷积计算方法,参见图4所示的工作流程图,所述方法包括以下步骤:

步骤101,获取目标权重数据,所述目标权重数据的尺寸与单位卷积核的尺寸相同,所述单位卷积核为用于卷积计算时卷积核的最小尺寸。

PE架构仅支持卷积核尺寸小于等于3×3的卷积的部分和移动,则单位卷积核的尺寸为3×3。当处理大于3×3的卷积核时,采用一种合成技术,能够通过在卷积核中引入额外的零值,来将大于3×3的卷积核分解为多个3×3子卷积核。通过本方案中的架构实现这一方法时,子卷积核中额外的零值可以作为稀疏权重进行处理。因此,所提出的架构能够支持任意尺寸的卷积计算,而不会导致硬件利用率不足。

该步骤中,假设单位卷积核的尺寸为3×3,如果权重数据的尺寸大于3×3,需要按照单位卷积核的尺寸,在权重数据中选取与子卷积核尺寸相同的目标权重数据进行卷积计算。

步骤102,获取目标权重数据中的各个目标非零元素以及各个所述目标非零元素的位置信息。

步骤103,将所述目标非零元素按照所述位置信息的先后顺序串行进入目标乘累加单元,各个所述目标乘累加单元用于计算所述目标权重数据中至少一行元素的乘累加操作。

步骤104,选择与所述目标非零元素对应的目标激活数据进入所述目标乘累加单元。

步骤105,执行乘累加操作。

在一种可实现的方式中,执行乘累加操作的步骤包括:

步骤1041,计算当前目标非零元素与其对应的目标激活数据的乘积作为当前乘积;

步骤1042,判断当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值是否为零;

步骤1043,如果当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值为零,则将当前乘积与前一个乘积相加;

步骤1044,如果当前目标非零元素对应的行坐标值与前一个目标非零元素的行坐标的差值不为零,则根据当前目标非零元素对应的行坐标与前一个目标非零元素的行坐标的差值,确定所述当前乘积的移动位置。

以下通过一个3*3的卷积核作为具体实施例进行说明。

对于非稀疏权重,参见图5所示的非稀疏权重数据示例,W11,W12、W13、W21、W22、W23、W31、W32、W33为非稀疏的权重数据,A11、A12、A13、A21、A22、A23、A31、A32、A33为激活数据,PE1、PE2、PE3为处理单元。计算流程如下:

(1)权重按照其在卷积核中的位置,以W33、W32、W31、W23、W22、W21、W13、W12、W11的顺序,排成一列顺序串行进入MAC单元;

(2)PE3单元计算W3行与A3行的卷积结果,首先权重W33进入卷积单元,根据权重的位置选择激活A33进入卷积单元,计算得到A33*W33。然后W32,W31进入卷积单元,得到卷积结果:C3=W31*A31+W32*A32+W33*A33;

(3)接下来,PE3的结果C3垂直传递到PE2,并继续累加W2行与A2行的累加结果C2=W21*A21+W22*A22+W23*A23,得到C2+C3;

(4)最后,PE2的结果C2+C3垂直传递到PE1,并继续累加W1行与A1行的累加结果C1=W11*A11+W12*A12+W13*A13,得到C1+C2+C3,完成整个卷积计算流程。

对于稀疏权重,参见图6所示的稀疏权重数据示例,W12、W21、W22、W23、W33均为零值。计算流程如下:

(1)权重按照其在卷积核中的位置,以W33、W32、W31、W23、W22、W21、W13、W12、W11的顺序,排成一列顺序串行进入MAC单元;

(2)PE3单元计算W3行与A3行的卷积结果,首先权重W33进入卷积单元,由于W33为零值,可以直接跳过,直接进入下一个元素的计算。根据W32的位置选择激活A32进入卷积单元,计算得到A32*W32。然后W31,A31进入卷积单元,得到卷积结果:C3=W31*A31+W32*A32;

(3)接下来,由于W21、W22、W23均为零值,第三行PE3的结果可以直接垂直转移到PE1,并继续累加W1行与A1行的累加结果C1=W11*A11+W12*A12+W13*A13,得到C1+C2+C3,完成整个卷积计算流程。

实际应用中,仅有权重数据中的非零元素进入MAC单元,卷积计算是自动跳过了零值元素的计算,从而获得计算效率的提升。

由以上计算流程可知,本申请提供的卷积计算可支持稀疏卷积,并设计了可以跳过零值计算的PE单元,获得计算效率的提升。

参见图7所示的结构示意图,本申请实施例提供一种卷积计算装置,所述装置包括:

获取模块100,用于获取目标权重数据,所述目标权重数据的大小与单位卷积核的大小相同;

输入模块200,用于将所述目标权重数据中各个元素按其所在的位置串行进入目标乘累加单元,各个所述目标乘累加单元用于计算所述目标权重数据中至少一行元素的乘累加操作;

选择模块300,用于选择与所述目标权重数据对应的目标激活数据进入所述目标乘累加单元;

乘累加模块400,用于执行乘累加操作。

可选的,所述乘累加模块包括:

判断单元,用于判断当前乘累加操作所用目标元素是否为零值,其中,所述目标元素为当前乘累加操作中所用目标权重数据中的元素;

执行单元,用于在所述判断单元确定当前乘累加操作所用目标元素为零值的情况下,跳过所述目标元素,执行下一个元素的乘累加操作。

以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号