CN113902097A - 针对稀疏化cnn神经网络模型的游程编码加速器及方法 - Google Patents

针对稀疏化cnn神经网络模型的游程编码加速器及方法 Download PDF

Info

Publication number
CN113902097A
CN113902097A CN202111157742.1A CN202111157742A CN113902097A CN 113902097 A CN113902097 A CN 113902097A CN 202111157742 A CN202111157742 A CN 202111157742A CN 113902097 A CN113902097 A CN 113902097A
Authority
CN
China
Prior art keywords
data
run
module
zero values
zero
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.)
Pending
Application number
CN202111157742.1A
Other languages
English (en)
Inventor
王宇宣
苏杭
潘红兵
彭成磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University
Original Assignee
Nanjing University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University filed Critical Nanjing University
Priority to CN202111157742.1A priority Critical patent/CN113902097A/zh
Publication of CN113902097A publication Critical patent/CN113902097A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning 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)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开一种针对稀疏化CNN神经网络模型的游程编码加速器及其方法。加速器包括:顶层控制器,用于识别输入输出数据类型并进行分组处理,将权重数据和激励数据传输给游程编码模块;游程编码模块,用于压缩计算模块输出的结果数据,并将压缩编码后的计算结果传输给外部存储器;游程解码模块,用于解压缩从外部存储器中读取的数据,并将数据传输给数据门控;数据门控,用于识别输入激励数据和权重数据的零值,并为零值跳过乘加操作;计算模块,用于对数据门控传输的权重数据和激励数据执行乘加操作并给出计算结果。本发明基于数据压缩和数据门控实现减少CNN模型所需的存储空间和功耗,具有高能效和无需大量访问内存等优点。

Description

