CN111008691A - 一种权值和激活值都二值化的卷积神经网络加速器架构 - Google Patents

一种权值和激活值都二值化的卷积神经网络加速器架构 Download PDF

Info

Publication number
CN111008691A
CN111008691A CN201911077710.3A CN201911077710A CN111008691A CN 111008691 A CN111008691 A CN 111008691A CN 201911077710 A CN201911077710 A CN 201911077710A CN 111008691 A CN111008691 A CN 111008691A
Authority
CN
China
Prior art keywords
memory
arithmetic unit
result
output
neural network
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.)
Granted
Application number
CN201911077710.3A
Other languages
English (en)
Other versions
CN111008691B (zh
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.)
Beijing Zhongke Shengxin Technology Co Ltd
Original Assignee
Beijing Zhongke Shengxin Technology Co Ltd
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 Beijing Zhongke Shengxin Technology Co Ltd filed Critical Beijing Zhongke Shengxin Technology Co Ltd
Priority to CN201911077710.3A priority Critical patent/CN111008691B/zh
Publication of CN111008691A publication Critical patent/CN111008691A/zh
Application granted granted Critical
Publication of CN111008691B publication Critical patent/CN111008691B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及一种权值和激活值都二值化的卷积神经网络加速器架构,包括:用于存储权值数据的第一存储器、第五存储器和第九存储器;用于存储特征图数据的第三存储器、第四存储器、第七存储器和第八存储器;第二运算器、第六运算器和第十运算器。本发明提供的权值和激活值都二值化的卷积神经网络加速器架构;数据相乘由异或操作实现,异或可以不使用乘法器完成,而使用逻辑资源完成运算。

Description

