Processing math: 100%
  • 中国精品科技期刊
  • CCF推荐A类中文期刊
  • 计算领域高质量科技期刊T1类
高级检索

KCNN:一种神经网络轻量化方法和硬件实现架构

陈桂林, 王观武, 王康, 胡敏慧, 邓俊荃

陈桂林, 王观武, 王康, 胡敏慧, 邓俊荃. KCNN:一种神经网络轻量化方法和硬件实现架构[J]. 计算机研究与发展, 2025, 62(2): 532-541. DOI: 10.7544/issn1000-1239.202330409
引用本文: 陈桂林, 王观武, 王康, 胡敏慧, 邓俊荃. KCNN:一种神经网络轻量化方法和硬件实现架构[J]. 计算机研究与发展, 2025, 62(2): 532-541. DOI: 10.7544/issn1000-1239.202330409
Chen Guilin, Wang Guanwu, Wang Kang, Hu Minhui, Deng Junquan. KCNN: A Neural Network Lightweight Method and Hardware Implementation Architecture[J]. Journal of Computer Research and Development, 2025, 62(2): 532-541. DOI: 10.7544/issn1000-1239.202330409
Citation: Chen Guilin, Wang Guanwu, Wang Kang, Hu Minhui, Deng Junquan. KCNN: A Neural Network Lightweight Method and Hardware Implementation Architecture[J]. Journal of Computer Research and Development, 2025, 62(2): 532-541. DOI: 10.7544/issn1000-1239.202330409
陈桂林, 王观武, 王康, 胡敏慧, 邓俊荃. KCNN:一种神经网络轻量化方法和硬件实现架构[J]. 计算机研究与发展, 2025, 62(2): 532-541. CSTR: 32373.14.issn1000-1239.202330409
引用本文: 陈桂林, 王观武, 王康, 胡敏慧, 邓俊荃. KCNN:一种神经网络轻量化方法和硬件实现架构[J]. 计算机研究与发展, 2025, 62(2): 532-541. CSTR: 32373.14.issn1000-1239.202330409
Chen Guilin, Wang Guanwu, Wang Kang, Hu Minhui, Deng Junquan. KCNN: A Neural Network Lightweight Method and Hardware Implementation Architecture[J]. Journal of Computer Research and Development, 2025, 62(2): 532-541. CSTR: 32373.14.issn1000-1239.202330409
Citation: Chen Guilin, Wang Guanwu, Wang Kang, Hu Minhui, Deng Junquan. KCNN: A Neural Network Lightweight Method and Hardware Implementation Architecture[J]. Journal of Computer Research and Development, 2025, 62(2): 532-541. CSTR: 32373.14.issn1000-1239.202330409

KCNN:一种神经网络轻量化方法和硬件实现架构

