正在加载图片...
第2期 余成字,等:一种高效的稀疏卷积神经网络加速器的设计与实现 ·325· 4.00 3.7元 3.00 2.00 1.00 0.92 1-2 21 2.2 32 3.3 4-14-24-35.15-25-3 FC6 FC7 FC8 层名称 四基准 口利用激活稀疏性 图1利用激话稀疏性前后VGG16网络每层计算量的变化 Fig.1 Changes of the computation amount of VGG-16 network layer before and after utilizing the sparsity of activation 使用动态精度量化的方法叨,将参数与激活 尺寸考虑了边界补零,输入特征图通道深度为, 结果均量化为8bit,并对全连接层进行了剪枝,比 输出特征图的数量为M,内核行方向为K,内核 较了网络剪枝前后的参数量。实验结果如图2所 列方向为K,。进行卷积操作时,N个大小为 示。实验结果表明,全连接层占据了大部分的参 K×K,的窗口同时在输入特征图上滑动,每次获 数量,对全连接层进行稀疏剪枝能够降低 取一个大小为K×K,×N的张量,分别与M个输出 85.23%的参数量。以上两个实验证明了,即使不 特征图的权重卷积。卷积的M个计算结果为输 对网络结构进行任何额外的优化,利用稀疏性对 出特征图上的一个像素点,通过依次滑动窗口, 卷积神经网络计算的提升也非常明显。如何有效 最终获得完整的输出特征图。卷积计算的伪代码 利用稀疏性优化计算是当前的卷积神经网络加速 如算法1中表示。 器设计必须要认真考虑的问题。 CONVI CONV2 FC8 0.03%0.16%C0NV3 2.96% 1.07%CONV4 FC7- 4.26% 12.13% C+K-1 CONV5 ▣CONVI 5.12% 图CONV2 图CONV3 输人特征图 卷积内核 输出特征图 ▣CONV4 日CONV5 图3卷积层计算示意 ▣FC6 日FC7 Fig.3 Schematic diagram of convolution computing FC8 FC6 算法1典型的卷积计算伪代码 74.28% for(m=0:m<M;m++) 1输出特征图 ×10的 120 for(n =0:n<N:n++){ 输入特征图 102.76 for(r=0;r<R;r++) 特征图的行 10o ⑧基准 回剪枝后 for(c=0;c<C:c++) /特征图的列 for(i=0:i<K:i++) 内核行方向 60 for(j=0;j<Ky;j++)( 内核列方向 0 16.78 O侣+=K×n乘累加 4.11 图o.67 4904 }}}} FC6 FC7 FC8 利用稀疏性加速卷积神经网络计算会给硬件 层名称 上带来两个问题:首先,稀疏的卷积计算是不平 图2VGG-16全连接层参数量比重与剪枝前后的变化 衡的,而并行计算时负载失衡会导致计算单元利 Fig.2 Proportion and Changes of the parameters amount 用率下降,损失性能,在并行队列数量较多、队列 of VGG-16 full connected layer before and after 长度不够长时,负载失衡的影响会非常明显;其 pruning 次,对激活输入和权重的判断或选择会增加逻辑 2 算法理论设计 复杂度,可能会带来不能接受的面积开销,影响 并行展开规模。 典型的卷积神经网络卷积计算如图3所示。 用系统并行自由度来表征并行计算的负载失 输出特征图的行数为R、列数为C,输入特征图的 衡。如图4所示,大部分卷积计算是以窗口滑动0 0.170.17 3.70 3.70 3.70 3.70 3.70 3.70 1.97 1.85 1.85 1.28 1.93 1.90 1.85 1.08 0.92 0.22 0.22 0.18 0.210.08 0.030.01 0.010.01 0.92 0.92 1.29 0.89 1.51 2.44 1.00 1-1 1-2 2-1 2-2 3-1 3-2 3-3 4-1 4-2 4-3 5-1 5-2 5-3 FC6 FC7 FC8 2.00 计算量/(GOP) 层名称 3.00 4.00 基准 利用激活稀疏性 图 1 利用激活稀疏性前后 VGG-16 网络每层计算量的变化 Fig. 1 Changes of the computation amount of VGG-16 network layer before and after utilizing the sparsity of activation 使用动态精度量化的方法[19] ,将参数与激活 结果均量化为 8 bit,并对全连接层进行了剪枝,比 较了网络剪枝前后的参数量。实验结果如图 2 所 示。实验结果表明,全连接层占据了大部分的参 数量,对全连接层进行稀疏剪枝能够降 低 85.23% 的参数量。以上两个实验证明了,即使不 对网络结构进行任何额外的优化,利用稀疏性对 卷积神经网络计算的提升也非常明显。如何有效 利用稀疏性优化计算是当前的卷积神经网络加速 器设计必须要认真考虑的问题。 102.76 16.78 4.11 4.10 0.67 0.94 0 20 40 60 80 100 120 ×106 FC6 FC7 FC8 参数量 层名称 基准 剪枝后 CONV1 0.03% CONV2 0.16% CONV3 1.07% CONV4 4.26% CONV5 5.12% FC6 74.28% FC7 12.13% FC8 2.96% CONV1 CONV2 CONV3 CONV4 CONV5 FC6 FC7 FC8 图 2 VGG-16 全连接层参数量比重与剪枝前后的变化 Fig. 2 Proportion and Changes of the parameters amount of VGG-16 full connected layer before and after pruning 2 算法理论设计 典型的卷积神经网络卷积计算如图 3 所示。 输出特征图的行数为 R、列数为 C,输入特征图的 尺寸考虑了边界补零,输入特征图通道深度为 N, 输出特征图的数量为 M,内核行方向为 Kx,内核 列方向 为 Ky。进行卷积操作时, N 个大小 为 Kx×Ky 的窗口同时在输入特征图上滑动,每次获 取一个大小为 Kx×Ky×N 的张量,分别与 M 个输出 特征图的权重卷积。卷积的 M 个计算结果为输 出特征图上的一个像素点,通过依次滑动窗口, 最终获得完整的输出特征图。卷积计算的伪代码 如算法 1 中表示。 Ky N C+Kx−1 Kx R+Ky−1 Ky Kx N M . . . . . . = C R M 输入特征图 输出特征图 卷积内核 * 图 3 卷积层计算示意 Fig. 3 Schematic diagram of convolution computing 算法1 典型的卷积计算伪代码 for(m = 0;m < M;m+ +){ //输出特征图 for(n = 0;n < N;n+ +){ //输入特征图 for(r = 0;r < R;r + +){ //特征图的行 for(c = 0; c < C; c+ +){ //特征图的列 for(i = 0;i < Kx ;i+ +){ //内核行方向 for( j = 0; j < Ky ; j+ +) { //内核列方向 O (m) (c,r)+ = K (m,n) (i, j) × I (n) (c+i,r+j) ; //乘累加 }}}}}} 利用稀疏性加速卷积神经网络计算会给硬件 上带来两个问题:首先,稀疏的卷积计算是不平 衡的,而并行计算时负载失衡会导致计算单元利 用率下降,损失性能,在并行队列数量较多、队列 长度不够长时,负载失衡的影响会非常明显;其 次,对激活输入和权重的判断或选择会增加逻辑 复杂度,可能会带来不能接受的面积开销,影响 并行展开规模。 用系统并行自由度来表征并行计算的负载失 衡。如图 4 所示,大部分卷积计算是以窗口滑动 第 2 期 余成宇,等:一种高效的稀疏卷积神经网络加速器的设计与实现 ·325·
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有