一种权值和激活值都二值化的卷积神经网络加速器架构
技术领域
本发明涉及一种权值和激活值都二值化的卷积神经网络加速器架构,属于集成电路设计技术领域。
背景技术
近些年来,卷积神经网络在许多领域得到了广泛的发展。在卷积神经网络中,由于数据的参数个数多,在每个参数使用浮点数存储的情况下会占用比较高的存储空间,因此在FPGA实现架构中使用定点数表示每个数据是常采用的表示方法。
在卷积神经网络的前向推断的过程中对于数据精度的要求较低,有学者提出采用16bit,8bit位宽甚至更低位宽表示数据,在不会对最终结果造成较大的影响的前提下,可以用1bit的数据来表示权值和特征图中的数值。对于二值神经网络来讲,因为将原本卷积中的乘法变成两个1bit数据相乘操作,所以二值神经网络的特点决定了适合于硬件实现,能够带来计算方面的能效优势。当用FPGA实现16bit位宽的卷积神经网络,运算速度受到FPGA中乘法器数量的限制。
发明内容
本发明要解决技术问题是:克服上述技术的缺点,提供一种以异或逻辑运算替代乘法运算的权值和激活值都二值化的卷积神经网络加速器架构。
为了解决上述技术问题,本发明提出的技术方案是:一种权值和激活值都二值化的卷积神经网络加速器架构,包括:用于存储权值数据的第一存储器、第五存储器和第九存储器;用于存储特征图数据的第三存储器、第四存储器、第七存储器和第八存储器;第二运算器、第六运算器和第十运算器;所述第一存储器的输出连接所述第二运算器;所述第二运算器的输出分别连接所述第三存储器和第四存储器;所述第三存储器和第四存储器的输出连接所述第六运算器,所述第五存储器的输出连接所述第六运算器;所述第六运算器的输出连接所述第七存储器和第八存储器;所述第七存储器和第八存储器的输出连接所述第十运算器,所述第九存储器的输出连接所述第十运算器;所述第一存储器、第二运算器、第三存储器和第四存储器构成第一层运算;所述第三存储器、第四存储器、第五存储器、第六运算器、第七存储器和第八存储器构成第二层运算;所述第七存储器、第八存储器、第九存储器和第十运算器构成第三层运算。
上述方案进一步的改进在于:所述第二运算器、第六运算器和第十运算器均含有异或模块和累加模块。
上述方案进一步的改进在于:当所述第二运算器所得结果保存至所述第四存储器时,所述第六运算器所得结果保存至所述第七存储器;当所述第二运算器所得结果保存至所述第三存储器时,所述第六运算器所得结果保存至所述第八存储器。
上述方案进一步的改进在于:所述第一层运算、第二层运算和第三层运算内部采用并行计算。
一种如上述的权值和激活值都二值化的卷积神经网络加速器架构计算方法,在存储特征图数据的存储器中取得特征图数据,并拆分送至若干运算器中进行异或操作;在存储权值数据的存储器中取得权值数据取得3个1bit的权值数据;并与取得的特征图数据自头开始的3bit数据依次异或,至取得的特征图数据全部与权值数据异或完成;之后对结果进行累加;累加输出的值由accum_num个点相加得到,结果中有result_hw个1,即累加输出的结果是result_hw;此时,result_hw代表的实际值result_act由公式result_act=-result_hw+accum_num-result_hw;得到。
上述方案进一步的改进在于:实际值result_act进行归一化操作转变为两个数的比较操作,公式为:
Figure BDA0002263000470000021
其中μ代表像素点的均值,σ是标准差,γ是缩放系数,ε是防止除数为0的很小的正数,β是偏移项。
本发明提供的权值和激活值都二值化的卷积神经网络加速器架构;数据相乘由异或操作实现,异或可以不使用乘法器完成,而使用逻辑资源完成运算。FPGA中具有大量的LUT(Look-Up-Table,查找表),其中高端的FPGA芯片的LUT数量可以达到几十万个,可以很高效地完成异或操作。本发明提供的权值和激活值都二值化的卷积神经网络加速器架构使用双缓存结构解决读写冲突问题,提高吞吐率。使用FPGA中的逻辑资源完成数据计算,避免性能受限于乘法器资源。输入特征图之间的并行度和输出特征图之间的并行度可以灵活调整。通过软件预计算的方式使得包含乘法加法的归一化操作在硬件上可以通过比较操作完成,节省硬件计算资源。
附图说明
下面结合附图对本发明作进一步说明。
图1是本发明一个优选的实施例结构示意图。
图2是图1中单层并行结构示意图。
图3是图2中单层内部数据处理结构示意图
具体实施方式
实施例
本实施例的权值和激活值都二值化的卷积神经网络加速器架构,如图1,权值数据在FPGA中的存储器101,存储器105,存储器109中进行存储,特征图数据放在FPGA中的存储器103,存储器104,存储器107,存储器108中进行存储。运算器102,运算器106,运算器110由逻辑资源构成。存储器101的输出连接运算器102;运算器102的输出分别连接存储器103和存储器104;存储器103和存储器104的输出连接运算器106,存储器105的输出连接运算器106;运算器106的输出连接存储器107和存储器108;存储器107和存储器108的输出连接运算器110,存储器109的输出连接运算器110;存储器101、运算器102、存储器103和存储器104构成第一层运算;存储器103、存储器104、存储器105、运算器106、存储器107和存储器108构成第二层运算;107存储器、存储器108、存储器109和运算器110构成第三层运算。
由此,构成了每层运算器与存放权值的存储器和存放特征图的存储器相连。存放权值的存储器与计算模块进行直连,并且每个运算器都连接有存储器;存储器101的输出与运算器102的输入相连,存储器105的输出与运算器106的输入相连,存储器109的输出与运算器110相连。存放特征图的存储器与相邻两层计算模块进行相连。在存储输出特征图中,使用两个相同的存储器存放同一个运算器输出的结果,存储器103,104存放运算器102得到的结果,存储器107,108存放运算器106得到的结果。
运算器102、运算器106和运算器110均含有异或模块和累加模块。
如图2,以第二层为例,存储器201,202,203,204与图1中的103,104对应。存储器105与205,206对应。存储器107,108与221,222对应。运算器106与207,208,209,210,211,212,213,214,215,216,217,218,219,220对应。
整体架构上,存储输入特征图的存储器201,202,203,204与异或模块207-214相连。存储权值的存储器205与异或模块207,208,209,210相连。存储权值的存储器206与异或模块211,212,213,214相连。异或模块207,208,209,210的输出与累加模块215相连。累加模块215将异或模块207,208,209,210的输出求和并且完成累加功能。累加模块215输出的值送给比较模块217。比较模块217输出的值和按位与模块219模块的输入相连,按位与模块219的输出与存储器221相连。216,218,220,222模块的功能分别与215,217,219,221相同。
当有两张输出特征图在同时计算,分别是存储器221,222中的输出特征图。如图3,表示了图2中其中一个输出特征图的计算。以图2中存储器221(即图2中的上半部分)的计算为例。存储器301与201,202,203,204对应。存储器302与205对应。异或模块303,304与207,208,209,210对应。累加模块305,306与215对应。比较模块307,308与217对应。按位与模块309与219对应。存储器310与221对应。
输入特征图存储器301取出的数与异或模块303,304相连。权值存储器302取出的数与异或模块303,304相连。异或模块303,304的输出分别于累加模块305,306相连。累加模块305,306的输出分别与比较模块307,308相连。比较模块的输出被送入按位与模块309。按位与模块309的输出连接至输出特征图存储器310。
对于权值和激活值都二值化的二值卷积神经网络整体上使用流水线结构。每一层的计算资源都互相独立,对于每一层的计算都有特定的计算资源。计算过程为了避免读写冲突的问题,采用了双缓存结构。对于同一个特征图,有两块同样的存储器存储数据。所有运算器被分为两组,奇数组和偶数组,在同一时刻,奇数组计算得到的数据被放入第一组存储器中,偶数组计算得到的数据被放入第二组存储器中。当计算结束后,下一张输入图像被送进。此时奇数组中的计算层计算得到的结果被放入第二组存储器,而偶数组计算层计算得到的数据被放入第一组存储器。计算完成后又经过下一轮的切换。运算器102进行计算得到的结果被保存到103存储器中的时候,106运算器进行计算的结果被保存到108存储器。而当运算器102计算得到的结果被保存到104存储器中的时候,106运算器进行计算得到的结果被保存到107存储器。
在一层内部,采用输入特征图之间同时并行计算以及输出特征图之间同时并行计算的方案。图2中为一个示例,其中有2个输出特征图同时进行运算,累加模块,比较模块,按位与模块的个数都是2。图2中有4个输入特征图依次计算,每次201,202,203,204共4个存储器中其中一个存储器里的值同时送入异或模块207-214中。存储权值的存储器205与异或模块207-210模块直连。存储权值的存储器206与异或模块211-214模块直连。累加模块215将异或模块的输出求和并完成累加,比较模块217将累加模块215输出的值与软件预先计算的值进行比较。按位与模块219将比较模块输出的多个值进行池化操作,池化通过按位与完成。按位与模块219的输出连接到存储器221中,完成结果的写入。
图3表示了具体计算过程,对于卷积层中最频繁的异或操作,通过使用FPGA中的LUT资源来实现。由于数据只有1个bit,而一个存储器在一个时钟周期内最高可以同时得到36bit的数据。因此对数据采用打包和拆分的操作。当取数的时候,从输入特征图存储器301中同时取得32bit数据,然后再拆分到不同的异或模块303,304中进行异或操作。对于权值,32bit数据共用3个1bit权值,权值只需要使用3bit。从权值存储器302中一次取出3bit权值数据。在不考虑两边补0,同时考虑池化操作的情况下,输入特征图的边长是32,输出特征图的边长是16。三个权值会和输入特征图中一次取出的32bit的数据最开始的3bit数据一一异或,同时下一个时钟周期三个权值会和与刚才的3bit数据相邻的3bit数据一一异或。在图3中共有32个这样的异或模块,同时计算1个输出特征图中的32个值。
异或之后的三个值会进入累加模块进行累加。累加模块305会首先将异或模块303输出的三个值进行相加。与此同时,累加模块305会不断对303模块输出的这些值累加。累加的结束通过控制信号控制,当属于同一个输出像素点的值计算过程完成时,累加控制信号即给出结束累加的信号。
累加模块305输出的值会与软件预计算得到的值进行比较,该操作由比较模块307完成。在硬件中,FPGA中的0表示+1,1表示-1。假设305累加模块输出的值由accum_num个点相加得到,结果中有result_hw个1,即累加器输出的结果是result_hw。此时result_hw代表的实际值result_act可以下公式得到:
result_act=-result_hw+accum_num-result_hw;
对于归一化操作,由比较操作得到,以下公式代表了原先的归一化操作和硬件中比较操作的等效性:
Figure BDA0002263000470000061
公式中μ代表像素点的均值,σ是标准差,γ是缩放系数,ε是防止除数为0的很小的正数,β是偏移项。
比较模块307得到的值需要经过池化,池化操作通过按位与模块309完成。按位与模块309会将相邻2bit的数据进行按位与操作,该操作可以完成池化的功能,将特征图的边长缩短为原来的一半。按位与模块309的输出需要最终写入输出特征图存储器310中。同样对于存数的操作,由于每个输出值都是1bit,如果每次只往存储器中写入1个bit,不能充分利用存储器带宽。因此我们将1bit数据拼接成16bit再统一写进BRAM存储器。
本发明不局限于上述实施例。凡采用等同替换形成的技术方案,均落在本发明要求的保护范围。

