CN111738427A - 一种神经网络的运算电路 - Google Patents
一种神经网络的运算电路 Download PDFInfo
- Publication number
- CN111738427A CN111738427A CN202010815191.2A CN202010815191A CN111738427A CN 111738427 A CN111738427 A CN 111738427A CN 202010815191 A CN202010815191 A CN 202010815191A CN 111738427 A CN111738427 A CN 111738427A
- Authority
- CN
- China
- Prior art keywords
- data
- result
- feature map
- weight
- 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
Links
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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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)
- 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)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开了一种神经网络的运算电路,属于神经网络的硬件实现。本发明通过对卷积计算中乘法器的输出数据配置缩放因子,以动态调整其输出数据的大小;并在进行卷积中的累加操作时,动态量化计算后的结果数据,以保证数据的有效精度,进而保持同层数据的尺度统一,并在对结果数据的截位操作时,通过数据溢出检测,使其自适应进行饱和截位;本发明还基于所提出的自适应的阈值调整技术对进入乘法器的数据进行阈值判断,从而在保证精度的情况下将部分接近0值的数绕过乘法计算,以及基于所提出的可配置的压缩传输技术,对游程编码方式进行可配置化改进,使其满足不同的网络压缩需求。本发明不仅提升神经网络推理过程的数据精度,且节省硬件资源开销。
Description
技术领域
本发明属于人工智能技术领域,具体涉及一种神经网络的硬件实现。
背景技术
神经网络硬件指的是支持模拟神经网络模型的规模及神经计算速度的硬件系统,其主要实现硬件包括FPGA(Field Programmable Gate Array)实现、神经芯片以及DSP(Digital Signal Processing)加速板等,其硬件实现的核心是神经网络架构的设计,作为人工智能技术落地的重要环节,神经网络硬件逐渐成为了研究热点,尤其对于神经网络硬件的架构设计,目前已经在云端、终端等多种应用场合得到广泛应用。
神经网络硬件的主要作用是加速神经网络算法,为神经网络算法提供强大算力,使其能够满足神经网络落地应用环节的实时性需求。神经网络硬件主要通过所构建的运算单元和基本逻辑单元实现神经网络中的前向推理计算和反向学习训练,该运算单元和基本逻辑单元主要以乘加计算操作为核心。随着基于神经网络所构建的深度学习模型的复杂度越来越高,参数量越来越多,从而导致难以在处理器芯片内部存储所有参数,大量的乘加运算,使得功耗也越来越高;并且对于神经网络硬件架构的计算精度和算力的要求也越来越高。因而促使了以FPGA为硬件平台的神经网络硬件架构的产生,在该方案中,主要聚焦在解决算力和数据传输方面,根据不同的算法任务需求,通过硬件资源堆叠,以满足速度要求;或者,通过单方面的提高数据位宽,满足算法精度需求,进而实现神经网络算法的落地应用。对于大量的参数,已知的处理方法包括:在神经网络训练时进行权重剪枝以及在硬件计算时跳过0值的乘法以及对权重进行游程编码,再进行片内外的数据传输。
目前,大部分神经网络硬件设计主要关注于神经网络的推理速度,对于精度的要求较低;或者为了节约硬件资源的开销,而降低了精度要求;又或者精度要求很高,但不具备动态调整的灵活性,使其只能单一化的服务于某个具体的任务要求,缺乏泛化能力。对于权重剪枝和硬件跳零操作虽然能够使得神经网络变得稀疏,在一定程度上减少乘法操作次数,但是神经网络权重的剪枝操作通常会带来一定程度的精度损失,剪枝产生的0值权重越多通常精度损失会越大,因此需要设计人员针对不同的神经网络和应用主观调整剪枝后神经网络的稀疏性,无法做到自适应的调节。通过游程编码对权重进行压缩传输虽然能够增加传输速度和降低传输功耗,但是这种编码压缩方式缺乏灵活性,无法满足不同的神经网络压缩需求,比如根据特征图的长宽决定压缩数据的长度等等。因此需要在这种技术方法的基础上进行可配置化的改进。
发明内容
本发明的发明目的在于:针对上述存在的问题,提供一种高精度低功耗的神经网络近似计算的硬件实现电路,从而提升神经网络推理过程的数据精度,使其适应更多高精度需求任务,提升泛化能力;同时可以通过灵活的自适应配置,节省硬件资源的开销,减少一定的硬件成本,提升硬件的利用率。
本发明的神经网络的运算电路,用于实现神经网络的卷积运算,包括数据控制单元、权重数据存储单元、特征图数据存储单元、卷积计算单元、数据缩放单元、数据累加缓存单元、截位控制单元和卷积结果数据存储单元;
其中,数据控制单元用于控制各单元之间的数据传输,控制权重数据存储单元、特征图数据存储单元和卷积结果数据存储单元的数据存储和读取;以及配置可调参数,所述可调参数包括数据缩放单元的缩放因子和截位控制单元的截位因子;
权重数据存储单元用于存储卷积核的权重数据,所述特征图数据存储单元用于存储待进行卷积运算的特征图数据;
卷积计算单元分别从权重数据存储单元和特征图数据存储单元读入权重数据和特征图数据,完成卷积运算中的特征图数据与权重数据的乘积运算,并将乘积结果发送给数据缩放单元;
数据缩放单元基于配置的缩放因子对每个乘积结果进行移位操作,得到移位操作结果;
数据累加缓存单元包括多个累加缓存子单元,所述累加缓存子单元呈二维阵列排列;所述数据缩放单元基于数据控制单元分配的累加缓存子单元,将移位操作结果存入数据累加缓存单元的对应累加缓存子单元中;
每个累加缓存子单元在未收到数据控制单元发出的输出控制指令前,将其内的所有数据进行累加处理,得到一次累加结果,且每次累加处理后,仅在累加缓存子单元中保留当前累加结果,并等待下一次的移位操作结果输入,进行下一次的累加处理;当收到数据控制单元发出的输出控制指令时,各累加缓存子单元将当前的累加结果输出到截位控制单元;
截位控制单元对输入的各累加结果进行截取操作,得到数据位宽为特征图数据或权重数据的数据位宽的截取结果,即卷积运算处理结果;并将截取结果存入卷积结果数据存储单元。
基于卷积结果数据存储单元的卷积结果数据可得到当前卷积运算后的特征图数据;当需要继续对卷积运算后的特征图数据进行卷积运算处理时,则将卷积结果数据存储单元中的卷积结果数据读入特征图数据存储单元,然后基于本发明的运算电路进行新的一次卷积运算处理。
进一步的,卷积计算单元包括多个乘法器阵列,乘法器阵列的个数用于表征运算电路能处理的图像的单次最大通道数;乘法器阵列的维度与累加缓存子单元阵列的维度相同;基于数据控制单元为每个乘法器分配的特征图数据位置索引与权重数据位置索引读入特征图数据和权重数据,并按乘法器阵列的列或行输出一次乘法结果至数据缩放单元;数据缩放单元同时对当前次的乘法结果分别进行移位操作,并将移位操作结果存入数据控制单元为当前次的乘法结果分配的累加缓存子单元中;不同乘法器阵列的同一列或行对应的累加缓存子单元相同,从而实现对不同通道的同一位置点的卷积运算结果的叠加;
进一步的,本发明的卷积计算单元还包括两个比较器、存储0值的寄存器、数据选择器和与门;其中一个比较器的输入为特征图数据和特征图阈值,即特征图比较器;另一个比较器的输入为权重数据和权重阈值,即权重比较器;
所述特征图比较器和权重比较器接入与门,与门的输出端分别连接乘法器和数据选择器;
所述数据选择器包括两路数据输入通道,其中一路与乘法器的输出端相连;另一路与存储0值的寄存器相连;数据选择器的输出端连接数据缩放单元的输入端。
进一步的,截取操作具体为:
定义特征图数据或权重数据的数据位宽为Nbit,基于预置的截位因子作为起始位置,截取累加结果的连续的N-1bit数据,并将累加结果的最高位作为截取结果的最高位,得到数据位宽为Nbit的截取结果。
进一步的,本发明的神经网络的运算电路还可以替换为下述结构:
删除神经网络的运算电路中的权重数据存储单元、特征图数据存储单元和卷积结果数据存储单元,增设片内数据交互模块和片外数据存储器;
数据控制单元控制片内数据交互模块与片外数据存储器之间的压缩传输;
其中,片外数据存储器包括片外数据交互模块和片外数据存储模块;
片外数据存储模块用于存储特征图数据和权重数据,以及卷积结果数据;
数据控制单元控制通过片内数据交互模块向片外数据交互模块发起数据读取指令;所述数据读取指令包括权重数据和特征图数据的位置索引;
片外数据交互模块基于数据读取指令中的权重数据和特征图数据的位置索引,从数据存储模块读取对应的特征图数据和权重数据并进行数据压缩;再将压缩数据输入数片内数据交互模块;
片内数据交互模块对收到的数据进行解压,并将解压数据输入卷积计算单元;经由截位控制单元输出的截取结果得到卷积结果数据;所述卷积结果数据被送入片内数据交互模块,所述片内数据交互模块对接收的数据进行压缩并发送至片外数据交互模块,由片外数据交互模块对收到的数据进行解压后存入数据存储模块。
综上所述,由于采用了上述技术方案,本发明的有益效果是:
1、高精度:本发明的运算电路通过动态量化技术,保证了卷积计算结果的精度;
2、高利用率:本发明的运算电路通过可配置的自适应饱和截位,使得各个神经网络层,在保证数据精度的前提下,以有效利用数据宽度空间,从而节约神经网络运算实现的硬件资源;
3、功耗优化:本发明的运算电路通过剔除冗余的小值参数的方式,实现了对乘法运算的有效规避,从而达到节约乘法功耗的技术效果;以及通过对运算电路的数据编码压缩传输方式进行改进,使得功耗进一步优化;
4、可配置性增加:本发明的运算电路通过对数据压缩传输部分进行了可配置化的优化,增加了数据传输灵活性,从而使得本发明的运算电路能适应不同网络的压缩传输需求。
附图说明
图1为具体实施方式中,本发明的神经网络的运算电路的硬件架构示意图;
图2为具体实施方式中,本发明的可配置的缩放因子的计算处理示意图;
图3为具体实施方式中,本发明的可动态量化数据的累加缓存处理示意图;
图4为具体实施方式中,本发明的可监测数据溢出的自适应饱和截位处理的处理过程示意图;
图5为具体实施方式中,本发明的阈值比较计算结构示意图;
图6为具体实施方式中,本发明的数据压缩传输结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合实施方式和附图,对本发明作进一步地详细描述。
为了实现对神经网络中所涉及的卷积运算的高精度低功耗的近似计算硬件实现,本发明的本发明的神经网络的运算电路包括数据控制单元、权重数据存储单元、特征图数据存储单元、卷积计算单元、数据缩放单元、数据累加缓存单元、截位控制单元和卷积结果数据存储单元。运算电路的硬件架构示意图可参考图1,即图1中的所示的多个乘法器陈列构成本具体实施方式的卷积计算单元。其中,数据控制单元用于控制各单元之间的数据传输,控制权重数据存储单元、特征图数据存储单元和卷积结果数据存储单元的数据存储和读取;以及配置可调参数(包括数据缩放单元的缩放因子和截位控制单元的截位因子);权重数据存储单元用于存储卷积核的权重数据,特征图数据存储单元用于存储待进行卷积运算的特征图数据;卷积计算单元分别从权重数据存储单元和特征图数据存储单元读入权重数据和特征图数据,完成卷积运算中的特征图数据与权重数据的乘积运算;数据缩放单元基于配置的缩放因子对每个乘积结果进行移位操作,得到移位操作结果;数据累加缓存单元包括多个累加缓存子单元,其呈二维阵列排列;即每个累加缓存子单元用于表征卷积输出的特征图(或特征图块)的像素位置;数据缩放单元基于数据控制单元分配的累加缓存子单元,将移位操作结果存入数据累加缓存单元的对应累加缓存子单元中;每个累加缓存子单元在未收到数据控制单元发出的输出控制指令前,将其内的所有数据进行累计处理,得到一次累加结果,且每次累加处理后,仅在累加缓存子单元中保留当前累加结果,并等待下一次的移位操作结果输入,进行下一次的累加处理,即将上一次的累加结果与当前输入的移位操作结果进行累加;当收到数据控制单元发出的输出控制指令时(即在得到卷积特征图(卷积输出的特征图)各像素位置包括的所有乘积结果对应的累加数据后),各累加缓存子单元将当前的累加结果输出到截位控制单元;截位控制单元对输入的各累加结果进行截取操作,得到数据位宽为特征图数据或权重数据的数据位宽的截取结果,即卷积运算处理结果;并将截取结果存入卷积结果数据存储单元。
由于在神经网络的算法中,卷积计算是算法的核心部分,其包含大量的乘加操作。当神经网络进行推理计算时,将特征图数据和权重数据分别从特征图数据存储单元和权重数据存储单元读入本发明的卷积计算单元,进行卷积计算中的乘法运算。由于卷积计算单元中乘法器的限制,因此每次需要读入一块的特征图数据进行计算,在完成全部的块内数据计算后,再读入下一块的数据。而每次的卷积运算的输出块大小与数据累加缓存单元的大小相同(累加缓存子单元陈列的大小),同时根据数据累加缓存单元的大小和卷积核的大小以及步长可以确定每次卷积运算读入的数据块的大小。例如数据累加缓存单元的大小为n_out_x×n_out_y,卷积核的大小为 kx×ky,步长为s,每次卷积运算读入的数据块的大小定义为n_in_x×n_in_y,则读入的数据块的行n_in_x和列n_in_y分别为:n_in_x=( n_out_x-1)×s+ kx,n_in_y=( n_out_y-1)×s+ ky。本发明在卷积计算单元中完成特征图数据与权重数据的乘积计算,而卷积中的累加计算则由后面的数据累加缓存单元完成。同时,本发明通过对卷积计算单元输出的每个乘法结果配置缩放因子,以动态调整乘法结果的大小,同时在进行卷积中的累加操作时,动态量化计算后的结果数据,以保证数据的有效精度,可以保持同一神经网络层数据的尺度统一,并且在对结果数据的截位操作时,还可以通过对数据溢出的检测,来实现自适应的饱和截位处理。另外,本发明还基于所提出的自适应的阈值调整技术对进入乘法器的数据进行阈值判断,从而在保证精度的情况下将部分接近0值的数绕过乘法计算,以及基于所提出的可配置的压缩传输技术,对游程编码方式进行了可配置化的改进,使得能够满足不同的网络压缩需求。一方面,本发明提高了神经网络推理过程的数据精度,使其适应更多高精度需求任务,提高了泛化能力;另一方面,本发明通过灵活的自适应配置,节省了硬件资源的开销,减少了一定的硬件成本,提高了硬件的利用率。
参见图1,本发明的卷积计算单元包括多个乘法器,乘法器按照m×n的维度排列为乘法器陈列,且卷积计算单元包括h个乘法器陈列,其中,m、n和h的取值可基于实际处理需求进行配置,从而实现神经网络的完全可参数化配置。h用于表征能处理的特征图的单次最大通道数,m、n分别表示乘法器陈列的行数和列数,根据需求进行设置,优选的,可设置m=n。且可根据需求设置按乘法器陈列的行或者列输出一次乘积结果;即每列或没行对应一个卷积特征图的像素位置;受限于乘法器的数量,通常每列或每行的乘法器数量小于卷积特征图的像素位置包括的乘积结果数量,因而可以通过多次输出的方式来获得像素位置包括的全部乘积结果数量。同时,对于多通道特征图,可以同时进行不同通道的对应的乘积运算,并将对应同一卷积特征图的像素位置的不同通道的乘法结果均输入到同一累加缓存子单元。图1给出了乘法器按照6×6×24排列构成本发明的卷积计算单元的一个示例结构,图1中,乘法器陈列的大小与累加缓存子单元陈列的大小相同。
本发明中,所有的数据流控制,以及各个单元的配置都可由数据控制单元的指令控制模块灵活配置,以适应不同大小的特征图尺寸和卷积核尺寸。在进行特征图与卷积核的卷积运算处理时,其包含大量的乘加操作,为了保证数据精度,本发明提出了数据动态量化技术,其包括两个方面:一是将卷积计算单元的输出经数据缩放单元实现数据累加前的移位操作;二是通过对累加后数据的动态量化(每个累加缓存子单元内的数据为动态量化数据)进一步保障计算精度。
参见图2,本发明的数据缩放单元对每个乘积结果的移位操作处理时,基于指令控制模块所设置的缩放因子α对乘积结果进行移位操作,并将移位操作结果存入数据累加缓存单元的对应累加缓存子单元中。由于神经网络中的所涉及的每次卷积运算的数据范围有所差异,因此可以为神经网络的每次卷积运算预先配置一个缩放因子,在进行卷积运算时,读取对应卷积运算的缩放因子即可。本发明通过可配置的缩放因子α来完成计算单元的输出数据累加前的移位操作,例如输入的特征图数据和卷积核的数据位宽都为8bit,且单片卷积核的大小为kx×ky,参见图2,本发明的可配置缩放因子的计算单元的具体处理过程为:
当进行神经网络的推理计算时,特征图数据和权重数据首先进入卷积计算单元的对应乘法器,做8bit的乘法运算,输出为16bit的运算结果。由于单片卷积核的大小为kx×ky,则每一次的卷积计算,均包含了kx×ky次的乘法计算和kx×ky-1次的加法计算,在乘法器的乘法运算之后,需要进行多项累加操作,由于在累加过程可能存在数据的溢出情况,若数据溢出,将会对后面的推理计算产生误差,因此本发明为了防止累加过程的溢出,在乘法器的结果数据输出时,根据缩放因子指令,提前对该结果数据进行同尺度的缩放,即基于缩放因子的α移位操作,使后面的累加过程,在理论上不会发生溢出。
其中,缩放因子指令预先通过编译器存入指令控制模块,该缩放因子为经验预设值,可以基于软件算法中的经验值获得,当在软件中运行当前待运算的神经网络算法时,对每次数据卷积计算数据的尺度信息进行统计,以获得各个神经网络的每次卷积运算的累加过程中所出现的数据最大值,进而基于数据最大值设置对应的缩放因子,通常缩放因子和该数据最大值正相关;使得动态量化指令控制模块根据此缩放因子,对卷积计算单元的输出结果进行移位操作,从而保证后面的数据累加精度。
本发明通过可动态量化数据结果的累加来实现卷积运算中对乘积结果的累计,以及对累加后数据的动态量化。在本发明的数据累加缓存单元的每个累加缓存子单元中,通过树形结构的加法器实现对当前累加缓存子单元中的所有数据的累加;当数据控制单元的指令控制模块发出输出指令时,将当前的累加结果输出至截位控制单元(也可称动态量化单元),如图3所示。图中得到的最终的累加结果的数据位宽为19bit。该动态量化单元基于预置的截位因子对累加数据结果进行截位处理,得到截位后的数据(即截位结果)并存入卷积结果数据存储单元。
其中,截位处理具体为:
将累加数据结果的最高位作为截位结果的最高位,将截位因子作为低位起始位置,截取连续的N-1bit数据,并结合最高位得到数据位宽为N的截位结果,其中截位因子为经验预设值,N对应特征图数据的数据位宽,例如8bit。
参见图3,在卷积计算中的乘法计算完成后,数据位宽由8bit扩充到了16bit,然后,对扩充后的数据进行累加计算,以完成当前次的整个卷积计算过程,输出卷积特征图。在累加计算完成后,数据位宽被扩充到了19bit,由于在卷积乘法计算中,缩放因子的存在,所以可以在理论上保证,此处的19bit累加过程中不会出现数据溢出的行为。在得到19bit的累加数据结果后,为了使得神经网络后面推理计算的正常进行,本发明将累加得到的特征图数据截断为原来的8bit。其中,截位因子通过截位指令控制模块进行配置,本具体实施方式中,截位因子通过软件算法的经验获得,根据神经网络不同层的数据尺度信息,配置不同的截位因子,以最大限度的保留数据精度,提高数据截位的灵活性,并且在一定程度上,提高了神经网络的计算精度。例如,图3中所给出的当前层的截位因子为3,则动态量化单元从第3个bit位置(从低到高的方向)起截取连续的7bit数据,并将累加数据结果的最高位作为截位结果的最高位,从而得到8bit的截位结果。
此外,在神经网络的卷积计算中,由于多个输入通道可能需要分批次计算和累加,因此,在多批次的数据的累加时,可能在上述截位的操作过程中,会出现截位结果产生数据溢出的情况,且该情况是在软件算法的计算中没办法统计的情况。针对该技术问题,本发明提出了可监测数据溢出的自适应饱和截位单元,即在截位控制单元中增设数据溢出处理。
参见图4,在每一次的卷积乘加计算完成后,若输入通道过多时,则需要分几个批次完成相应的卷积计算,在每一次的数据截位时,根据数据的波动范围和截位因子,以及特征图数据所能存储的最大位宽,判断截位结果是否发生溢出情况(即判断截位结果的数据位宽是否大于特征图数据所能存储的最大位宽),若发生溢出,则赋值为对应其位宽的最小负数值或最大正数值,若未发生溢出,则取原数据对应的截位结果作为神经网络当前层的运算结果。通过自适应的饱和截位,基本消除了累加过程中所有的溢出情况,再一次提高了神经网络的推理计算精度。
当应用本发明所构建的运算电路对神经网络中所涉及的卷积运算进行硬件运算时,对于待处理的特征图,首先基于运算电路的大小(数据累加缓存单元)对特征图进行分块,以充分利用硬件资源;每次输入一块特征图数据到卷积计算单元中进行本数据块的卷积运算处理,基于截位控制单元的输出获得对应当前数据块的卷积特征图块;再依次获取所有数据块的卷积特征图块,进而得到待进行卷积处理的特征图的卷积运算结果,即卷积特征图。
由于硬件资源对数据位宽的限制,所以数据累加的结果可能存在溢出的情况,本发明通过指令的灵活配置,基于预置的缩放因子提前对计算单元输出进行统一适当的缩放,以保证数据在一个适当范围内进行累加,并对累加的结果,进行动态量化,通过自适应饱和截位模块,以对溢出数据进行处理,有效的杜绝了卷积计算过程中坏点的出现,进而提高对神经网络计算精度。
此外,本发明针对运算电路用于乘法运算的卷积计算单元进行了功耗优化,通过增加特征图阈值和权重阈值比较来规避部分乘法计算,从而实现运算处理时的自适应功耗与精度平衡处理。
参见图5,将两个比较器接入与门,所述与门的输出端分别连接乘法器和数据选择器,所述数据选择器包括两路数据输入通道,其中一路与计算单元的输出端相连,例如定义为数据通道1;另一路与存储了0值的寄存器相连,例如定义为数据通道0;两个比较器中,一个用于对输入的特征图和特征图阈值进行大小比较,即特征图比较器;另一个用于对输入的权重和权重阈值进行大小比较,即权重比较器。
当特征图或者权重大于对应阈值时,比较器输出为逻辑“1”,否则输出逻辑“0”。特征图比较器和权重比较器的输出经过与门进行与运算,从而驱动乘法器和数据选择器,即乘法器和数据选择器为高电平使能,只有当特征图和权重都大于对应阈值时,与门才输出逻辑“1”,从而开启乘法器使能让两者做乘法,并且将数据选择器切换到数据通道1;否则,乘法器使能关闭,节约计算单元功耗,数据选择器切换到存储了0值的寄存器,使得输出结果直接为0。通过这种方式,可以规避一些数据值较小的乘法,显著减少本发明的卷积计算单元的计算功耗。
对于权重阈值和特征图阈值,可以基于经验值进行阈值,也可以采用自适应调节方式找到最优值。其中,自适应调节方式具体为:
当运算电路需要用于运行某个神经网络时,先将权重阈值和特征图阈值设为0,此时无法规避任何非0小数据的乘法运算,得到的结果最精确,用若干不同的输入进行前向测试,将每次的最后一层输出记录下来,作为一个参考向量。然后按照预置的步长增大权重和特征图阈值,以及设置的神经网络的输入,对待进行运算处理的神经网络进行前向测试,得到新的输出结果,即候选向量,将当前候选向量与各参考向量(第一次阈值为0时的各输出结果)计算平均欧几里得距离,当平均欧几里德距离与预设的阈值相匹配时(平均欧几里德距离达到可接受范围内的最大值),停止增加阈值,将当前候选向量对应的权重阈值和特征图阈值作为待进行运算的神经网络的的最终的权重阈值和特征图阈值,并分别输入至特征图比较器和权重比较器。且在运算电路用于运行某个神经网络时,当需要对输入层的输入数据进行卷积运算时,则直接将输入层的输入数据作为特征图数据读入特征图数据存储单元。
本具体实施方式中,还针对运算电路内外数据传输过程进行了优化,即舍掉运算电路中的权重数据存储单元、特征图数据存储单元和卷积结果数据存储单元,增设片内数据交互模块和片外数据存储器;数据控制单元控制片内数据交互模块与片外数据存储器之间的压缩传输。参见图6,片外数据存储器包括片外数据交互模块和片外数据存储模块;该片外数据存储器用于存储特征图数据和权重数据,以及卷积结果数据。
数据控制单元通过片内数据交互模块向片外数据交互模块发送关于权重数据与特征图数据的数据读取指令;片外数据存储器将需要处理的特征图数据和权重数据从数据存储模块读出,送入片外数据交互模块,片外数据交互模块对数据进行压缩,然后通过交互引脚传到片内数据交互模块,片内数据交互模块对收到的数据进行解压,解压后将数据传输给卷积计算单元;再经截位控制单元向片内数据交互模块返回对应当前读书数据的卷积结果数据;片内数据交互模块同样对数据进行压缩并发送至片外数据交互模块,片外数据存储器对收到的数据进行解压后存储。针对包括m×n×h个乘法器的卷积计算单元而言,片内数据交互模块则是基于数据控制单元分配的乘法器,将解压后的数据输入对应的乘法器中。
本发明的压缩传输可通过数据控制单元的指令控制模块配置压缩阈值,以及配置压缩数据最大长度;通过压缩阈值调整数据的压缩率。
其中,压缩传输中的压缩部分的处理机制为:当输入数据到来后,会与前一次到来的数据进行对比,如果两者的差值绝对值小于或等于压缩阈值,则认为两者是属于重复数据,启动重复数据计数器,直到新的数据和前一次数据差值不小于阈值或者重数据计数器的计数值达到了最大压缩长度,则将重复数据计数器的值输出,并且将数据有效信号和压缩指示信号置为高电平,表示复数据计数器的输出值代表上一数据的重复次数。即所述压缩长度指某一个数据的压缩次数,例如连续输入5个3,则5就是数值为3数据的压缩长度。如果输入数据与前一次到来的数据差值的绝对值大于压缩阈值,则认为两者不是重复数据,直接将输入数据输出,且将数据有效信号置为高电平,压缩指示信号置为低电平。
压缩传输中的解压部分的处理机制为:当输入数据的有效信号为高电平时,对输入数据的压缩指示信号进行检查,若为高电平,则认为此时收到的数据是代表上次数据重复的次数,将上次重复数据输出times次,其中times为本次的输入数据;若为低电平,则认为本次的数据是真实数据,即该数据没有进行压缩,直接输出本次的输入数据。
综上,本发明所提出的高精度低功耗的神经网络的运算电路,通过可动态量化数据处理、可监测数据溢出的自适应饱和截位处理、自适应功耗与精度平衡处理以及可配置数据压缩传输处理,一方面,提高了硬件资源利用率,保证了数据的高精度需求;另一方面,整个运算电路的运算处理具有超高的灵活性,都是可参数化的配置,即本发明的神经网络的运算电路的实现,能带来下述有益技术效果:
1、可动态量化数据处理,通过对数据累加前缩放因子的控制和累加后的动态量化,从而将神经网络的每层网络的累加数据调控在一个可变尺度范围;
2、可监测数据溢出的自适应饱和截位处理,通过对累加数据结果的检测,以保证数据的相对误差在一个可控范围内。
3、自适应功耗与精度平衡处理,在本发明的计算单元前增加了阈值判断机制,规避小数据乘法,并且能够根据多次前向推理自适应调节阈值,在保证精度的情况下最大化地优化乘法功耗。
4、可配置数据压缩传输处理,在传统游程编码压缩技术的基础上增加可配置化方法,大大增加了压缩传输的灵活性,使得数据压缩能够根据网络情况进行变化。
以上所述,仅为本发明的具体实施方式,本说明书中所公开的任一特征,除非特别叙述,均可被其他等效或具有类似目的的替代特征加以替换;所公开的所有特征、或所有方法或过程中的步骤,除了互相排斥的特征和/或步骤以外,均可以任何方式组合。
Claims (8)
1.一种神经网络的运算电路,其特征在于,包括数据控制单元、权重数据存储单元、特征图数据存储单元、卷积计算单元、数据缩放单元、数据累加缓存单元、截位控制单元和卷积结果数据存储单元;
数据控制单元用于控制各单元之间的数据传输,控制权重数据存储单元、特征图数据存储单元和卷积结果数据存储单元的数据存储和读取,以及配置可调参数,所述可调参数包括数据缩放单元的缩放因子和截位控制单元的截位因子;
权重数据存储单元用于存储卷积核的权重数据,所述特征图数据存储单元用于存储待进行卷积运算的特征图数据;
卷积计算单元分别从权重数据存储单元和特征图数据存储单元读入权重数据和特征图数据,完成卷积运算中的特征图数据与权重数据的乘积运算,并将乘积结果发送给数据缩放单元;
数据缩放单元基于配置的缩放因子对每个乘积结果进行移位操作,得到移位操作结果;
数据累加缓存单元包括多个累加缓存子单元,所述累加缓存子单元呈二维阵列排列;所述数据缩放单元基于数据控制单元分配的累加缓存子单元,将移位操作结果存入数据累加缓存单元的对应累加缓存子单元中;
每个累加缓存子单元在未收到数据控制单元发出的输出控制指令前,将其内的所有数据进行累加处理,得到一次累加结果,且每次累加处理后,仅在累加缓存子单元中保留当前累加结果,并等待下一次的移位操作结果输入,进行下一次的累加处理;当收到数据控制单元发出的输出控制指令时,各累加缓存子单元将当前的累加结果输出到截位控制单元;
截位控制单元对输入的各累加结果进行截取操作,得到数据位宽为特征图数据或权重数据的数据位宽的截取结果,并将截取结果存入卷积结果数据存储单元。
2.如权利要求1所述的神经网络的运算电路,其特征在于,所述卷积计算单元包括多个乘法器阵列,乘法器阵列的个数用于表征运算电路能处理的特征图的单次最大通道数;且乘法器阵列的维度与累加缓存子单元阵列的维度相同;
基于数据控制单元为每个乘法器分配的特征图数据位置索引与权重数据位置索引读入特征图数据和权重数据,并按乘法器阵列的列或行输出一次乘法结果至数据缩放单元;数据缩放单元同时对当前次的乘法结果分别进行移位操作,并将移位操作结果存入数据控制单元为当前次的乘法结果分配的累加缓存子单元中;且不同乘法器阵列的同一列或行对应的累加缓存子单元相同。
3.如权利要求2所述的神经网络的运算电路,其特征在于,所述卷积计算单元还包括两个比较器、存储0值的寄存器、数据选择器和与门;其中一个比较器的输入为特征图数据和特征图阈值,即特征图比较器;另一个比较器的输入为权重数据和权重阈值,即权重比较器;
所述特征图比较器和权重比较器接入与门,与门的输出端分别连接乘法器和数据选择器;
所述数据选择器包括两路数据输入通道,其中一路与乘法器的输出端相连;另一路与存储0值的寄存器相连;数据选择器的输出端连接数据缩放单元的输入端。
4.如权利要求3所述的神经网络的运算电路,其特征在于,权重阈值和特征图阈值的设置方式为:
将权重阈值和特征图阈值均初始化为0;
基于所述运算电路,采用若干不同的输入对待进行运算处理的神经网络进行前向测试,记录每次神经网络的最后一层输出,作为一个参考向量;
在权重阈值的取值范围内和特征图阈值的取值范围内,按照预置的步长增大权重和特征图阈值,并基于所述运算电路,以及设置的神经网络的输入,对待进行运算处理的神经网络进行前向测试,记录神经网络的最后一层输出作为候选向量;
计算当前候选向量与各参考向量之间的平均欧几里得距离,当平均欧几里德距离与预设的阈值相匹配时,停止阈值更新,并将当前候选向量对应的权重阈值和特征图阈值作为待进行运算的神经网络的最终的权重阈值和特征图阈值。
5.如权利要求1所述的神经网络的运算电路,其特征在于,截位控制单元的截取操作为:
定义特征图数据或权重数据的数据位宽为Nbit,基于预置的截位因子作为起始位置,截取累加结果的连续的N-1bit数据,并将累加结果的最高位作为截取结果的最高位,得到数据位宽为Nbit的截取结果。
6.如权利要求1所述的神经网络的运算电路,其特征在于,在每一次的数据截位操作处理时,根据数据的波动范围和截位因子,以及特征图数据所能存储的最大位宽,判断截位结果是否发生溢出情况,若是,则赋值为对应其位宽的最小负数值或最大正数值,若否,则取原数据对应的截位结果作为卷积结果数据。
7.如权利要求1至6任一项所述的神经网络的运算电路,其特征在于,将所述运算电路的结构替换为:删除神经网络的运算电路中的权重数据存储单元、特征图数据存储单元和卷积结果数据存储单元,增设片内数据交互模块和片外数据存储器;
通过数据控制单元控制片内数据交互模块与片外数据存储器之间的压缩传输;
其中,片外数据存储器包括片外数据交互模块和片外数据存储模块;
片外数据存储模块用于存储特征图数据和权重数据,以及卷积结果数据;
数据控制单元控制通过片内数据交互模块向片外数据交互模块发起数据读取指令;所述数据读取指令包括权重数据和特征图数据的位置索引;
片外数据交互模块基于数据读取指令中的权重数据和特征图数据的位置索引,从数据存储模块读取对应的特征图数据和权重数据并进行数据压缩;再将压缩数据输入片内数据交互模块;
片内数据交互模块对收到的数据进行解压,并将解压数据输入卷积计算单元;经由截位控制单元输出的截取结果得到卷积结果数据;所述卷积结果数据被送入片内数据交互模块,由片内数据交互模块对接收的数据进行压缩并发送至片外数据交互模块,片外数据交互模块对收到的数据进行解压后存入数据存储模块。
8.如权利要求7所述的神经网络的运算电路,其特征在于,通过数据控制单元配置压缩阈值和压缩数据最大长度;
其中,片内数据交互模块和片外数据交互模块对数据的压缩处理过程为:
将当前输入数据与上一次的输入数据进行对比,判断两者的差的绝对值是否小于或等于压缩阈值;若是,则启动重复数据计数器,直到新输入的数据和上一次的输入数据的差的绝对值大于压缩阈值或者重数据计数器的计数值达到了最大压缩长度,则将重复数据计数器的值输出,并且将数据有效信号和压缩指示信号置为高电平;
若当前输入数据与上一次的输入数据的差的绝对值大于压缩阈值,则直接将输入数据输出,且将数据有效信号置为高电平,压缩指示信号置为低电平;
片内数据交互模块和片外数据交互模块对数据的解压处理过程为:
当输入数据的有效信号为高电平时,对输入数据的压缩指示信号进行检查,若为高电平,则认为此时收到的数据是代表上次数据重复的次数,将上次重复数据输出times次,其中times为本次的输入数据;若为低电平,则认为本次的数据是真实数据,直接输出本次的输入数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010815191.2A CN111738427B (zh) | 2020-08-14 | 2020-08-14 | 一种神经网络的运算电路 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010815191.2A CN111738427B (zh) | 2020-08-14 | 2020-08-14 | 一种神经网络的运算电路 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111738427A true CN111738427A (zh) | 2020-10-02 |
CN111738427B CN111738427B (zh) | 2020-12-29 |
Family
ID=72658444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010815191.2A Active CN111738427B (zh) | 2020-08-14 | 2020-08-14 | 一种神经网络的运算电路 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111738427B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115879530A (zh) * | 2023-03-02 | 2023-03-31 | 湖北大学 | 一种面向rram存内计算系统阵列结构优化的方法 |
CN116257207A (zh) * | 2022-09-08 | 2023-06-13 | 重庆位图信息技术有限公司 | 一种数据截位方法、模块、计算机设备及存储介质 |
WO2023138656A1 (en) * | 2022-01-24 | 2023-07-27 | Liu Ren Shuo | Bit-serial computing device and test method for evaluating the same |
CN117763399A (zh) * | 2024-02-21 | 2024-03-26 | 电子科技大学 | 一种自适应变长信号输入的神经网络分类方法 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016182672A1 (en) * | 2015-05-08 | 2016-11-17 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
CN106326985A (zh) * | 2016-08-18 | 2017-01-11 | 北京旷视科技有限公司 | 神经网络训练方法和装置及数据处理方法和装置 |
CN107340993A (zh) * | 2016-04-28 | 2017-11-10 | 北京中科寒武纪科技有限公司 | 一种支持较少位数浮点数的神经网络运算的装置和方法 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108647779A (zh) * | 2018-04-11 | 2018-10-12 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
CN109063825A (zh) * | 2018-08-01 | 2018-12-21 | 清华大学 | 卷积神经网络加速装置 |
CN109344964A (zh) * | 2018-08-08 | 2019-02-15 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
CN109615071A (zh) * | 2018-12-25 | 2019-04-12 | 济南浪潮高新科技投资发展有限公司 | 一种高能效的神经网络处理器、加速系统及方法 |
CN110210611A (zh) * | 2019-05-13 | 2019-09-06 | 西安交通大学 | 一种用于卷积神经网络计算的动态自适应数据截断方法 |
CN110210619A (zh) * | 2019-05-22 | 2019-09-06 | 上海商汤智能科技有限公司 | 神经网络的训练方法及装置、电子设备和存储介质 |
CN110378468A (zh) * | 2019-07-08 | 2019-10-25 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
CN111507465A (zh) * | 2020-06-16 | 2020-08-07 | 电子科技大学 | 一种可配置的卷积神经网络处理器电路 |
-
2020
- 2020-08-14 CN CN202010815191.2A patent/CN111738427B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016182672A1 (en) * | 2015-05-08 | 2016-11-17 | Qualcomm Incorporated | Reduced computational complexity for fixed point neural network |
CN107340993A (zh) * | 2016-04-28 | 2017-11-10 | 北京中科寒武纪科技有限公司 | 一种支持较少位数浮点数的神经网络运算的装置和方法 |
CN106326985A (zh) * | 2016-08-18 | 2017-01-11 | 北京旷视科技有限公司 | 神经网络训练方法和装置及数据处理方法和装置 |
CN107862374A (zh) * | 2017-10-30 | 2018-03-30 | 中国科学院计算技术研究所 | 基于流水线的神经网络处理系统和处理方法 |
CN108647779A (zh) * | 2018-04-11 | 2018-10-12 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
CN109063825A (zh) * | 2018-08-01 | 2018-12-21 | 清华大学 | 卷积神经网络加速装置 |
CN109344964A (zh) * | 2018-08-08 | 2019-02-15 | 东南大学 | 一种适用于神经网络的乘加计算方法和计算电路 |
CN109615071A (zh) * | 2018-12-25 | 2019-04-12 | 济南浪潮高新科技投资发展有限公司 | 一种高能效的神经网络处理器、加速系统及方法 |
CN110210611A (zh) * | 2019-05-13 | 2019-09-06 | 西安交通大学 | 一种用于卷积神经网络计算的动态自适应数据截断方法 |
CN110210619A (zh) * | 2019-05-22 | 2019-09-06 | 上海商汤智能科技有限公司 | 神经网络的训练方法及装置、电子设备和存储介质 |
CN110378468A (zh) * | 2019-07-08 | 2019-10-25 | 浙江大学 | 一种基于结构化剪枝和低比特量化的神经网络加速器 |
CN111507465A (zh) * | 2020-06-16 | 2020-08-07 | 电子科技大学 | 一种可配置的卷积神经网络处理器电路 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023138656A1 (en) * | 2022-01-24 | 2023-07-27 | Liu Ren Shuo | Bit-serial computing device and test method for evaluating the same |
CN116257207A (zh) * | 2022-09-08 | 2023-06-13 | 重庆位图信息技术有限公司 | 一种数据截位方法、模块、计算机设备及存储介质 |
CN116257207B (zh) * | 2022-09-08 | 2023-10-03 | 重庆位图信息技术有限公司 | 一种数据截位方法、模块、计算机设备及存储介质 |
CN115879530A (zh) * | 2023-03-02 | 2023-03-31 | 湖北大学 | 一种面向rram存内计算系统阵列结构优化的方法 |
CN117763399A (zh) * | 2024-02-21 | 2024-03-26 | 电子科技大学 | 一种自适应变长信号输入的神经网络分类方法 |
CN117763399B (zh) * | 2024-02-21 | 2024-05-14 | 电子科技大学 | 一种自适应变长信号输入的神经网络分类方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111738427B (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111738427B (zh) | 一种神经网络的运算电路 | |
CN107609641B (zh) | 稀疏神经网络架构及其实现方法 | |
CN110880038B (zh) | 基于fpga的加速卷积计算的系统、卷积神经网络 | |
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN110688088B (zh) | 一种面向神经网络的通用非线性激活函数计算装置和方法 | |
CN111240746B (zh) | 一种浮点数据反量化及量化的方法和设备 | |
CN111507465B (zh) | 一种可配置的卷积神经网络处理器电路 | |
CN112734020B (zh) | 卷积神经网络的卷积乘累加硬件加速装置、系统以及方法 | |
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
CN110543936B (zh) | 一种cnn全连接层运算的多并行加速方法 | |
CN113298237A (zh) | 一种基于fpga的卷积神经网络片上训练加速器 | |
CN113159276A (zh) | 模型优化部署方法、系统、设备及存储介质 | |
CN110265002A (zh) | 语音识别方法、装置、计算机设备及计算机可读存储介质 | |
CN111767994A (zh) | 一种神经元计算模块 | |
Struharik et al. | Conna–compressed cnn hardware accelerator | |
CN111931925A (zh) | 基于fpga的二值化神经网络的加速系统 | |
CN110110852B (zh) | 一种深度学习网络移植到fpag平台的方法 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
CN108647780B (zh) | 面向神经网络的可重构池化操作模块结构及其实现方法 | |
CN113240101B (zh) | 卷积神经网络软硬件协同加速的异构SoC实现方法 | |
CN111344719A (zh) | 基于深度神经网络的数据处理方法、装置及移动设备 | |
CN107783935B (zh) | 基于动态精度可配运算的近似计算可重构阵列 | |
CN110837885B (zh) | 一种基于概率分布的Sigmoid函数拟合方法 | |
CN112183726A (zh) | 一种神经网络全量化方法及系统 | |
CN115130672B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220624 Address after: 401329 building 4, No. 15, Fengsheng Road, Jinfeng Town, high tech Zone, Jiulongpo District, Chongqing Patentee after: Chongqing Lianxin Zhikang Biotechnology Co.,Ltd. Address before: 611731, No. 2006, West Avenue, Chengdu hi tech Zone (West District, Sichuan) Patentee before: University of Electronic Science and Technology of China |