基金项目: 国家自然科学基金项目(61901497)
详细信息
    作者简介:

    陈桂林: 1994年生. 博士研究生,工程师. 主要研究方向为体系结构、芯粒和神经网络加速器

    王观武: 1986年生. 博士,助理研究员. 主要研究方向为体系结构、片上系统设计

    王康: 1990年生. 硕士,助理研究员. 主要研究方向为体系结构、片上系统设计

    胡敏慧: 1994年生. 博士. 主要研究方向为人工智能、计算机体系结构

    邓俊荃: 1988年生. 博士,副研究员. 主要研究方向为无线网络的射频资源管理、移动定位和机器学习

    通讯作者:

    王观武(wangguanwu17@nudt.edu.cn

  • 中图分类号: TP183

KCNN: A Neural Network Lightweight Method and Hardware Implementation Architecture

Funds: This work was supported by the National Natural Science Foundation of China (61901497).
More Information
    Author Bio:

    Chen Guilin: born in 1994. PhD candidate, engineer. His main interests include architecture, and Chiplet and neural network accelerator. (cglnudt@163.com)

    Wang Guanwu: born in 1986. PhD, assistant professor. His main research interests include architecture and system-on-chip design

    Wang Kang: born in 1990. Master, assistant professor. His main research interests include architecture and system-on-chip design

    Hu Minhui: born in 1994. PhD. Her main research interests include artificial intelligence and computer architecture

    Deng Junquan: born in 1988. PhD, associate research fellow. His main research interest includes radio resource management, mobile positioning, and machine learning in wireless networks

  • 摘要:

    卷积神经网络(convolutional neural network,CNN)已成为图像识别领域最重要的一项机器学习技术. 近年来,随着CNN在边缘端部署的需求越来越多,CNN的轻量化也成为研究热点. 主流的CNN轻量化方法包括剪枝和量化,这2项技术都能有效地减少CNN推导过程中计算和存储开销. 然而,这些方法未能完全挖掘CNN中的双边稀疏性(权重稀疏和激活值稀疏)和潜在的数据复用. 因此,为了解决上述问题,提出一种全新的神经网络轻量化方法,通过k-means算法对卷积核和特征图的非0值进行聚类,整个神经网络的推导过程中只使用有限的聚类值作为乘数去完成全部卷积计算. 与以往卷积层计算复杂度O(n3)相比,轻量化处理后的卷积层计算复杂度仅为O(n2),大幅度减少了计算量. 同时,将全连接层权重也进行非0值聚类处理,片上只存储聚类值和对应的索引向量,极大地减少存储开销. 最后,针对该轻量化方法设计一种硬件实现架构KCNN. 该架构将CNN中的不同处理流程模块化实现,与以往的实现架构相比增加一个非0值聚类模块,此外还设计了一些缓存来利用聚类后CNN中的数据复用. 实验结果表明在不损失推导精度的情况下,AlexNet网络整体计算量减少66%,存储开销减少85%.

    Abstract:

    Convolutional neural network (CNN) has become one of the most important machine learning technologies in the field of image recognition. In recent years, with the increasing demand for CNN deployment at the mobile edge, the lightweight of CNN has become a research hotspot. The mainstream CNN lightweight methods include pruning and quantization, both of which can effectively reduce the calculation and storage overhead for CNN inference. However, none of these methods fully exploits the bilateral sparsity (weight sparsity and activation sparsity) and potential data-reuse in CNN. Therefore, in order to solve these problems, we propose a new neural network lightweight method, and the k-means algorithm is used to cluster the non-zero values of convolution kernel and feature map, and the CNN inference only uses limited cluster values as multipliers to complete all convolutional calculations. Compared with the computational complexity of original convolutional layer O(n3), the computational complexity of the convolutional layer after lightweight is O(n2), effectively reducing the amount of computation. Similarly, the non-zero weights of the fully connected layer are also clustered, and only the cluster values and corresponding index vectors are stored on chip, which significantly reduces the storage overhead. Finally, a customized architecture KCNN is designed for this lightweight method. The architecture modularizes the different processes of the CNN, and compared with the previous accelerator, a non-zero clustering module is added. In addition, some caches are added to make use of the data-reuse in the CNN after clustering. The experiment results show that without losing the derivation accuracy, the overall calculation of AlexNet network is reduced by 66%, and the storage expense is reduced by 85%.

  • 深度神经网络作为机器学习的典型代表已经在多个应用领域取得巨大成功,例如图像识别[1]、语音识别[2]、自然语言处理[3]等. 其中卷积神经网络大量应用于图像识别领域,典型的卷积神经网络(convolutional neural network,CNN)如图1所示,主要由多个卷积层和全连接层组成,其中卷积层具有计算密集性的特点,全连接层具有存储密集性的特点. 近年来,随着神经网络越来越多地部署在边缘侧和移动端设备中,对其轻量化的要求也越来越高. 主流的神经网络轻量化方法包括剪枝和量化[4-8]. 研究表明适当的剪枝不会影响神经网络的性能,并且还有防止网络过拟合的作用[9],剪枝后的神经网络是一个稀疏神经网络,通过设计特定的运算处理单元可以减少神经网络推导过程中的乘法操作[10-12]. 量化主要通过降低操作数的精度实现. 已有研究表明[13],适当地降低神经网络操作数精度不会影响整个网络的推导精度,表1显示了2种不同精度操作数在MNIST数据集上的精度对比.

    图  1  一个具有代表性的CNN结构——LeNet-5
    Figure  1.  A representative CNN structure—LeNet-5
    表  1  操作数精度对识别准确率的影响
    Table  1.  Effect of Operand Precision on Recognition Accuracy
    精度 错误率
    32 b浮点 0.0311
    16 b定点 0.0337
    下载: 导出CSV 
    | 显示表格

    除了上述的剪枝和量化之外,根据神经网络的运算特性(采用ReLU作为激活函数的神经网络具有大量0值、卷积过程中的数据复用),还可以进一步利用特征图的稀疏性[14]和卷积过程中的数据复用以实现网络的轻量化. 以往许多研究已经通过设计不同的数据流[15-20]分别实现了卷积过程中的权重复用和输入激活值复用. 其中杜克大学的Edward等人[21]在ISCA2022会议中提出了一种级联结构化的剪枝(cascading structured pruning,CSP)方法,可以保留稀疏神经网络中更多的数据复用机会. 但是这些轻量化方法都没能完全挖掘卷积神经网络中的双边稀疏性(即权重的稀疏和特征图上激活值的稀疏)和潜在的数据复用,目前也没有同时利用双边稀疏性和所有数据复用的CNN加速器[22].

    通过对已有硬件加速神经网络方法的研究[23],为解决目前已有轻量化算法和硬件加速器的局限,最大化挖掘神经网络的稀疏特性和数据复用特性,本文提出了一种新的轻量化方法和相应的硬件实现架构KCNN. 具体做法为对输入特征图在卷积计算前进行非0值聚类预处理,然后将这些输入特征图的非0聚类值和经过同样聚类处理的卷积核相乘,其得到的结果即为卷积计算所有的乘法计算结果,将对应的乘法结果累加激活即得到了输出特征图. 同理,将全连接的权重也进行非0值聚类和压缩编码,加速器只存储聚类值和对应索引向量. 这样做的优点是:

    1) 减少了计算量. 通过对聚类值和乘法结果地复用,卷积的计算复杂度由O(n3)变为O(n2),如果对卷积核也进行聚类处理,卷积层的计算复杂度可以简化为O(n).

    2) 减少了卷积实现时的数据移动. 有限的乘法结果避免了权重或输入激活值在卷积计算过程中的频繁移动.

    3) 减少了存储开销. 聚类后的数据只需要存储索引向量和聚类值,存储开销大幅度减少.

    最后,我们在多个流行网络(LeNet-5,VGG,AlexNet)和数据集(MNIST,CIFAR-10)中部署了所提出的轻量化算法,在保持网络推导精度不变的情况下,AlexNet在处理CIFAR-10数据集时计算量减少了66%,存储开销减少了85%.

    CNN是一个计算密集型和存储密集型人工智能方法,其中90%左右的计算集中在卷积层,90%左右的存储集中在全连接层,CNN的层数越深,卷积计算量的比例越大,因此减少卷积层的计算和全连接层的存储是神经网络轻量化的重要研究方向[24]. 目前减少卷积层计算的主流方法包括消除0值计算和数据复用[4-8],减少存储的常用方法是网络稀疏化和数据量化[10-12]. 但是这些做法除了消除部分的0值计算外,其余的计算量并没有改变. 此外,已有的神经网络稀疏化方法没有完全挖掘CNN中的双边稀疏性,已有的数据量化方法也无法显著地降低存储开销. 例如谷歌TPU[25]支持8 b低精度运算,但是其片上存储高达24 MB,存储面积占据整个芯片面积的1/3.

    表2列出了3个典型CNN的卷积层和全连接层的计算量,在过去的图像识别比赛中,往往网络的深度越大,识别的准确率越高,这就导致了网络的参数越来越多,计算量越来越大. 本文提出一种新的轻量化方法,通过挖掘更深层次的CNN稀疏特性和数据复用特性显著地降低CNN的计算开销和存储开销.

    表  2  常见网络的权重数据大小和浮点操作数
    Table  2.  Weights Data Size and Floating-point Operands of Common Networks
    CNN 权重数
    据大小
    浮点计
    算次数
    卷积层
    权重比
    重/%
    全连接
    层权重
    比重/%
    卷积层
    计算比
    重/%
    全连接
    层计算
    比重/%
    LeNet-5 240 KB 2.2 MFLOPs 4.17 95.83 82.4 17.6
    AlexNet 240 MB 832 MFLOPs 6.01 93.99 93.2 6.8
    VGG16 528 MB 14.4 GFLOPs 10.64 89.36 99.3 0.7
    下载: 导出CSV 
    | 显示表格

    在介绍轻量化算法之前,我们先回顾一下神经网络的部分特性[26]. 众所周知,神经网络由于训练方式和测试方式的不同(比如学习率的选择、梯度函数的选择等),每次得到的网络识别准确率并不是一个特定的值,而是一个精度范围,我们将这个精度范围叫做神经网络的置信区间. 神经网络经过轻量化处理后,如果精度仍然处于置信区间内,则认定该轻量化方法不影响神经网络的推导精度,为有效方法. 表3列出了部分神经网络在指定数据集上的置信区间. 本文的轻量化方法正是基于神经网络置信区间特性的前提下提出的.

    表  3  部分神经网络的置信区间
    Table  3.  Confidence Interval for a Partial Neural Network %
    CNN(数据集) 识别准确率 置信区间
    LeNet-5(MNIST) 99.20 0.21
    AlexNet(CIFAR-10) 82.33 0.90
    VGG16(CIFAR-10) 91.30 0.80
    AlexNet(ImageNet) 58.00(Top 1)
    86.86(Top 5)
    0.81
    下载: 导出CSV 
    | 显示表格

    在本节中,我们介绍一种新的神经网络轻量化方法,通过结合以前在图像对抗中的研究成果[27],提出将无监督学习中的聚类算法运用到神经网络中,通过对非0聚类值的数据复用,达到神经网络轻量化的目的.

    首先,在图像对抗领域,通过对图像微调,比如给图像样本增加一些扰动,会导致神经网络将图像错误分类[28],比如将猫的图片错误地识别为狗,将坦克识别为正常汽车等. 我们通过研究发现,这是由于神经网络的拟合特性决定的,过多不重要的细节造成了神经网络的错误识别. 这是因为CNN的本质是提取图像特征,而后通过多种特征串联进行图像的判别. 我们通过一种聚类方法,将图像的某些不重要特征模糊化,只保留重要特征,这样通过对识别图像进行简单地预处理,就可以将微调后猫的照片仍然正确地识别为猫.

    常用的聚类算法可以分为基于划分的聚类方法、基于密度的聚类方法、基于层次的聚类方法、基于联系的聚类方法、基于模型的聚类方法,详细的聚类方法对比见文献[29]. 在神经网络中,对权重的聚类是一个典型的基于划分聚类. 与其他聚类方法相比,基于划分的聚类方法算法复杂度低、原理简单,本文选择划分聚类中最典型的k-means聚类算法[30]作为图像的预处理方法. k-means算法的原理:首先从n个数据对象中任意选择 k 个对象作为初始聚类中心,通过迭代t次,将类的中心点移动到所包含成员的平均位置,然后重新划分其内部成员,直到所有成员到所属类的距离最近为止. 该算法的算法复杂度为O(nkt),由于kt是可确定的常数,因此算法复杂度可看作是线性的O(n). k-means算法还有一种优化方法,当需要聚类的数据量太大时,聚类时间会很长. 因此,为了优化算法以减少执行时间,我们从整体中随机抽样,选取部分数据来代替整体. 对于每一个抽样小批量,通过计算平均值得到更新质心,并把小批量里的数据分配给该质心,随着迭代次数的增加,这些质心的变化逐渐减小,直到质心稳定或达到指定的迭代次数时停止计算. 这种优化算法叫做MiniBatchKMeans.

    该项技术可应用到神经网络的轻量化中,我们在之前已做过类似研究[31],将整个卷积的输入特征图进行聚类,并将相应聚类值和卷积核相乘得到输出特征图,但是这样会导致原先为0的激活值聚类后不为0,整个特征图由稀疏矩阵变为非稀疏矩阵. 因此,本文提出一种新的改进方法,通过对卷积层输入特征图进行非0值聚类,将原先大量的输入数据聚类成k类数据,这k类数据值和卷积核相乘的结果可以代替原先整个输入特征图和卷积核相乘的结果. 同样地,经过实验证明(详见第4节)该方法也可以用到训练好的网络权重数据中. 图2是在CIFAR-10数据集[32]中做的简单实验,图2(a)是卡车原图,图2(b)是将图像聚成4类值以后得到的新图像,训练好的神经网络LeNet-5在识别时仍可将其正确地识别为卡车.

    图  2  CIFAR-10数据集中1张卡车图片在聚类前后的对比图
    Figure  2.  Comparison diagram of a truck image before and after clustering in CIFAR-10 dataset

    由于CNN的计算大量集中在卷积层,因此主要针对卷积层计算做轻量化加速. 卷积层的计算公式如式(1)所示,f()是非线性激活函数,βfi表示偏移值. 其中out(x,y)表示在输出特征图坐标(x,y)处的值,w(kx,ky) 表示卷积核坐标(kx,ky)上的权重值,in(x+kx,y+ky)表示输入特征图坐标(x+kx,y+ky)上的输入值. Kx,Ky表示卷积核的大小,fi表示第i幅输入特征图,Nfi表示输入特征图的数目.

    out(x,y)=f(Nfifi=0(Kxkx=0Kyky=0wfi(kx,ky)×in(x+kx,y+ky)fi+βfi)). (1)

    卷积层计算可以看作是2个矩阵相乘,计算复杂度为O(n3),我们通过对输入特征图的聚类,将卷积层计算简化为向量和矩阵相乘,算法复杂度降为O(n2). 如果再将卷积核也进行聚类操作,那么最终的卷积层运算将简化为向量和向量相乘,算法复杂度为O(n).

    一个典型的CNN流程如图3(a)所示,我们在卷积层的前面插入自定义的k-means聚类层,如图3(b)所示. k-means聚类层不需要进行权重训练,它的作用是将上一层的输出特征图进行非0值聚类,然后将其作为下一卷积层的输入特征图. 这样处理后CNN在做卷积计算时先将k个聚类值和卷积核进行乘法计算,将得到的计算结果编号存储,在实际进行特征图卷积处理时将对应的计算结果直接读取使用即可. 具体操作流程如图4所示,一个3×3×3的卷积核以步长为1去卷积一个四周都填充0值的32×32×3输入特征图,最终得到一个32×32的输出特征图,轻量化处理前该卷积过程中乘法操作的数量为32×32×3×3×327648次. 轻量化处理后的乘法操作为4×3×3×3共108次,乘法操作减少了256倍.

    图  3  CNN的处理流程
    Figure  3.  Processing flow of CNN
    图  4  输入特征图聚类后的卷积流程示意图
    Figure  4.  A schematic diagram of the convolution process after clustering of input feature map

    k-means算法除了可以应用到卷积层的加速中以外,还可以应用到全连接层的压缩中. 如表2所示,全连接层的权重数占整个网络存储的90%以上,对于大规模神经网络来说这样庞大的数据不可能完全存储在片上,这就导致需要频繁地从片外读取数据,以往的研究表明[33],数据搬移消耗的能量远远大于数据计算消耗的能量. 因此想要实现网络的轻量化,全连接层权重数据压缩是非常必要的. 以往的研究已经提出许多权重压缩的方法[34-36],其中比较常用的方法是利用全连接层的稀疏特性对全连接层的权重进行压缩编码存储,我们经过实验证明(具体实验结果见第4节)对全连接层的权重数据运用k-means预处理不会损失整个网络的识别精度. 这样结合全连接层的稀疏特性,可以进一步地压缩全连接层权重数据. 具体方法如图5所示,某一个神经网络的全连接层有10个神经元,与上一个全连接层的100个神经元进行全连接,该全连接层则具有1000个权重数据,将这些权重数据的非0值进行k-means聚类,然后单独对每一类权重进行压缩编码,最终得到k个索引向量(k为聚类种类). 向量的第1个元素为该类权重的总数,后面的元素为该类权重在原来权重矩阵中的相对位置.

    图  5  全连接层聚类和编码流程示意图
    Figure  5.  Schematic diagram of the fully connected layer clustering and coding process

    通用处理器实现上述轻量化方法不能达到很好的加速效果,因此我们设计了一种特定的硬件加速器架构KCNN,整体框架如图6所示,加速器的功能模块有k-means功能模块、乘法树功能模块、累加器功能模块、池化功能模块和激活功能模块. 加速器还设计一些缓存用于临时存储权重和神经网络计算过程中的中间值. 图6中红色数据流代表卷积层独有的计算过程,绿色数据流代表全连接层独有的计算过程,黑色数据流是一些共用数据流和存取数据的操作. 为了节省硬件开销,该架构的乘法树和累加器由卷积层和全连接层进行分时复用.

    图  6  KCNN的整体架构
    Figure  6.  The overall architecture of KCNN

    1)乘法树功能模块. KCNN采用树状乘法单元结构而非更加常用的阵列结构,这是由于经过k-means聚类处理的输入特征图和卷积核在实际进行卷积处理时已经由原来的矩阵相乘运算简化为向量相乘计算,乘法单元只输入有限的聚类值,因此为了避免不必要的数据流调度,我们选择乘法树的实现方式.

    2)k-means功能模块. 该功能模块包含2个功能实现,一是判决上一层输出特征图的非0值,二是对这些非0值进行聚类. 最后将处理后的聚类值和对应的索引表存入下一层网络的特征图存储表.

    3)乘法结果索引表. 乘法结果索引表里存储了卷积层所有的乘法结果和得到该乘法结果的2个乘数对应位置,卷积结果判别器将根据对应位置访问乘法结果存储表并把1次卷积操作的所有乘法结果传入累加器.

    4)累加器功能模块. 该模块接收1次卷积的所有乘法结果,并累加得到输出特征图上的1个输出结果.

    5)激活模块. 该模块提供常用的激活函数,例如ReLu函数和Sigmod函数,其输出有3条路径,如果下一层是卷积层,输出结果将传入k-means功能模块;如果下一层是全连接层,输出结果将传入乘法树功能模块,等待与全连接层的权重相乘;如果该激活层是网络最后一层,输出结果将作为整个神经网络的输出传到片外.

    6)池化模块. 该模块实现池化功能,具有平均池化和最大池化的功能.

    7)全连接层权重缓存模块. 该模块缓存经过聚类和压缩编码后的全连接层权重值和索引表.

    卷积层的处理流程为: 1)加速器将特征图数据输入到k-means功能模块进行非0值聚类,将聚类后的索引值和索引列表存入输入特征图存储表(聚类索引表可以还原聚类值在输入特征图中的位置);2)将卷积核权重缓存中的权重数值和聚类索引值传入乘法树进行乘法操作,结果存入卷积乘法结果索引表;3)将权重的位置数据和特征图聚类值的位置数据传入乘法结果判决器,根据判决结果从卷积乘法结果索引表中取得对应的乘法结果并传入累加器;4)将累加器得到的输出结果存入输出特征图缓存;5)将输出特征图经过激活作为下一层网络的输入特征图. 如果下一层网络为池化层,则将输出结果传入池化模块,如果下一层网络为全连接层则将输出结果传入乘法树等待和全连接层的权重进行乘法操作.

    全连接层的处理流程为:1)加速器将全连接层的权重存入全连接层权重缓存,传入乘法树中和上一层网络的输出特征图相乘;2)将乘法结果传入累加器得到新的输出特征图;3)将输出特征图传入激活模块得到下一层网络的输入特征图或者整个网络的输出结果.

    与一般的CNN加速器相比,该架构需要增加额外的硬件资源来实现权重和特征图的非0值聚类. 并且不同网络合适的聚类值需要提前进行大量的实验验证,保证轻量化处理后的网络精度处于网络的置信区间,具体的实验细节在第4节介绍.

    实验采用2个主流的数据集:MNIST,CIFAR-10和3个典型CNN结构:LeNet-5,AlexNet,VGG16. 其中MNIST是一个手写数字数据集;CIFAR-10是一个常用的计算机视觉数据集,包含10种不同种类的60000张彩色图片. LeNet-5是一个典型的CNN结构;AlexNet是2012年ImageNet竞赛冠军获得者Hinton和他的学生Alex设计的CNN结构;VGG16则是牛津大学计算机视觉组参加图像分类竞赛时提出的,与AlexNet相比,网络深度更深. 本文所有的实验在神经网络框架Pytorch下进行. 其中对于k-means算法我们选择Python机器学习算法库中的sklearn. cluster. MiniBatchKMeans.

    本文实验通过在CNN的卷积层前加入自定义的k-means层(k-means层完成对输入特征图的非0值聚类,并将聚类值放到输出特征图的对应位置),验证选取不同的聚类k值对网络预测精确度的影响. 在网络置信区间的范围内选择最优k值并计算加速比η. 加速比的计算公式如式(2)所示,TmutTadd表示不使用k-means层进行非0值聚类时卷积层所需的乘法操作和加法操作的时间,Tk-means表示k-means层实现非0值聚类所需的时间, TmutTadd表示使用k-means层进行非0值聚类后卷积层计算所需乘法和加法操作的时间(随k值变化).

    η=Tmut+TaddTk-means+Tmut+Tadd. (2)

    需要说明的是,对于卷积层数少的网络,例如LeNet-5,本文实验针对不同卷积层添加不同k值的k-means层以验证最好的加速效果,对于卷积层数多的大型网络,所添加的k-means层选取不同k值的组合太多,本文并没有进行穷举,研究者可以根据自己的需求在不同的卷积层前增加不同k值的k-means层去平衡预测精度和加速效果. 本文主要的贡献点是介绍一种新颖的轻量化方法以及实验验证该方法的可行性.

    表4展示了LeNet-5不同卷积层前添加不同k值的k-means层后的网络识别准确率. 实验结果表明,LeNet-5在MNIST数据集上进行预测时,保证识别准确率在网络置信区间的前提下,最优的k-means层添加组合为第1个卷积层前添加k=4的k-means层和第2个卷积层前添加k=4的k-means层. 此时,整个网络的加速效果最好.

    表  4  LeNet-5添加不同k值组合的k-means层后的识别准确率
    Table  4.  Recognition Accuracy of Network for LeNet-5 After Adding k-means Layers with Different k Value Combinations %
    卷积层 聚类值 C1
    k=4 k=8 k=16 k=32 k=64
    C2 k=4 99.02 99.14 99.06 99.15 99.12
    k=8 99.10 99.13 99.21 99.16 99.21
    k=16 99.12 99.16 99.19 99.20 99.16
    k=32 99.13 99.20 99.19 99.17 99.19
    k=64 99.13 99.21 99.22 99.19 99.20
    注:C1 k=4表示在第1个卷积层前添加聚类值为4 的k-means层,MNIST基准为99.20%.
    下载: 导出CSV 
    | 显示表格

    表5展示了AlexNet不同卷积层前单独添加不同k值的k-mean层后网络在CIFAR-10数据集上的识别准确率.实验结果表明,在AlexNet的5个不同卷积层前单独添加合适k值的k-means层后,网络的识别准确率仍处于网络的置信区间. VGG16具有13个卷积层,由于卷积层数太多,因此我们设计的实验方法为在所有的卷积层前添加相同k值的k-means层,实验结果见表6. 其中, VGG16和AlexNet所有卷积层前都添加k=32或k=64的k-means层时,网络的识别准确率处于置信区间内. 表5表6表明,对于深度CNN,该轻量化方法依然有效. 开发者可以根据实际使用的神经网络和数据集,灵活地添加不同k值的k-means层,本文不再对所有的组合进行穷举.

    表  5  AlexNet添加不同kk-means层后的识别准确率
    Table  5.  Recognition Accuracy of Network for AlexNet After Adding Different k-means Layers with Different k Values %
    聚类值 C1 C2 C3 C4 C5
    k=4 66.60 81.28 81.70 82.23 82.80
    k=8 78.57 82.67 82.66 82.76 83.06
    k=16 81.92 82.82 82.79 82.77 82.98
    k=32 82.56 82.96 82.79 82.97 82.98
    k=64 82.97 82.93 82.96 82.86 82.87
    注:C1表示在第1个卷积层前添加k-means层,k=4表示添加聚类值为4的k-means层,CIFAR-10基准为82.33%.
    下载: 导出CSV 
    | 显示表格
    表  6  VGG16和AlexNet所有的卷积层前添加相同k值的k-means层后在CIFAR-10上的识别准确率
    Table  6.  Recognition Accuracy on CIFAR of VGG16 and AlexNet After Adding k-means Layers with the Same k Value  %
    CNN(数据集)基准k=4k=8k=16k=32k=64
    AlexNet(CIFAR-10)82.3361.2877.3481.4782.6782.84
    VGG16(CIFAR-10)91.3061.5882.9188.7090.8191.45
    下载: 导出CSV 
    | 显示表格

    不同网络采用k-means进行全连接层聚类后的压缩效果不同,具体的压缩比γ可以通过式(3)计算得出,N表示所有权重的数量,Nc表示卷积层的权重数目,b表示权重的位数(论文取float32),Nf表示全连接层非0权重的数量,bindex表示非0权重的索引值位数(由相同2个聚类值在权重矩阵中的最大间距计算得出),k表示聚类值个数.

    γ=N×bNc×b+k×b+Nf×bindex. (3)

    本节只验证CNN的全连接层经k-means非0聚类压缩后是否对最终的网络推导准确率造成影响. 我们对网络的全连接层采用不同的k值进行压缩,对于有多个全连接层的网络来说,同样存在每个层选择不同聚类k值的多种组合情况. 我们在选择不同的k值组合时,应保证最终的识别准确率处于网络置信区间内.

    表7显示了3个不同网络在不同数据集上的全连接层的最优k值组合和最终准确率. 实验结果表明本文提出的轻量化方法对网络的权重压缩有效,且不损失网络的识别准确率.

    表  7  全连接层经过聚类压缩后的网络识别准确率
    Table  7.  Recognition Accuracy of the Network After Clustering Compression on Fully Connected Layers
    CNN(数据集) 基准/% k值组合 识别准确率/%
    LeNet-5(MNIST) 99.20 (8, 4, 32) 99.03
    AlexNet(CIFAR-10) 82.33 (4, 4, 32) 81.43
    VGG16(CIFAR-10) 91.30 (4, 4, 2) 90.72
    注:(8, 4, 32)表示3个全连接层权重分别进行聚类值k=8, 4, 32的聚类处理.
    下载: 导出CSV 
    | 显示表格

    本文对AlexNet网络的进行了完整的轻量化处理,实验表明,在AlexNet的卷积层前分别添加k=32,32,8,8,8的自定义k-means层,再对全连接层权重分别进行k=4,4,32的聚类处理,此时网络在CIFAR-10上81.94%的识别准确率仍处于置信区间,网络的加速比为3,压缩比为6.6. 需要注意的是,CNN在处理不同的数据集时,最优的聚类值组合会不同,在将CNN部署在加速器前,应该提前计算好最优的k值组合.

    本文提出了一种新颖的CNN轻量化方法和硬件实现架构,创造性地发掘并利用CNN推导过程中的重复数据,利用在卷积层前添加自定义的k-means层来实现更多的非0值数据复用,极大地减少了计算开销,通过对全连接层的权重进行k-means非0聚类实现网络权重的压缩,极大地减少了存储的开销. 不同于以前的轻量化方法,该方法不需要进行重新训练,可以直接利用训练好的网络结构和权重数据进行优化. 最终该方法可以减少AlexNet 卷积层66%的计算量,同时实现6.6倍的压缩比. 本文还设计了针对该轻量化方法的硬件架构KCNN,对于该架构的详细性能和功耗评测将是我们未来的工作方向.

    作者贡献声明:陈桂林负责论文的创新点设计和实验;王观武负责论文的实验指导和创新点优化;王康负责论文相关技术的背景现状梳理;胡敏慧负责论文的创新点探讨和校稿;邓俊荃负责论文的框架指导和内容梳理.

  • 图  1   一个具有代表性的CNN结构——LeNet-5

    Figure  1.   A representative CNN structure—LeNet-5

    图  2   CIFAR-10数据集中1张卡车图片在聚类前后的对比图

    Figure  2.   Comparison diagram of a truck image before and after clustering in CIFAR-10 dataset

    图  3   CNN的处理流程

    Figure  3.   Processing flow of CNN

    图  4   输入特征图聚类后的卷积流程示意图

    Figure  4.   A schematic diagram of the convolution process after clustering of input feature map

    图  5   全连接层聚类和编码流程示意图

    Figure  5.   Schematic diagram of the fully connected layer clustering and coding process

    图  6   KCNN的整体架构

    Figure  6.   The overall architecture of KCNN

    表  1   操作数精度对识别准确率的影响

    Table  1   Effect of Operand Precision on Recognition Accuracy

    精度 错误率
    32 b浮点 0.0311
    16 b定点 0.0337
    下载: 导出CSV

    表  2   常见网络的权重数据大小和浮点操作数

    Table  2   Weights Data Size and Floating-point Operands of Common Networks

    CNN 权重数
    据大小
    浮点计
    算次数
    卷积层
    权重比
    重/%
    全连接
    层权重
    比重/%
    卷积层
    计算比
    重/%
    全连接
    层计算
    比重/%
    LeNet-5 240 KB 2.2 MFLOPs 4.17 95.83 82.4 17.6
    AlexNet 240 MB 832 MFLOPs 6.01 93.99 93.2 6.8
    VGG16 528 MB 14.4 GFLOPs 10.64 89.36 99.3 0.7
    下载: 导出CSV

    表  3   部分神经网络的置信区间

    Table  3   Confidence Interval for a Partial Neural Network %

    CNN(数据集) 识别准确率 置信区间
    LeNet-5(MNIST) 99.20 0.21
    AlexNet(CIFAR-10) 82.33 0.90
    VGG16(CIFAR-10) 91.30 0.80
    AlexNet(ImageNet) 58.00(Top 1)
    86.86(Top 5)
    0.81
    下载: 导出CSV

    表  4   LeNet-5添加不同k值组合的k-means层后的识别准确率

    Table  4   Recognition Accuracy of Network for LeNet-5 After Adding k-means Layers with Different k Value Combinations %

    卷积层 聚类值 C1
    k=4 k=8 k=16 k=32 k=64
    C2 k=4 99.02 99.14 99.06 99.15 99.12
    k=8 99.10 99.13 99.21 99.16 99.21
    k=16 99.12 99.16 99.19 99.20 99.16
    k=32 99.13 99.20 99.19 99.17 99.19
    k=64 99.13 99.21 99.22 99.19 99.20
    注:C1 k=4表示在第1个卷积层前添加聚类值为4 的k-means层,MNIST基准为99.20%.
    下载: 导出CSV

    表  5   AlexNet添加不同kk-means层后的识别准确率

    Table  5   Recognition Accuracy of Network for AlexNet After Adding Different k-means Layers with Different k Values %

    聚类值 C1 C2 C3 C4 C5
    k=4 66.60 81.28 81.70 82.23 82.80
    k=8 78.57 82.67 82.66 82.76 83.06
    k=16 81.92 82.82 82.79 82.77 82.98
    k=32 82.56 82.96 82.79 82.97 82.98
    k=64 82.97 82.93 82.96 82.86 82.87
    注:C1表示在第1个卷积层前添加k-means层,k=4表示添加聚类值为4的k-means层,CIFAR-10基准为82.33%.
    下载: 导出CSV

    表  6   VGG16和AlexNet所有的卷积层前添加相同k值的k-means层后在CIFAR-10上的识别准确率

    Table  6   Recognition Accuracy on CIFAR of VGG16 and AlexNet After Adding k-means Layers with the Same k Value  %

    CNN(数据集)基准k=4k=8k=16k=32k=64
    AlexNet(CIFAR-10)82.3361.2877.3481.4782.6782.84
    VGG16(CIFAR-10)91.3061.5882.9188.7090.8191.45
    下载: 导出CSV

    表  7   全连接层经过聚类压缩后的网络识别准确率

    Table  7   Recognition Accuracy of the Network After Clustering Compression on Fully Connected Layers

    CNN(数据集) 基准/% k值组合 识别准确率/%
    LeNet-5(MNIST) 99.20 (8, 4, 32) 99.03
    AlexNet(CIFAR-10) 82.33 (4, 4, 32) 81.43
    VGG16(CIFAR-10) 91.30 (4, 4, 2) 90.72
    注:(8, 4, 32)表示3个全连接层权重分别进行聚类值k=8, 4, 32的聚类处理.
    下载: 导出CSV
  • [1]

    Krizhevsky A, Sutskever I, Hinton G. ImageNet classification with deep convolutional neural networks[J]. Advances in Neural Information Processing Systems, 2012, 25(2): 1097−1105

    [2]

    Graves A, Schmidhuber J. Framewise phoneme classification with bidirectional LSTM networks[C]//Proc of the IEEE Int Joint Conf on Neural Networks. Piscataway, NJ: IEEE, 2005: 2047−2052

    [3]

    Conneau A, Schwenk H, Barrault L, et al. Very deep convolutional networks for text classification[C]//Proc of the 15th Conf of the European Chapter of the Association for Computational Linguistics. Stroudsburg, PA: ACL, 2017: 1107−1116

    [4]

    Zhang Jiaqi, Chen Xiangru, Song Mingcong, et al. Eager pruning: Algorithm and architecture support for fast training of deep neural networks[C]//Proc of the 46th Annual Int Symp on Computer Architecture (ISCA). New York: ACM, 2019: 292−303

    [5]

    Yu J, Lukefahr A, Palframan D, et al. Scalpel: Customizing DNN pruning to the underlying hardware parallelism[C]//Proc of the 44th Int Symp on Computer Architecture (ISCA). New York: ACM, 2017: 548−560

    [6]

    Sharify S, Lascorz A D, Mahmoud M, et al. Laconic deep learning inference acceleration[C]//Proc of the 46th Int Symp Computer Architecture (ISCA). New York: ACM, 2019: 304−317

    [7]

    Wang Naigang, Choi J, Brand D, et al. Training deep neural networks with 8-bit floating point numbers[C]//Proc of the 32nd Int Conf on Neural Information Processing Systems (NIPS’19). New York: ACM, 2019: 7686−7695

    [8]

    Hoefler T, Dan A, Ben-Nun T, et al. Sparsity in deep learning: Pruning and growth for efficient inference and training in neural networks[J]. arXiv preprint, arXiv: 2102: 00554, 2021

    [9]

    Ding Caiwen, Liao Siyu, Wang Yanzhi, et al. CirCNN: Accelerating and compressing deep neural networks using block-circulant weight matrices[C]//Proc of the 50th Annual IEEE/ACM Int Symp on Microarchitecture. New York: ACM, 2017: 395–408

    [10]

    Guo Cong, Zheng Chen, Leng Jingwen, et al. ANT: Exploiting adaptive numerical data type for low-bit deep neural network quantization[C]//Proc of the 55th IEEE/ACM Int Symp on Microarchitecture (MICRO). Piscataway, NJ: IEEE, 2022: 1414−1433

    [11]

    Parashar A, Rhu M, Mukkara A, et al. SCNN: An accelerator for compressed-sparse convolutional neural networks[C]//Proc of the 44th Annual Int Symp on Computer Architecture. Los Alamitos, CA: IEEE Computer Society, 2017: 27−40

    [12] 吴欣欣,欧焱,李文明,等. 基于粗粒度数据流架构的稀疏卷积神经网络加速[J]. 计算机研究与发展,2021,58(7):1504−1517

    Wu Xinxin, Ou Yan, Li Wenming, et al. Acceleration of sparse convolutional neural network based on coarse-grained dataflow architecture[J]. Journal of Computer Research and Development, 2021, 58(7): 1504−1517 (in Chinese)

    [13]

    Han Song, Liu Xingyu, Mao Huizi, et al. EIE: Efficient inference engine on compressed deep neural network[C]//Proc of the 43rd Int Symp on Computer Architecture. New York: ACM, 2016: 243−254

    [14]

    Chen Yunji, Chen Tianshi, Du Zidong, et al. DianNao: A small-footprint high-throughput accelerator for ubiquitous machine-learning[C]//Proc of the 19th Int Conf on Architectural Support for Programming Languages and Operating Systems. New York: ACM, 2014: 269−284

    [15]

    Du Zidong, Fasthuber R, Chen Tianshi, et al. ShiDianNao: Shifting vision processing closer to the sensor[C]//Proc of the 42nd Annual Int Symp on Computer Architecture. New York: ACM, 2015: 92–104

    [16]

    Farabet C, Martini B, Corda B, et al. NeuFlow: A runtime reconfigurable dataflow processor for vision[C]//Proc of the 29th Computer Vision and Pattern Recognition Workshops. Piscataway, NJ: IEEE, 2011: 109−116

    [17]

    Chen Y H, Emer J, Sze V. Eyeriss: A spatial architecture for energy-efficient dataflow for convolutional neural networks[C]//Proc of the 43rd Annual Int Symp on Computer Architecture. New York: ACM, 2016: 367–379

    [18]

    Sankaradas M, Jakkula V, Cadambi S, et al. A massively parallel coprocessor for convolutional neural networks[C]//Proc of the 20th IEEE Int Conf on Application-Specific Systems, Architectures and Processors. Piscataway, NJ: IEEE, 2009: 53−60

    [19]

    Sriram V, Cox D, Tsoi K H, et al. Towards an embedded biologically-inspired machine vision processor[C]//Proc of the 9th Int Conf on Field-Programmable Technology. Piscataway, NJ: IEEE, 2011: 273−278

    [20]

    Chakradhar S, Sankaradas M, Jakkula V, et al. A dynamically configurable coprocessor for convolutional neural networks[C]//Proc of the 38th Int Symp on Computer Architecture. New York: ACM, 2010: 247−257

    [21]

    Edward H, Li Shiyu, Hai H L, et al. Cascading structured pruning: Enabling high data reuse for sparse DNN accelerators [C]//Proc of the 49th Annual Int Symp on Computer Architecture (ISCA 2022). New York: ACM, 2022: 522−535

    [22]

    Li Gang, Xu Weixiang, Song Zhuoran, et al. Ristretto: An atomized processing architecture for sparsity-condensed stream flow in CNN[C]//Proc of the 55th IEEE/ACM Int Symp on Microarchitecture (MICRO). Piscataway, NJ: IEEE, 2022: 1434−1450

    [23] 陈桂林,马胜,郭阳. 硬件加速神经网络综述[J]. 计算机研究与发展,2019,56(2):240−253

    Chen Guilin, Ma Sheng, Guo Yang. Survey on accelerating neural network with hardware[J]. Journal of Computer Research and Development, 2019, 56(2): 240−253(in Chinese)

    [24] 纪荣嵘,林绍辉,晁飞,等. 深度神经网络压缩与加速综述[J]. 计算机研究与发展,2018,55(9):1871−1888

    Ji Rongrong, Lin Shaohui, Chao Fei, et al. Deep neural network compression and acceleration: A review[J]. Journal of Computer Research and Development, 2018, 55(9): 1871−1888 (in Chinese)

    [25]

    Jouppi N P, Young C, Patil N, et al. In-datacenter performance analysis of a tensor processing unit[C]//Proc of the 44th Annual Int Symp on Computer Architecture. New York: ACM, 2017: 1−12

    [26]

    Reagen B, Whatmough P, Adolf R, et al. Minerva: Enabling low-power, highly-accurate deep neural network accelerators[C]//Proc of the 43rd Annual Int Symp on Computer Architecture (ISCA). New York: ACM, 2016: 267−278

    [27]

    Chen Guilin, Wang Guanwu, Ju Jian, et al. Research on the influence of k-means cluster preprocessing on adversarial images[C]//Proc of the 7th Int Conf on Information Technology. New York: ACM, 2019: 248−252

    [28]

    Szegedy C, Zaremba W, Sutskever I, et al. Intriguing properties of neural networks[J]. arXiv preprint, arXiv: 1312.6199, 2013

    [29]

    Xu Dongkuan, Tian Yingjie. A comprehensive survey of clustering algorithms[J]. Annals of Data Science, 2015, 2(2): 165−193 doi: 10.1007/s40745-015-0040-1

    [30]

    Macqueen J. Some methods for classification and analysis of multivariate observations[C]//Proc of the 5th Berkeley Symp on Mathematical Statistics and Probability. Oakland, CA: University of California, 1966: 281−297

    [31] 陈桂林,马胜,郭阳,等. 通过k-means算法实现神经网络的加速和压缩[J]. 计算机工程与科学,2019,41(5):796−803

    Chen Guilin, Ma Sheng, Guo Yang. Towards convolutional neural network acceleration and compression via k-means cluster[J]. Computer Engineering & Science, 2019, 41(5): 796−803 (in Chinese)

    [32]

    Krizhevsky A, Hinton G. Learning multiple layers of features from tiny images[J]. Handbook of Systemic Autoimmune Diseases, 2009, 1(4): 1−60

    [33]

    Li Zhen, Wang Yuqing, Zhi Tian, et al. A survey of neural network accelerators[J]. Frontiers of Computer Science, 2017, 11(5): 746−761 doi: 10.1007/s11704-016-6159-1

    [34]

    Yang Zichao, Moczulski M, Denil M, et al. Deep fried convnets[C]//Proc of the IEEE Int Conf on Computer Vision (ICCV). Los Alamitos, CA: IEEE Computer Society, 2015: 1476−1483

    [35]

    Denton E, Zaremba W, Bruna J, et al. Exploiting linear structure within convolutional networks for efficient evaluation[C]//Proc of the 27th Int Conf on Neural Information Processing Systems (NIPS’14). New York: ACM, 2014: 1269–1277

    [36]

    Srinivas S, Babu R V. Data-free parameter pruning for deep neural networks[J]. arXiv preprint, arXiv: 1507.06149, 2015

图(6)  /  表(7)
计量
  • 文章访问数:  143
  • HTML全文浏览量:  19
  • PDF下载量:  68
  • 被引次数: 0
出版历程
  • 收稿日期:  2023-05-25
  • 修回日期:  2024-01-03
  • 网络出版日期:  2024-12-11
  • 刊出日期:  2025-01-31

目录

/

返回文章
返回