Claims (6)

1.一种权值和激活值都二值化的卷积神经网络加速器架构,其特征在于,包括:用于存储权值数据的第一存储器、第五存储器和第九存储器;用于存储特征图数据的第三存储器、第四存储器、第七存储器和第八存储器;第二运算器、第六运算器和第十运算器;所述第一存储器的输出连接所述第二运算器;所述第二运算器的输出分别连接所述第三存储器和第四存储器;所述第三存储器和第四存储器的输出连接所述第六运算器,所述第五存储器的输出连接所述第六运算器;所述第六运算器的输出连接所述第七存储器和第八存储器;所述第七存储器和第八存储器的输出连接所述第十运算器,所述第九存储器的输出连接所述第十运算器;所述第一存储器、第二运算器、第三存储器和第四存储器构成第一层运算;所述第三存储器、第四存储器、第五存储器、第六运算器、第七存储器和第八存储器构成第二层运算;所述第七存储器、第八存储器、第九存储器和第十运算器构成第三层运算。
2.根据权利要求1所述的权值和激活值都二值化的卷积神经网络加速器架构,其特征在于:所述第二运算器、第六运算器和第十运算器均含有异或模块和累加模块。
3.根据权利要求1所述的权值和激活值都二值化的卷积神经网络加速器架构,其特征在于:当所述第二运算器所得结果保存至所述第四存储器时,所述第六运算器所得结果保存至所述第七存储器;当所述第二运算器所得结果保存至所述第三存储器时,所述第六运算器所得结果保存至所述第八存储器。
4.根据权利要求1所述的权值和激活值都二值化的卷积神经网络加速器架构,其特征在于:所述第一层运算、第二层运算和第三层运算内部采用并行计算。
5.如权利要求1所述的权值和激活值都二值化的卷积神经网络加速器架构计算方法,其特征在于:在存储特征图数据的存储器中取得特征图数据,并拆分送至若干运算器中进行异或操作;在存储权值数据的存储器中取得权值数据取得3个1bit的权值数据;并与取得的特征图数据自头开始的3bit数据依次异或,至取得的特征图数据全部与权值数据异或完成;之后对结果进行累加;累加输出的值由accum_num个点相加得到,结果中有result_hw个1,即累加输出的结果是result_hw;此时,result_hw代表的实际值result_act由公式result_act=-result_hw+accum_num-result_hw;得到。
6.根据权利要求5所述的权值和激活值都二值化的卷积神经网络加速器架构计算方法,其特征在于:实际值result_act进行归一化操作转变为两个数的比较操作,公式为:
Figure FDA0002263000460000021
其中μ代表像素点的均值,σ是标准差,γ是缩放系数,ε是防止除数为0的很小的正数,β是偏移项。
CN201911077710.3A 2019-11-06 2019-11-06 一种权值和激活值都二值化的卷积神经网络加速器架构 Active CN111008691B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911077710.3A CN111008691B (zh) 2019-11-06 2019-11-06 一种权值和激活值都二值化的卷积神经网络加速器架构

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911077710.3A CN111008691B (zh) 2019-11-06 2019-11-06 一种权值和激活值都二值化的卷积神经网络加速器架构

