CN112734021A - 一种基于位稀疏计算的神经网络加速方法 - Google Patents
一种基于位稀疏计算的神经网络加速方法 Download PDFInfo
- Publication number
- CN112734021A CN112734021A CN202011625895.XA CN202011625895A CN112734021A CN 112734021 A CN112734021 A CN 112734021A CN 202011625895 A CN202011625895 A CN 202011625895A CN 112734021 A CN112734021 A CN 112734021A
- Authority
- CN
- China
- Prior art keywords
- data
- bit
- neural network
- module
- dynamic fixed
- 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.)
- Withdrawn
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 48
- 230000001133 acceleration Effects 0.000 title claims abstract description 28
- 238000004364 calculation method Methods 0.000 title claims abstract description 17
- 238000000034 method Methods 0.000 title claims abstract description 17
- 238000013139 quantization Methods 0.000 claims abstract description 12
- 238000009825 accumulation Methods 0.000 claims abstract description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 5
- 238000000638 solvent extraction Methods 0.000 claims 1
- 238000013527 convolutional neural network Methods 0.000 abstract description 6
- 238000005265 energy consumption Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种基于位稀疏计算的神经网络加速方法。首先进行动态定点量化,将浮点数据转化为动态定点数据;为了提高数据位的稀疏程度,采用二进制编码和booth编码。最后对于神经网络的加速,针对卷积层和全连接层进行神经网络加速单元设计。神经网络加速单元包括数据读取模块、片上缓存模块、位稀疏运算模块和累加模块,用于完成卷积层和全连接层的运算。本发明利用数据动态定点化、高并行度、数据复用、位稀疏运算模块,减少了冗余无用的计算和内存访问,对神经网络的inference进行加速,可以提高CNN的实时性,实现了较高的计算性能,同时降低了能耗。
Description
技术领域
本发明涉及人工智能技术领域,尤其是涉及一种基于位稀疏计算的神经网络加速方法。
背景技术
近年来,神经网络在各种领域相比于传统算法有了极大的进步。在图像、视频、语音处理领域,各种各样的网络模型被提出,例如卷积神经网络、循环神经网络。训练较好的CNN模型把ImageNet数据集上5类顶尖图像的分类准确率从73.8%提升到了84.7%,也靠其卓越的特征提取能力进一步提高了目标检测准确率。RNN在语音识别领域取得了最新的词错率记录。总而言之,由于高度适应大量模式识别问题,神经网络已经成为许多人工智能应用的有力备选项。然而,神经网络模型仍旧存在计算量大、存储复杂问题。同时,神经网络的研究目前还主要聚焦在网络模型规模的提升上。例如,做224x224图像分类的最新CNN模型需要390亿浮点运算(FLOP)以及超过500MB的模型参数。由于计算复杂度直接与输入图像的大小成正比,处理高分辨率图像所需的计算量可能超过1000亿。为了减少神经网络的计算量以及存储量,本发明提出一种基于位稀疏的神经网络加速方法。
发明内容
针对现在技术中存在的问题,本发明提供一种基于位并行计算的神经网络加速方法,针对神经网络计算数据有效位的计算,减少神经网络的计算量,同时采用高并行度以及数据复用减少内存访问次数来降低能耗。
一种基于位稀疏计算的神经网络加速方法,步骤如下:
步骤(1).动态定点量化,将浮点数据转化为动态定点数据;
神经网络中有大量的参数,如果采用32位浮点数表示,不仅对内存的占用空间大,而且读取效率不高。故在不影响精度的前提下,采用动态定点数量化,将神经网络的32位浮点数据量转化为16位动态定点数据,可以大大减少数据的存储空间,同时提高数据读写的效率。
步骤(2).为了提高数据位的稀疏程度,采用二进制编码和booth编码。
步骤(3).神经网络加速单元设计;
神经网络中主要的运算在于卷积层和全连接层,它们计算方式都是一样的,都是乘加运算。那么对于神经网络的加速,针对卷积层和全连接层进行神经网络加速单元设计。
神经网络加速单元包括数据读取模块(DMA)、片上缓存模块、位稀疏运算模块和累加模块,用于完成卷积层和全连接层的运算。
神经网络的参数量是巨大的,同时片上缓存模块的大小是有限的,所以不可能将神经网络的参数量一次性读取进来,所以需要将所需要的数据权重和特征进行分块,分批次进行读取和运算。数据的分块方式采用输入通道和输出通道并行的分块方式,数据读取模块即DMA模块读取数据的时采用输入通道和输出通道并行的分块方式读取所需要的权重和特征。DMA模块采用突发模式读取数据,即根据所需数据的长度以及数据存放的基地址进行数据读取,突发长度为16。
片上缓存模块用于对权重和特征数据的缓存,采用乒乓buffer单元,增加运算时的数据复用,降低对外部存储器的访问次数,降低访存产生的功耗。更加高效地供给数据给位稀疏运算模块。片上缓存单元的存在,可以减少对外部存储器的重复访问,同时更好利用数据复用机制,大大降低了访存功耗。
位稀疏运算模块位稀疏运算单元包括数据编码模块和位运算单元。数据编码模块利用二进制编码和booth编码两种方式,根据编码后的数据位稀疏程度,选择数据位稀疏程度更高的编码数据结果。位运算单元利用编码得到的数据,进行相应的运算。
由于数据的分块方式采用输入通道和输出通道并行的分块方式,数据并没有一次性读取进来,所以一次运算结果并不能输出,经过多次运算后,通过累加器模块将所需要的运算结果进行累加后完成输出。
本发明有益效果如下:
本发明利用数据动态定点化、高并行度、数据复用、位稀疏运算模块,减少了冗余无用的计算和内存访问,对神经网络的inference进行加速,可以提高CNN的实时性,实现了较高的计算性能,同时降低了能耗。
附图说明
图1是本发明的位稀疏算法原理示意图;
图2是本发明的数据分块原理示意图;
图3是本发明的神经网络加速单元结构示意图;
图4是本发明位稀疏运算模块结构示意图。
具体实施方式
下面结合附图和实施方式对本发明进行进一步说明。
本发明方法,具体步骤包括:
一种基于位稀疏行的神经网络加速方法,具体步骤如下:
步骤(1).动态定点量化,将神经网络的32浮点数据量化为16位动态定点数据。
首先在精度允许接受范围下,将浮点数据从32位压缩到16位,降低数据的位宽,得到16位浮点数据。利用动态定点量化,将浮点数据转化为动态定点数据,所述的动态定点数据即定点数据设置有一个可移动的小数点位置。具体表示方式如下:
B=C/2m
式子中B是浮点数据,C是其定点数,m是小数点的位置。
采用动态定点量化,转化后的动态定点数据的乘法运算和加法运算,需要利用小数点的位置进行计算,根据小数点的位置进行移位得到最终结果。
步骤(2).为了提高数据位的稀疏程度,采用二进制编码和booth编码。
神经网络中主要的运算为乘加运算,即权重和特征的乘加操作。在上述步骤(1)的数据量化后,得到16位定点数据,两个16bit的数据相乘,普通硬件乘法器的实现本质即移位相加,那么16位数据的所有位都要参与运算。通过位稀疏算法,采用二进制编码和booth编码方式,使数据不改变的前提下,提高了数据位的稀疏程度。利用二进制编码和booth编码后的16位数据中的0比特元素不参与运算,只有有效位为1的数据参与运算。在数据进行乘法运算的层面上,分解了乘法运算的部分,精确到位级别的运算,不会改变数据运算的结果,不仅降低数据的运算量,而且降低了运算时产生的功耗。
将步骤(1)得到的动态定点数进行相应的编码后,传输给位稀疏运算单元运算。
步骤.(3)神经网络加速单元设计
神经网络中主要的运算在于卷积层和全连接层,它们计算方式都是一样的,都是乘加运算。那么对于神经网络的加速,针对卷积层和全连接层进行神经网络加速单元设计。
如图3所示,神经网络加速单元包括数据读取模块(DMA)、片上缓存模块、位稀疏运算模块和累加模块,用于完成卷积层和全连接层的运算。
首先,神经网络加速单元所需要的数据权重和特征,按照输入通道和输出通道并行的分块方式,通过DMA将动态定点化后的数据分多次进行读取,每次读取的数据的长度为DMA的突发长度16。由DMA读取到的数据特征和权重分别放在片上缓存模块的存储单元(memory)中,片上缓存模块的作用是增加运算时的数据复用,降低对外部存储器的访问次数,降低访存产生的功耗。位稀疏运算单元包括数据编码模块和位运算单元。数据编码模块利用二进制编码和booth编码两种方式,根据编码后的数据位稀疏程度,选择数据位稀疏程度更高的编码数据结果。为了提高数据位的稀疏程度,采用这两种编码方式的原因为不同的数据利用不同编码得到的位稀疏程度不同,有的利用二进制编码得到的位稀疏程度高,有的利用booth编码后的数据位稀疏程度高,选择数据位稀疏程度更高的编码数据结果。位运算单元利用编码得到的数据,进行相应的运算。片上缓存模块和位稀疏运算模块之间采用握手信号,即位稀疏运算模块需要接收到片上缓存模块的相应的数据才能进行运算。同时当前位稀疏运算模块中的数据未完成运算,则片上缓存模块中的数据不会发送给位稀疏运算模块。数据供给的速率和运算的速率需要同步。通过片上缓存模块中的乒乓buffer提升效率,即两块数据缓存区,一块存放即将参与运算的数据,另一块存放下一次需要运算的数据。那么,当数据进入运算单元进行运算时,下下次的数据也会进入一块buffer中等待着,这样就能够高效提供数据给运算单元,同时运算单元也能够一直在运算,提高了运算的效率。累加模块将相应的运算结果进行累加后完成输出,由于数据的分块方式,数据的输出要经过多次读取和运算后才能输出,因此将运算完但是还不能输出的数据进行暂时存放,等待真正累加完得到相应的结果再进行输出。
如图4所示,位稀疏运算模块包含编码模块和运算模块,编码模块是根据二进制编码和booth编码选择位稀疏程度更高的编码结果,得到其有效位的位置。特征A和权重W相乘可以分解到位级别,其运算方式可以根据以下公式:
A×W=∑(-1)s2t×∑(-1)s'2t'
式子中t和t'是有效数据的位置,s和s'是数据编码后的符号位。特征和权重数据的有效位可能会有多个,t0、t1...tn和t0'、t'1...t'n,同样也会引入相应个有效位的符号位。所以数据运算的结果可能需要多个周期才可以算完,所以数据位稀疏的程度越高,所需要的周期就越少,计算的越快,所以利用编码方式提高数据的位稀疏程度是必不可少的。经过编码后的有效位的个数越少,则数据运算越快。
从图4分析,首先特征和权重通过位稀疏运算模块的编码模块,提高数据的位稀疏程度,得到相应的有效位和符号位。数据的有效位和符号位的个数是相同的,一个周期处理一组。有效位t和t'进行相加得到term,同时有效位的符号位进行与运算得到符号位sign,然后利用term和sign进行移位运算,送入到部分和中。当然,刚才参与运算只是一组有效位,数据的剩余有效位会按照相同的方式进行运算,知道所有有效位运算完成,部分和才可以输出。
位稀疏算法原理如图1所示:
以第一个例子来说,两个8位的数据6和3相乘,其普通乘法器的运算方法是利用所有位参与运算,移位相加。但是利用其二进制编码的数据0000_0110和0000_0011,实质上可以其有效位1所在的位置进行相应的移位运算后再相加,即左移1位、两次左移2位和一次左移3位后得到2、8、8,相加得到的结果是等于18。
以第二个例子来说,同样是两个8位的数据62和3相乘,如果利用二进制编码的话即0011_1110和0000_0011,那么62的有效位为1的数量较多,并没有很好的利用位稀疏性。这时候,可以利用另外一种编码方式booth编码,62经过booth编码后其实只有第六位和第零位是有效位,同时也引入了符号位,即26-21。然后利用其有效位和符号位进行移位加法运算,即一次左移7位、一次左移6位、一次左移2位、一次左移1位,最终引入符号位得到的运算结果是
128+64-4-2=186。
数据分块方式如图2所示,即权重和特征的分块。由于片上缓存资源的有限,所以需要对数据进行分块,多次进行读取。数据的分块方式是根据输入通道和输出通道并行度去切分的,输入通道的并行度为Tm,输出通道并行度为Tn。
Claims (3)
1.一种基于位稀疏计算的神经网络加速方法,其特征在于,步骤如下:
步骤(1).动态定点量化,将浮点数据转化为动态定点数据;
采用动态定点数量化,将神经网络的32位浮点数据量转化为16位动态定点数据;
步骤(2).为了提高数据位的稀疏程度,采用二进制编码和booth编码;
步骤(3).神经网络加速单元设计;
对于神经网络的加速,针对卷积层和全连接层进行神经网络加速单元设计;
神经网络加速单元包括数据读取模块、片上缓存模块、位稀疏运算模块和累加模块,用于完成卷积层和全连接层的运算;
将所需要的数据权重和特征进行分块,分批次进行读取和运算;数据的分块方式采用输入通道和输出通道并行的分块方式,数据读取模块即DMA模块读取数据的时采用输入通道和输出通道并行的分块方式读取所需要的权重和特征;DMA模块采用突发模式读取数据,即根据所需数据的长度以及数据存放的基地址进行数据读取,突发长度为16;
片上缓存模块用于对权重和特征数据的缓存,采用乒乓buffer单元,增加运算时的数据复用,降低对外部存储器的访问次数,降低访存产生的功耗;
位稀疏运算模块位稀疏运算单元包括数据编码模块和位运算单元;数据编码模块利用二进制编码和booth编码两种方式,根据编码后的数据位稀疏程度,选择数据位稀疏程度更高的编码数据结果;位运算单元利用编码得到的数据,进行相应的运算;
由于数据的分块方式采用输入通道和输出通道并行的分块方式,数据并没有一次性读取进来,所以一次运算结果并不能输出,经过多次运算后,通过累加器模块将所需要的运算结果进行累加后完成输出。
2.根据权利要求1所述的一种基于位稀疏计算的神经网络加速方法,其特征在于,步骤(1).动态定点量化,将神经网络的32浮点数据量化为16位动态定点数据;
首先在精度允许接受范围下,将浮点数据从32位压缩到16位,降低数据的位宽,得到16位浮点数据;利用动态定点量化,将浮点数据转化为动态定点数据,所述的动态定点数据即定点数据设置有一个可移动的小数点位置;具体表示方式如下:
B=C/2m
式子中B是浮点数据,C是其定点数,m是小数点的位置;
采用动态定点量化,转化后的动态定点数据的乘法运算和加法运算,需要利用小数点的位置进行计算,根据小数点的位置进行移位得到最终结果。
3.根据权利要求2所述的一种基于位稀疏计算的神经网络加速方法,其特征在于,步骤(2)具体操作如下:
为了提高数据位的稀疏程度,采用二进制编码和booth编码;
神经网络中主要的运算为乘加运算,即权重和特征的乘加操作;通过位稀疏算法,采用二进制编码和booth编码方式,使数据不改变的前提下,提高了数据位的稀疏程度;利用二进制编码和booth编码后的16位数据中的0比特元素不参与运算,只有有效位为1的数据参与运算;在数据进行乘法运算的层面上,分解了乘法运算的部分,精确到位级别的运算,不会改变数据运算的结果,不仅降低数据的运算量,而且降低了运算时产生的功耗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011625895.XA CN112734021A (zh) | 2020-12-31 | 2020-12-31 | 一种基于位稀疏计算的神经网络加速方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011625895.XA CN112734021A (zh) | 2020-12-31 | 2020-12-31 | 一种基于位稀疏计算的神经网络加速方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112734021A true CN112734021A (zh) | 2021-04-30 |
Family
ID=75609761
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011625895.XA Withdrawn CN112734021A (zh) | 2020-12-31 | 2020-12-31 | 一种基于位稀疏计算的神经网络加速方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112734021A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113705794A (zh) * | 2021-09-08 | 2021-11-26 | 上海交通大学 | 一种基于动态激活位稀疏的神经网络加速器设计方法 |
-
2020
- 2020-12-31 CN CN202011625895.XA patent/CN112734021A/zh not_active Withdrawn
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113705794A (zh) * | 2021-09-08 | 2021-11-26 | 上海交通大学 | 一种基于动态激活位稀疏的神经网络加速器设计方法 |
CN113705794B (zh) * | 2021-09-08 | 2023-09-01 | 上海交通大学 | 一种基于动态激活位稀疏的神经网络加速器设计方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
US20210357736A1 (en) | Deep neural network hardware accelerator based on power exponential quantization | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
CN110070178A (zh) | 一种卷积神经网络计算装置及方法 | |
CN113424202A (zh) | 针对神经网络训练调整激活压缩 | |
Sun et al. | Vaqf: Fully automatic software-hardware co-design framework for low-bit vision transformer | |
CN109859281B (zh) | 一种稀疏神经网络的压缩编码方法 | |
CN111147862B (zh) | 一种基于目标编码的端到端图像压缩方法 | |
CN110020721B (zh) | 一种基于参数压缩的目标检测深度学习网络优化方法 | |
CN111507465B (zh) | 一种可配置的卷积神经网络处理器电路 | |
CN109389208B (zh) | 数据的量化装置及量化方法 | |
CN113361695B (zh) | 卷积神经网络加速器 | |
CN112633477A (zh) | 一种基于现场可编程阵列的量化神经网络加速方法 | |
CN114745553A (zh) | 一种基于大数据的图像数据存储方法 | |
CN114970853A (zh) | 一种跨范围量化的卷积神经网络压缩方法 | |
CN114640354A (zh) | 数据压缩方法、装置、电子设备及计算机可读存储介质 | |
CN112734021A (zh) | 一种基于位稀疏计算的神经网络加速方法 | |
Qi et al. | Learning low resource consumption cnn through pruning and quantization | |
Kim et al. | V-LSTM: An efficient LSTM accelerator using fixed nonzero-ratio viterbi-based pruning | |
CN109389209B (zh) | 处理装置及处理方法 | |
CN113902109A (zh) | 一种神经网络规则化位串行计算的压缩方法及装置 | |
CN109697509B (zh) | 处理方法及装置、运算方法及装置 | |
CN113313244A (zh) | 面向加法网络的近存储神经网络加速器及其加速方法 | |
CN116842304A (zh) | 一种不规则稀疏矩阵的计算方法及系统 | |
CN114595802A (zh) | 一种基于数据压缩的脉冲神经网络加速方法和装置 |
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 | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20210430 |