针对稀疏化CNN神经网络模型的游程编码加速器及方法
技术领域
本发明涉及一种针对稀疏化CNN神经网络模型的游程编码加速器及其方法,属于数字信号处理及硬件加速神经网络算法领域。
背景技术
神经网络是当前人工智能领域的研究热点,LeNet是最早的卷积神经网络之一,并且推动了深度学习领域的发展。由于受到计算机性能的影响,虽然LeNet在图像分类中取得了较好的成绩,但并没有引起关注。CNN是在LeNet的基础上加深了网络的结构,学习更丰富更高维的图像特征。CNN使用更深的网络结构,即卷积层+卷积层+池化层来提取图像的特征,并用Relu替换之前的sigmoid作为激活函数。在2010年的ImageNet LSVRC-2010上,CNN取得了惊人的成绩。
然而由于CNN模型相较更大,卷积运算所需的数据规模庞大,导致了其在数据传输上产生了极大的能量消耗,并且在传统计算机上的运行速度较慢。常用的硬件加速优化方法有增加硬件运算过程中的并行度,提高运算速度,缺点是占用过多硬件资源。此外现有的硬件优化方法还有近似处理数据,即对复杂的激活函数用近似函数处理,优点是减少了计算量,缺点是降低了精度。
存内计算(CIM)通过并行乘法累加(MAC)操作和采用片上缓存的方式减少内存访问提高能耗效率,但是,大规模的神经网络所需容量远超过片上存储器的容量,因此,基于存内计算(CIM)的处理器仍会遇到内存瓶颈。
模型优化是一种常用的解决方法,在训练过程中,基于大小的权重剪枝会逐渐将模型权重减小为零,实现模型稀疏性,而稀疏模型易于压缩。
发明内容
为了克服存内计算神经网络过程中仍需大量访问内存同时产生大量耗能的问题,本发明针对稀疏化的CNN模型,提出一种利用游程编码的加速器及其加速方法。
本发明加速器采用的技术方案如下:
针对稀疏化CNN神经网络模型的游程编码加速器,包括:
顶层控制器,用于识别输入输出数据类型并进行分组处理,将权重数据和激励数据传输给游程编码模块;
游程编码模块,用于压缩计算模块输出的结果数据,并将压缩编码后的计算结果传输给外部存储器;
游程解码模块,用于解压缩从外部存储器中读取的数据,并将数据传输给数据门控;
数据门控,用于识别输入激励数据和权重数据的零值,并为零值跳过乘加操作;
计算模块,用于对数据门控传输的权重数据和激励数据执行乘加操作并给出计算结果。
本发明利用上述游程编码加速器的加速方法,包括如下步骤:所述顶层控制器对输入图像进行处理,将待压缩的数据传输给游程编码模块,并将接收的待解压缩数据传输给游程解码模块;所述游程编码模块对所述顶层控制器传来的数据进行压缩,并将压缩后的结果数据存入外部存储器;所述游程解码模块解压缩从外部存储器写入计算模块的输入激励数据和权值数据,然后将得到的数据传输给所述数据门控,所述数据门控记录解压缩后输入激励数据和权值数据中的零值,并为零值跳过后面的乘加运算操作。
进一步地,所述游程编码模块进行数据压缩的具体方法如下:
1)将连续零值记录为“游程”,“游程”的最大长度为32,因此连续零值的位数可以以一个二进制5bit数表示;
2)将零值后的非零数表示为一个16位二进制数;
3)重复步骤1)的操作,继续计数零值游程编码;
4)重复步骤2)的操作,继续非零值编码;
5)每一组5bit零值的“游程”后都是一组16bit的非零数,为5+16bit的一组数组,一个编码数据包共有三组该21bit类型的数组,在三组数组的后一位以一个1bit数表示该数据包是否是全部编码的最后一个数据包,是表示为“1”,否则为“0”,即每一组编码数据包都为3*(5+16)+1即64bit的二进制数组;
6)除首次输入到卷积层的数据外,其余特征图数据都以步骤1)至5)的方法得到的格式存储在外部存储器中。
进一步地,所述游程解码模块对于CNN模型的第一层不进行解压缩,对于CNN模型第一层以外的卷积层,所述游程解码模块解压缩的具体方法如下:
1)每收到一组64bit压缩数据包,分别拆分其中的三组“游程”,即得到三组5+16bit和一位判断传输是否结束标志;
2)记录三组5bit的“游程”,展开三个非零数,依次传入数据门控;
3)数据门控接收连续零值的位数,并将其记录,对应零值在特征图展开为一维数组或多维向量后的位置,为这些位置的像素点跳过乘加运算,而非零值则写入计算模块进行运算。
本发明的加速器方法利用游程编码模块可以降低数据规模,实现减少对DRAM的访问,降低存储带宽需求,并且利用数据门控可以跳过对零值的计算,节省大量功耗及算力,具有高能效,体积小,无需频繁访问片外存储的优点。
附图说明
图1是本发明一种针对CNN模型的加速器硬件结构框图;
图2是本发明一种针对CNN模型的加速器运算方法流程图;
图3是本发明实施例中加速器编码格式示意图。
具体实施方式
下面结合附图对本发明进行详细说明。
如图1所示的一种针对稀疏化CNN神经网络模型的游程编码加速器结构框图,该加速器包括:顶层控制器,用于识别输入输出数据类型并进行分组处理,将权重数据和激励数据等输入传递给游程编码模块;游程编码模块,用于压缩计算模块输出的结果数据,并将压缩编码后的计算结果传输给外部存储器(DRAM);游程解码模块,用于解压缩从外部存储器中读取的数据,并将数据传输给数据门控;数据门控,用于识别解码后的输入激励数据和权重数据中的零值,记录零值在数据展开为向量数组中的位置,并为其跳过乘加操作;计算模块,用于对数据门控传输的权重数据和激励数据执行乘加操作并给出计算结果。顶层控制器分别与解码模块、编码模块、数据门控相连;编码模块分别与计算模块、DRAM、顶层控制器相连;解码模块分别与顶层控制器、数据门控、计算模块相连;数据门控分别与顶层控制器的门控、解码模块的门控、计算模块相连。
如图2所示为卷积网络运算方法流程示意图,顶层控制器控制信号流,控制输入数据经解码模块解码、经数据门控展开权重数据和输入激励的存放与分发。对于从外部存储器发送的输入数据,权重和激励数据以及其所属的层数由上位机通过64bit接口位宽发送到加速器,首先由顶层控制器判断输入是否经过编码,具体逻辑为卷积层第一层为未编码,其余层为已编码;对于已经编码的数据,由解码模块解编码并发送给数据门控模块执行展开和跳零操作。
其中,解编码的处理步骤为:对于一个64bit的数据包,首先将其按位截取为3组“游程”和非零的组合,具体为:[63:59]位为第一组连续零值的个数,[58:43]为第一个非零数,[42:38]为第二组连续零值的个数,[37:32]为第二个非零数,[31:17]为第三组连续零值的个数,[16:1]为第三个非零数,第0位则为数据传输结束标志,当该位为1时,代表本次解编码结束。数据门控模块接收解编码模块发送的3组“游程”和非零数的组合,其中,非零数将被数据门控模块传输给计算模块进行后续的乘法累加操作,“游程”则用于判断非零数被送往计算模块的位置。
数据门控进行跳零操作的具体实施方式为:对于计算模块,其包含多个计算单元,每一个计算单元执行单个权值和激励的乘法操作;数据门控按照接收到的“游程”,即连续零值的个数,将拉低对应连续多个计算单元的使能信号,即该单元不执行运算操作;数据门控接收的非零数,则将被传输给已被跳过的计算单元的下一个计算单元执行运算操作。计算模块将所有乘法运算结果累加,经过激活函数操作后传给编码模块。
对于从计算模块发送到编码模块的计算结果,由于经过激活函数操作后其中产生了大量零值,故按照游程编码的方法对其进行编码操作,步骤为:对于从计算模块输出的计算结果,为其执行并入串出操作,即将所有的计算结果多次编码为64bit游程编码的形式传输给外部存储器,具体地:
1)依次扫描计算模块输出的每一个中间结果,若为零,则记录为一个“游程”长度,将连续的零值个数记录为游程,其中“游程”的最大长度为32,“游程”以一个5bit二进制数表示,若连续零值超过32个,将仅记录前32个连续零值的游程为“11111”。例如:0,0,0,0,0,13,经编码后游程即为5’b00101;0,0……0(33个0),经编码后游程为5’b11111。
2)一组连续零值的“游程”记录完毕后,对于其后的非零值或第33个零值,将这个数表示为16bit二进制数,即若该数为非零数,则表示为其本身的二进制,若该数仍为零,则记录为零;例如:0,0,0,0,0,13,经编码后游程即为001010000000000001101;0,0……0(33个0),经编码后游程为0000……00(21个0)。
3)重复步骤1)和2)操作两次,继续计数连续零值的个数并进行编码。
4)在三次编码后,新的数据流将会由3组5+16bit=63bit的数据包形式组成,若此组数据为计算模块给的最后一组计算结果,则在这63bit的数据包后放置“1”,代表该组数据为所有数据包的末位,编码结束,否则,若计算模块的计算结果仍未完成,则在63bit数组后放置“1”,代表数组未结束。
如图3所示为编码模块的编码方法示意图。对于经计算模块的激活函数处理后的输出数据,开始计数值为“0”的位数,将连续“0”值的位数记为一个5bit数,在连续“0”值后的非零值或第33个“0”值则以其16位二进制数记,并在此值后继续计数“0”的个数,每计数一组连续“0”值和非零值为一组21位数,每三组这样的21位数后为1位的末尾判断位,即21*3+1=64位数为一个编码数组,其最后的一位表示这组数是否为数据的最后一组,若是,则表示为“1”,若不是,则表示为“0”。例如,0,0,0,0,25,0,0,68,0,0,71的编码为“4,25,2,68,2,71”对应的二进制数,其中,4、2、2为“0”的游程,即连续零值的位数。除首次输入到卷积层的数据外,其余数据都以游程编码的压缩格式存储在外部存储器中,加速器从外部存储器中读取已编码的输入特征图,并通过解码模块对其进行解压缩,然后经数据门控发送到计算模块。计算模块给出的计算结果,由编码模块进行压缩,然后将其传输到外部存储器。
除输入图片外,其余CNN模型每一层的输出特征图都经过上述编码方法后以压缩格式存储在外部存储器中,从外部存储器读取特征图并返回计算模块需要解压缩数据,数据解压缩的具体方法如下:(1)对于CNN模型第一层,顶层控制器将输入原始图片直接传输到后续模块;(2)对于除CNN模型第一层以外的卷积层或全连接层等,顶层控制器控制输入特征图经解码模块解码的具体方法如下:
对于一个64bit的数据包,首先将其按位截取为3组“游程”和非零的组合,具体为:[63:59]位为第一组连续零值的个数,[58:43]为第一个非零数,[42:38]为第二组连续零值的个数,[37:32]为第二个非零数,[31:17]为第三组连续零值的个数,[16:1]为第三个非零数,第0位则为数据传输结束标志,当该位为1时,代表本次解编码结束。
数据门控模块接收解编码模块发送的3组“游程”和非零数的组合,其中,非零数将被数据门控模块传输给计算模块进行后续的乘法累加操作,“游程”则用于判断非零数被送往计算模块的位置。
综上所述,利用本发明提出的一种针对CNN模型的硬件加速器,可以有效的减少内存访问需求,节约硬件资源,提高运算速度,编码模块的使用保证了低内存访问和较小的占用面积,总体结构能使系统达到更高的吞吐率,同时节约能耗,有效通过硬件加速神经网络。。

Claims (4)

1.针对稀疏化CNN神经网络模型的游程编码加速器,其特征在于,包括:
顶层控制器,用于识别输入输出数据类型并进行分组处理,将权重数据和激励数据传输给游程编码模块;
游程编码模块,用于压缩计算模块输出的结果数据,并将压缩编码后的计算结果传输给外部存储器;
游程解码模块,用于解压缩从外部存储器中读取的数据,并将数据传输给数据门控;
数据门控,用于识别输入激励数据和权重数据的零值,并为零值跳过乘加操作;
计算模块,用于对数据门控传输的权重数据和激励数据执行乘加操作并给出计算结果。
2.利用如权1所述针对稀疏化CNN神经网络模型的游程编码加速器的加速方法,其特征在于,所述顶层控制器对输入图像进行处理,将待压缩的数据传输给游程编码模块,并将接收的待解压缩数据传输给游程解码模块;所述游程编码模块对所述顶层控制器传来的数据进行压缩,并将压缩后的结果数据存入外部存储器;所述游程解码模块解压缩从外部存储器写入计算模块的输入激励数据和权值数据,然后将得到的数据传输给所述数据门控,所述数据门控记录解压缩后输入激励数据和权值数据中的零值,并为零值跳过后面的乘加运算操作。
3.根据权利要求2所述的加速方法,其特征在于,所述游程编码模块进行数据压缩的具体方法如下:
1)将连续零值记录为“游程”,“游程”的最大长度为32,因此连续零值的位数可以以一个二进制5bit数表示;
2)将零值后的非零数表示为一个16位二进制数;
3)重复步骤1)的操作,继续计数零值游程编码;
4)重复步骤2)的操作,继续非零值编码;
5)每一组5bit零值的“游程”后都是一组16bit的非零数,为5+16bit的一组数组,一个编码数据包共有三组该21bit类型的数组,在三组数组的后一位以一个1bit数表示该数据包是否是全部编码的最后一个数据包,是表示为“1”,否则为“0”,即每一组编码数据包都为3*(5+16)+1即64bit的二进制数组;
6)除首次输入到卷积层的数据外,其余特征图数据都以步骤1)至5)的方法得到的格式存储在外部存储器中。
4.根据权利要求3所述的加速方法,其特征在于,所述游程解码模块对于CNN模型的第一层不进行解压缩,对于CNN模型第一层以外的卷积层,所述游程解码模块解压缩的具体方法如下:
1)每收到一组64bit压缩数据包,分别拆分其中的三组“游程”,即得到三组5+16bit和一位判断传输是否结束标志;
2)记录三组5bit的“游程”,展开三个非零数,依次传入数据门控;
3)数据门控接收连续零值的位数,并将其记录,对应零值在特征图展开为一维数组或多维向量后的位置,为这些位置的像素点跳过乘加运算,而非零值则写入计算模块进行运算。
CN202111157742.1A 2021-09-30 2021-09-30 针对稀疏化cnn神经网络模型的游程编码加速器及方法 Pending CN113902097A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111157742.1A CN113902097A (zh) 2021-09-30 2021-09-30 针对稀疏化cnn神经网络模型的游程编码加速器及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111157742.1A CN113902097A (zh) 2021-09-30 2021-09-30 针对稀疏化cnn神经网络模型的游程编码加速器及方法

Publications (1)

Publication Number Publication Date
CN113902097A true CN113902097A (zh) 2022-01-07

Family

ID=79189466

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111157742.1A Pending CN113902097A (zh) 2021-09-30 2021-09-30 针对稀疏化cnn神经网络模型的游程编码加速器及方法

Country Status (1)

Country Link
CN (1) CN113902097A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023160735A3 (zh) * 2023-06-09 2024-03-21 南京大学 一种运算方法和运算单元

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023160735A3 (zh) * 2023-06-09 2024-03-21 南京大学 一种运算方法和运算单元

Similar Documents

Publication Publication Date Title
CN102122960B (zh) 一种针对二进制数据的多字符组合无损数据压缩方法
CN107565971B (zh) 一种数据压缩方法及装置
CN107483059B (zh) 一种基于动态霍夫曼树的多路数据编解码方法及装置
CN108416427A (zh) 卷积核堆积数据流、压缩编码以及深度学习算法
CN1369970A (zh) 使用前缀预测的位自适应编码方法
CN109379598B (zh) 一种基于fpga实现的图像无损压缩方法
CN110021369B (zh) 基因测序数据压缩解压方法、系统及计算机可读介质
CN114697672B (zh) 基于游程全零编码的神经网络量化压缩方法及系统
CN115866287A (zh) 一种智慧校园管理平台的数据高效传输方法
CN112418424A (zh) 一种具有极高压缩比的剪枝深度神经网络的分层稀疏编码方法
CN114697654A (zh) 一种神经网络量化压缩方法及系统
CN113902097A (zh) 针对稀疏化cnn神经网络模型的游程编码加速器及方法
CN101488225B (zh) 一种位平面编码器的vlsi系统
CN115828044B (zh) 基于神经网络双重稀疏性矩阵乘法运算电路、方法和装置
WO2020114283A1 (zh) 数据处理方法及装置
CN109698703B (zh) 基因测序数据解压方法、系统及计算机可读介质
US20220392117A1 (en) Data compression and decompression system and method thereof
CN114337682A (zh) 一种Huffman编码压缩装置
CN114697673B (zh) 基于流间数据混洗的神经网络量化压缩方法及系统
Dang Image lossless compression algorithm optimization and FPGA implementation
CN112950729A (zh) 一种基于自编码器和熵编码的图像压缩方法
CN115333544B (zh) 一种数据解压缩电路及其方法、芯片及电子设备
CN111275184B (zh) 一种实现神经网络压缩的方法、系统、装置和存储介质
CN112865804B (zh) 三值神经网络稀疏性权重的压缩计算单元
CN201365321Y (zh) 一种位平面编码器的vlsi系统架构

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