Publications (2)

Publication Number Publication Date
CN111008691A true CN111008691A (zh) 2020-04-14
CN111008691B CN111008691B (zh) 2022-03-08

Family

ID=70111402

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911077710.3A Active CN111008691B (zh) 2019-11-06 2019-11-06 一种权值和激活值都二值化的卷积神经网络加速器架构

Country Status (1)

Country Link
CN (1) CN111008691B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111582451A (zh) * 2020-05-08 2020-08-25 中国科学技术大学 图像识别层间并行流水线型二值化卷积神经网络阵列架构
CN111797977A (zh) * 2020-07-03 2020-10-20 西安交通大学 一种用于二值化神经网络的加速器结构及循环展开方法
CN112906886A (zh) * 2021-02-08 2021-06-04 合肥工业大学 结果复用的可重构bnn硬件加速器及图像处理方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347318B1 (en) * 1999-09-01 2002-02-12 Hewlett-Packard Company Method, system, and apparatus to improve performance of tree-based data structures in computer programs
CN108665063A (zh) * 2018-05-18 2018-10-16 南京大学 用于bnn硬件加速器的双向并行处理卷积加速系统
CN108764466A (zh) * 2018-03-07 2018-11-06 东南大学 基于现场可编程门阵列的卷积神经网络硬件及其加速方法
CN109871949A (zh) * 2017-12-22 2019-06-11 泓图睿语(北京)科技有限公司 卷积神经网络加速器及加速方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6347318B1 (en) * 1999-09-01 2002-02-12 Hewlett-Packard Company Method, system, and apparatus to improve performance of tree-based data structures in computer programs
CN109871949A (zh) * 2017-12-22 2019-06-11 泓图睿语(北京)科技有限公司 卷积神经网络加速器及加速方法
CN108764466A (zh) * 2018-03-07 2018-11-06 东南大学 基于现场可编程门阵列的卷积神经网络硬件及其加速方法
CN108665063A (zh) * 2018-05-18 2018-10-16 南京大学 用于bnn硬件加速器的双向并行处理卷积加速系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111582451A (zh) * 2020-05-08 2020-08-25 中国科学技术大学 图像识别层间并行流水线型二值化卷积神经网络阵列架构
CN111582451B (zh) * 2020-05-08 2022-09-06 中国科学技术大学 图像识别层间并行流水线型二值化卷积神经网络阵列架构
CN111797977A (zh) * 2020-07-03 2020-10-20 西安交通大学 一种用于二值化神经网络的加速器结构及循环展开方法
CN112906886A (zh) * 2021-02-08 2021-06-04 合肥工业大学 结果复用的可重构bnn硬件加速器及图像处理方法

Also Published As

Publication number Publication date
CN111008691B (zh) 2022-03-08

Similar Documents

Publication Publication Date Title
CN109063825B (zh) 卷积神经网络加速装置
CN111008691B (zh) 一种权值和激活值都二值化的卷积神经网络加速器架构
CN109543830B (zh) 一种用于卷积神经网络加速器的拆分累加器
CN108229671B (zh) 一种降低加速器外部数据存储带宽需求的系统和方法
CN110780923B (zh) 应用于二值化卷积神经网络的硬件加速器及其数据处理方法
CN112292816A (zh) 处理核心数据压缩和存储系统
CN112286864B (zh) 加速可重构处理器运行的稀疏化数据处理方法及系统
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN112668708B (zh) 一种提高数据利用率的卷积运算装置
CN110362293B (zh) 乘法器、数据处理方法、芯片及电子设备
CN111768458A (zh) 一种基于卷积神经网络的稀疏图像处理方法
CN114781629B (zh) 基于并行复用的卷积神经网络的硬件加速器及并行复用方法
CN109086879B (zh) 一种基于fpga的稠密连接神经网络的实现方法
CN113344179A (zh) 基于fpga的二值化卷积神经网络算法的ip核
CN113741858A (zh) 存内乘加计算方法、装置、芯片和计算设备
CN112734020A (zh) 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法
CN113222129B (zh) 一种基于多级缓存循环利用的卷积运算处理单元及系统
CN113485750B (zh) 数据处理方法及数据处理装置
CN113313244B (zh) 面向加法网络的近存储神经网络加速器及其加速方法
CN112862091B (zh) 一种基于快速卷积的资源复用型神经网络硬件加速电路
CN113918120A (zh) 计算装置、神经网络处理设备、芯片及处理数据的方法
CN110766136B (zh) 一种稀疏矩阵与向量的压缩方法
US20210357758A1 (en) Method and device for deep neural network compression
CN115293978A (zh) 卷积运算电路和方法、图像处理设备
CN112163612B (zh) 基于fpga的大模板卷积图像匹配方法、装置及系统

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
CB02 Change of applicant information

Address after: 100044 1-609, floor 6, building 1, courtyard 42, Xiejie street, gaoliangqiao, Haidian District, Beijing

Applicant after: Beijing Zhongke Shengxin Technology Co.,Ltd.

Address before: Room 403-14, 4th floor, building 6, yard 54, Shijingshan Road, Shijingshan District, Beijing 100043

Applicant before: Beijing Zhongke Shengxin Technology Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant