CN113298237B - 一种基于fpga的卷积神经网络片上训练加速器 - Google Patents
一种基于fpga的卷积神经网络片上训练加速器 Download PDFInfo
- Publication number
- CN113298237B CN113298237B CN202110697592.7A CN202110697592A CN113298237B CN 113298237 B CN113298237 B CN 113298237B CN 202110697592 A CN202110697592 A CN 202110697592A CN 113298237 B CN113298237 B CN 113298237B
- Authority
- CN
- China
- Prior art keywords
- module
- layer
- buffer
- data
- activation
- 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.)
- Active
Links
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 47
- 238000012549 training Methods 0.000 title claims abstract description 43
- 239000000872 buffer Substances 0.000 claims abstract description 126
- 230000004913 activation Effects 0.000 claims abstract description 73
- 238000000034 method Methods 0.000 claims abstract description 62
- 238000010606 normalization Methods 0.000 claims abstract description 51
- 238000011176 pooling Methods 0.000 claims abstract description 35
- 238000013139 quantization Methods 0.000 claims abstract description 25
- 238000004364 calculation method Methods 0.000 claims abstract description 13
- 238000012545 processing Methods 0.000 claims description 32
- 230000003139 buffering effect Effects 0.000 claims description 12
- 239000011159 matrix material Substances 0.000 claims description 12
- 238000013461 design Methods 0.000 abstract description 6
- 238000011161 development Methods 0.000 abstract description 4
- 108091006146 Channels Proteins 0.000 description 17
- 238000013528 artificial neural network Methods 0.000 description 13
- 238000003491 array Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000001994 activation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
Abstract
本发明公开一种基于FPGA的卷积神经网络片上训练加速器,属于计算、推算或计数的技术领域。本卷积神经网络片上训练加速器主要包括:输入数据缓存器、权重数据缓存器、中间运算值缓存器、多模式PE运算单元、最值统计模块、批量归一化模块、激活函数运算模块、量化模块、最大池化模块、梯度更新模块、批量归一化更新模块、编码模块以及逻辑控制模块。本发明通过对各模块的优化设计,实现同时对多张图进行运算,增加了硬件加速器运行时的并行性,降低了对硬件资源的需求,并减少训练过程中的数据流动量,提高了运算效率。本发明通过尽可能充分利用硬件资源,而较为创新地提出了在资源有限的FPGA开发板上进行卷积神经网络训练的实现方法。
Description
技术领域
本发明公开一种基于FPGA的卷积神经网络片上训练加速器,涉及卷积神经网络训练计算的硬件加速结构,属于计算、推算或计数的技术领域。
背景技术
CNN(Convolutional Neural Network,卷积神经网络)在各种要求苛刻的应用中取得了巨大的成果,尤其在图像分类和对象检测中表现卓越。而目前的大部分卷积神经网络均在GPU上对其进行训练,GPU的通用性导致其对神经网络的运算效率不高,通常只能依赖算法提升其效率。当在GPU上进行离线训练时,往往需要消耗大量的时间和能量。除此之外,由于移动设备的不断普及以及性能的不断增强,在资源有限的可移动设备上进行神经网络的前向推理部署,绝不是神经网络发展的终点,因此,在资源有限的移动设备上实现神经网络的训练至关重要,也是未来的必然发展趋势。
CNN的训练不仅要求实现神经网络的前向推理计算,还需要进行反向传播和参数更新等操作。一方面,卷积神经网络是计算密集型和访存密集型模型,通常在GPU上进行网络训练,这导致其训练所要求的硬件配置高且便携性很差,并且需要消耗大量的能量和时间,而对训练针对性设计的硬件加速器往往可以大幅度降低运算功耗并保持速度不变甚至更快。另一方面,常规离线训练好的卷积神经网络一旦在移动端部署,其效果便无法根据不同的环境在移动端上进行进一步训练以得到优化,这使得神经网络的灵活性较差,只能依靠在离线训练时对数据集合理安排的方式以获得可接受的结果。因此,实现支持多种卷积神经网络的训练加速器有利于降低训练神经网络的成本,有利于在移动设备进行部署,增加神经网络训练实现的便携性,增加神经网络使用场景的灵活性。
目前,现有技术通过在移动端部署基于FPGA的加速器实现卷积神经网络的前向推理运算,并对前向推理运算的各个运算步骤针对性地设计一个专用运算硬件模块以实现具体的运算操作,每个模块功能较为单一,且现有专利大多数针对的是神经网络结构较为单一的网络形态,数据量较小且所能实现的功能单一。本发明旨在针对卷积神经网络整个训练过程的运算步骤进行针对性设计,提供一种加速卷积神经网络片上训练运算全过程的FPGA实现方案。
发明内容
本发明的发明目的是针对上述背景技术中提到的不足,提供一种基于FPGA的卷积神经网络片上训练加速器,通过分解卷积神经网络在训练过程中的运算步骤,根据各运算步骤处理数据的相似性,针对性地设计加速器的运算模式并激活相应的运算模块,在数据传递时尽可能地实现数据复用,实现以较低功耗和较快速度完成卷积神经网络训练全运算过程的发明目的,解决现有基于FPGA的加速器仅实现卷积神经网络前向推理运算而不涉及反向和梯度更新操作的技术问题。
本发明为实现上述发明目的采用如下技术方案:
一种基于FPGA的卷积神经网络片上训练加速器,包括:控制模块、输入数据缓存器、权重数据缓存器、PE模块、中间运算值缓存器、多功能运算模块。
控制模块,在卷积层的前向运算以及反向运算过程中使能PE模块工作于权值固定模式,在全连接层的前向运算和反向运算过程中使能PE模块工作于输出固定模式,在卷积层更新梯度的过程中使能PE模块工作于全部开启的运算模式;在全连接层更新梯度的过程中使能PE模块工作于仅开启一行PE单元的运算模式。
输入数据缓存器,用于从外部存储读取的输入图数据或输入图经所有卷积层后得到的一维张量或输入图在各网络层的激活张量。
权重数据缓存器,用于缓存从外部存储读取的权重数据或输入图在各网络层的误差。
PE模块,接收控制模块输出的使能信号,在卷积层的前向运算过程中读入输入图数据和权重数据后输出卷积结果部分和至中间运算值缓存器,在全连接层的前向运算过程中读入输入图经所有卷积层后得到的一维张量和权重数据后输出卷积结果部分和至中间运算值缓存器,在卷积层的梯度更新过程中激活所有PE单元对输入图在各网络层的激活张量以及输入图在各网络层的误差进行卷积运算后输出各卷积层的梯度部分和,在全连接层的梯度更新过程中激活一行PE单元对输入图在各网络层的激活张量以及输入图在各网络层的误差进行卷积运算后输出全连接层的梯度部分和至中间运算值缓存器。
中间运算值缓存器,用于缓存PE模块在各运算模式下输出的中间运算值。
多功能运算模块,对卷积层前向运算过程得到的卷积结果部分和依次进行批量归一化处理、激活处理、量化处理、最大池化处理后输出输入图在各网络层的激活张量,对输入图数据在各网络层的激活张量在反向传播过程中得到的输入图数据在各网络层的误差依次进行批量归一化反向处理、激活反向处理、量化处理、最大池化反向处理,对梯度更新过程得到的梯度部分和依次进行BN梯度更新处理、梯度更新处理后输出各层卷积核的梯度更新值。
PE模块包括四个PE阵列,可以同时处理四张输入图像,四张输入图像共享使用同一批权重,这使得权重从外界读入加速器内部的次数大大减少,很大程度上节约了权重数据搬运的时间。PE针对卷积神经网络在训练的不同过程中,设计了不同的工作模式,以适应不同模式下的运算。PE模块由四个PE阵列组成,共由32×3×4=256个PE单元构成。
输入数据缓存器使用的是乒乓结构进行设计,由两片相同的结构组成,这使得当一片缓存区在与PE模块进行数据传输时,另一片可以与外部存储进行数据传输,提高数据传递的效率。其次,输入特征图数据在读入缓存区时,按照以行为单位,依次存入缓存器的不同起始地址,使得数据可以并行传入PE模块,提升输入特征图传入PE模块的效率。
权重数据缓存器采用乒乓结构进行设计,分为两片相同的结构,以配合输入数据缓存器的工作模式,其中一片缓存器与输入数据缓存器一起向PE模块进行数据传递,为PE模块的运算提供参数,与此同时另外一片缓存器与外部存储进行数据传输。权重数据缓存器需要同时与处理一张图的PE阵列里的每一个PE单元进行数据传输,因此每一片权重需要有96个输出端口,以同时为96个PE单元提供权重数据。
中间值数据缓存器是最大的缓存器,采用乒乓结构设计,分为相同结构的两片,当
一片用于接收128列PE单元的输出数据,存放当前结构层运算的中间值时,另一片用于将上
一批的中间值送入后续的操作。与此同时,中间值数据缓存器还可以当卷积神经网络进行
批量归一化操作时,存储批量归一化产生的值。在多种工作模式下,中间值数据缓存器存
储不同的数据,以最大限度提高存储的利用率。
批量归一化运算模块,是根据对普通批量归一化算法进行简化运算所设计的硬件结构。通过将批量归一化的前向和反向运算简化成乘加运算,去除二阶运算,以加速电路的处理速度,也简化了电路的实现。
控制单元所进行的工作在于统筹整个加速器所有模块之间的工作节拍,提前根据不同的卷积神经网络参数,配置好加速器即将进行的工作流程,在卷积神经网络训练过程进行到不同流程时,给予各个模块参数,使其配置到相应的工作状态,保证卷积神经网络的训练顺利完成。
所有权重和量化后的中间激活值,都以块浮点模式进行量化存储,将数据底数存储至一块内存区域,将其指数存储至另一指定的对应的内存区域。
多功能运算模块包括:统计模块、求和模块、批量归一化模块、ReLU激活模块、量化模块、最大池化结果、ID缓存器、最大池化反向模块、ReLU激活反向模块、BN梯度更新模块、梯度更新模块。
统计模块,用于统计PE模块每一层输出值的最值。
求和模块,用于对PE模块的每一层输出值进行求和。
批量归一化模块,接收PE模块的每一层输出值、PE模块每一层输出值的最值、求和模块的输出结果,在前向运算过程中输出PE模块各层输出值的批量归一化计算结果,在反向运算过程中对PE模块各层输出值的批量归一化计算结果进行反向操作后输出。
ReLU激活模块,接收批量归一化计算结果,输出输入图在各网络层的激活张量。
量化模块,接收PE模块每一层输出值的最值、输入图在各网络层的激活张量,在前向运算过程中输出输入图在各网络层激活张量的量化结果,在反向运算过程中输出输入图数据在各网络层的误差的反向激活结果的量化结果。
最大池化结果,接收输入图在各网络层激活张量的量化结果,输出输入图在各网络层激活张量的池化结果。
ID缓存器,接收输入图在各网络层激活张量的池化结果,记录最大池化过程中各个最大值的位置ID并生成位置矩阵。
最大池化反向模块,接收输入图数据在各网络层的误差以及位置矩阵,输出输入图数据在各网络层的误差的反向池化结果。
ReLU激活反向模块,接收输入图数据在各网络层的误差的反向池化结果,并读取ReLU激活参数,输出输入图数据在各网络层的误差的反向激活结果。
BN梯度更新模块,接收输入图数据在各网络层的误差的反向激活结果,读取批量归一化参数,输出各层卷积核的BN梯度更新结果。
梯度更新模块,接收各层卷积核的BN梯度更新结果,结算各层卷积核的梯度更新结果。
本发明采用上述技术方案,具有以下有益效果:
(1)本发明在进行卷积神经网络的训练运算时,针对训练运算的不同步骤采用不同的运算模式,并根据运算的相似性设计多个独立逻辑运算单元组成的多功能运算模块,在不同运算模式下实现逻辑运算单元并行处理数据,在卷积层的前向以及反向运算过程中复用权值,通过批量归一化、激活、量化、最大池化的逻辑运算单元并行前向卷积运算过程,在全连接的前向和反向运算过程中以及梯度更新的运算过程中复用中间值,通过批量归一化、激活、量化、最大池化对应的反向卷积运算单元并行反向传播过程,使得加速器在面对卷积训练运算时,始终保持一个较高的运算效率;针对目前较为实用且流行的神经网络中出现的激活层和批量归一化层均有针对性设计,并且本发明通过多功能运算模块增加对卷积神经网络不同运算流程的复用性,缩减硬件资源,在增强多功能运算模块功能性的基础上尽可能减少其资源的占用。
(2)本发明的缓存器采用乒乓设计模式,尽可能地将数据运算的时间和耗时最长的数据搬运时间进行重叠,让数据的运算尽可能地少占用额外的时间,并且将不可避免的数据搬运时间尽可能地充分利用,以提升加速器的工作效率。
(3)本发明采用的块浮点数据存储模式,将浮点数使用统一的共享指数,在对训练精度影响微小的情况下,可以将长数据量化成8比特数据,在加速器中进行运算,提高加速器的运算速度,减少加速器的片上存储压力,减少数据搬运时间,并增加其单批次处理的数据量,使得加速器能够针对卷积神经网络替代GPU进行卷积神经网络的训练,以较低的功耗和较快的速度完成卷积神经网络的全训练运算过程。
附图说明
图1是本发明公开的硬件加速器的结构示意图。
图2是本发明公开的输入数据缓存器结构的示意图。
图3(a)是本发明公开的中间运算值缓存器的总体架构,图3(b)是中间运算值缓存器与后续逻辑相连的示意图。
图4是本发明公开的进行块浮点量化的示意图。
具体实施方式
下面结合附图对发明的技术方案进行详细说明。
本发明设计的卷积神经网络硬件结构如图1所示,该加速器包括:输入数据缓存器、权重数据缓存器、PE模块、中间运算值缓存器、多功能运算模块、SOFTMAX模块、输出数据缓存器、控制模块。
控制模块,用于在卷积层的前向以及反向运算过程中使能PE模块工作于权值固定模式,实现权值数据的复用;在全连接层的前向和反向运算过程中使能PE模块工作于输出固定模式,实现输出中间值的复用;在卷积层更新梯度的过程中使能PE模块工作于全部开启的运算模式;在全连接层更新梯度的过程中使能PE模块工作于仅开启一行PE单元的运算模式。
PE模块大小支持同时处理四张图,其中,每张图所用PE单元为32×3个。现以经典的CIFAR数据集中的图像为输入数据图像,即输入图像大小为32×32×3像素点,以VGG16为待训练的卷积神经网络阐述其工作方式,卷积核大小均为3×3,步长为1。
输入数据缓存器、权重数据缓存器、中间运算值缓存器均采用乒乓结构进行设计,当其中一片缓存器在与PE模块进行数据交换时,另一片缓存器用于与外部存储区进行数据交换,以尽可能使得数据运算时间与数据传输时间重合。各缓存器针对其在训练过程中需要存储数据的特点和与PE阵列进行数据传递的特点,进行不同的结构设计。
输入数据缓存器,以输入数据的一行为单位依次在缓存器内的存储结构上进行存储,方便其向PE模块提供PE模块进行运算所需的数据。如图2所示,输入数据缓存器使用分布式RAM实现,以一字节即8bit进行数据存储,共分为8批,每一批的具体实现如箭头所指。图中的每个正方形小方块代表一行数据的存储,由于最大一层所需存储的数据为32*32,因此分为3个缓存区后,每个缓存区存储32*11即352个数据。
权重数据缓存器,由于其需要同时向96个PE单元输出不同的数据,因此权重数据缓存器需要96个输出数据口,每个接口驱动PE模块中同时处理四张图的对应的4个PE阵列,以使得权重缓存器为整个PE模块提供数据。
中间运算值缓存器需要同时接受PE模块处理完四张图输出的每张图是96个运算结果,因为中间值缓存器的每一片都需要分成四块,每块有32个数据接收端,这使得数据能较快地从PE模块中传输至中间值缓存器,与此同时,中间值缓存器还需要向后续运算操作提供数据,为了提高运算效率,可以在中间值缓存器中的每一块存储区后连接一组处理模块,以使用较少的逻辑资源带来数据的并行运算,减少数据的运算时间。图3(a)为中间运算值缓存器中一组的数据存储结构示意图,共有八组,使用开发板上的BRAM资源实现,以32bit格式进行数据存储,一组中含有32个缓存区,用于存放一张图像的中间值输出。图3(b)为中间运算值缓存器存储数据的后续处理示意图,表示中间运算值缓存器每一块存储区后均连接一组用于批量归一化、激活函数、量化和最大池化的运算模块,用于并行提高运算效率。
权重和网络层结构中间的激活值均采用块浮点格式进行存储,即一块数据共享同一个指数,将底数和指数分开存储,如图4所示,在一批数据中首先找出最大值并且提取最大值对应的指数,按照该指数将之前提及的一批数据处理为该指数与底数相乘的数据形式,处理完成后,将底数截断至8bit后得到8bit底数与该指数相乘的结果。在进行卷积运算时,对于乒乓结构权重数据缓存器读入的下一批需要参与运算的权重激活值,只需要先对底数进行操作,在运算完成后,再进行指数运算,将新得到的底数和指数进行组合得到存储器最终的输出结果。
批量归一化模块、ReLU激活模块以及量化操作模块基于各自的前向运算和反向运算以及梯度更新算法进行数学上的简化最终在电路上得以实现,由于这些模块在前向运算和反向运算以及梯度更新步骤中,有一些运算模式相似的步骤,因此可以通过将这些步骤单独进行设计,以在不同功能中进行复用,提升硬件的利用率。因此,本发明设计的多功能运算模块如图1所示,包括:统计模块、最值缓存器、求和模块、求和缓存器、批量归一化模块、ReLU激活模块、量化模块、最大池化模块、ID缓存器、最大池化反向模块、ReLU激活反向模块、BN梯度更新模块、梯度更新模块、批量归一化缓存器、ReLU缓存器。前向运算时,PE模块、统计模块、最值缓存器、求和模块、求和缓存器、批量归一化模块、批量归一化缓存器、ReLU激活模块、ReLU缓存器、量化模块、最大池化模块、ID缓存器进行工作;在反向运算时,PE模块、最大池化反向模块、ReLU激活反向模块、ReLU缓存器、量化模块、ID缓存器进行工作、批量归一化模块、批量归一化缓存器;在进行梯度更新时,PE模块、BN梯度更新模块、梯度更新模块进行工作。批量归一化缓存模块用于缓存处理归一化结果所需的运算参数(即,反向传播中反向归一化操作参数,该参数可由批量归一化参数乘以固定系数得到);ID缓存器用于缓存最大池化过程中各个最大值的位置ID,在最大池化的反向过程中,需要用到该ID对误差矩阵进行尺寸的还原;最值缓存器所缓存的为前向运算过程中,每一层PE算出的最值,在后续批量归一化和后续量化工作中,需要作为参数使用;求和缓存器所缓存的是PE各列的部分和数据的和,用此值可以在进行批量归一化操作时,计算平均值,作为运算参数使用;ReLU缓存器用于缓存ReLU激活模块输出的01矩阵以及最大池化模块生成的位置矩阵。
加速器从外部存储中将四张输入图像的第一层数据(即输入图像的第一个通道的数据)读入输入数据缓存器中,按照以输入数据行为单位依次填充输入数据缓冲器。将对应层结构的前32组权重数据读入权重数据缓存器。此时,输入数据缓存器将存储的四张图像的第一层数据分别送入PE模块的四块PE阵列内,权重数据缓存器将32组权重传送至每块PE阵列中的32个PE单元中,四块PE阵列共享32组权重,此时PE模块工作在卷积的前向运算模式下,运算结束后,每列PE单元将各自的部分和传出,在PE阵列内部进行部分和累加后传入至中间运算值缓存器,即同时向中间运算值缓存器传入32×4个数据。在PE模块进行前向运算的同时,下一批要参与运算的权重从外部传至另外空闲的一片权重数据缓存器,等待向PE模块提供数据,中间运算值缓存器接收到所有运算结果后,PE将进行下一次的运算,并把运算结果放置入另外空闲的一片中间运算值缓存器内,此时,存储在中间运算值缓存器的32×4个数据经过后续的最大最小值统计操作后再传送至外部存储,重复上述步骤,直到四张输入图数据的第一层数据遍历完该网络层结构的所有权重数据。完成第一轮操作后,将四张输入图数据的第二层数据传入输入数据缓存器,开始进行第二轮的操作。重复上述步骤,直至四张输入图数据的所有层数据遍历完所有网络层结构的所有权重数据,完成一批输入图像的所有前向卷积运算,此时,中间运算值缓存器已将所有的中间运算值送至统计模块完成最值统计后送至外部存储。
在完成上述前向卷积运算后,将外部存储中的中间运算值再次导入中间运算值缓
存器,并经过批量归一化、激活函数、量化以及最大池化的处理后,再将运算后的结果传至
外部存储器中。与此同时,还需要将批量归一化时运算得出的值暂存在空闲的一片中间
运算值缓存器内,并将激活函数ReLU生成的1,0矩阵以及最大池化生成的位置矩阵暂存在
所设计好的对应的ReLU缓存器内,并在所有运算结果传输完毕后,将这些值依次传至外部
存储。至此,便完成了VGG16的一层卷积及后续操作。将运算出的结果作为下一层的输入数
据,进行下一次的卷积运算。重复上述步骤,直到全连接层开始之前。
在全连接开始时,加速器的工作模式稍有变化,PE模块调整至输出固定模式以适应全连接的运算,此时PE模块只有每个PE阵列的第一行工作,输入数据缓存器按行存入四张输入图经过所有卷积层后得到的一维向量,权重数据缓存器存入32×3×512个权重,那么一次四张输入张量便可以完成对96个卷积核的遍历。在完成所有卷积核的遍历后,后续的处理与卷积层相同。重复上述步骤直至所有全连接层计算完毕。
至此便完成了卷积神经网络对于一批输入图像的完整的前向运算过程。接下来介绍反向传播的实现过程。反向传播的实现与前向过程类似,整个加速器也是针对全连接层和卷积层,工作在两个模式下。输入数据由前向的原始输入图和激活值变为每一层传入的误差。中间运算值缓存器存储的值也由前向卷积运算中传入至批量归一化、激活函数、量化以及最大池化变为传入至批量归一化反向模块、ReLU激活反向模块、量化模块、最大池化反向模块进行处理。
在完成所有前向运算和反向传播过程的计算后,外部存储中已经存入了每一张图在前向运算时所得到的激活值和激活值在反向传播过程中每一层的误差值。接下来卷积神经网络所需要进行的步骤是计算各层卷积核的梯度。梯度是由每一层的误差矩阵和上一层的激活矩阵卷积所求得。此时,加速器针对全连接层和卷积层的梯度更新,也分别有两种模式,当卷积神经网络的卷积层和全连接层在进行梯度更新运算时,PE模块分别使用不同的工作模式。当进行卷积层梯度更新运算时,输入数据缓存器从外部存储中读入第一张图的在第一网络层的激活张量的前四个通道,按照前述相同的方式进行存储,权重数据缓存器从外部存储中读入第一张图第二网络层的误差的前32通道,按照输入数据缓存器的存储模式进行存储。同时四个PE阵列共享同一块误差,共处理32通道误差,其中,每竖向的三个PE单元处理一个通道激活值与一层误差的前32通道的卷积运算,输出的梯度部分和按照正常PE模块向中间运算值缓存器传输数据的过程存入中间运算值缓存器。与此同时,输入数据缓存器的空闲块,从外部存储中读入第二张图在第一网络层激活值的前四通道张量,权重数据缓存器的空闲块从外部存储中读入第二张图在第二网络层误差的前32通道,将第二张图在第一网络层激活值与第二张图在第二网络层的误差值运算出的梯度部分和与存在中间运算值缓存器中的梯度部分和相加后,再存入相同的位置,重复上述步骤,直至完成一批图像中各图像在此层激活值的前四通道与该图像在此层误差前32通道的运算所得的梯度,在运算梯度的过程中,将外部存储的对应需要更新的权重传至中间运算值缓存器的空闲块,在得到PE模块运算所得的梯度后,进行权重的更新,完成后送至外部存储;完成上述操作后,开始计算输入图像在此网络层的激活值的前四通道与在此层误差值的后32通道进行运算;完成上述操作后,开始将输入图像在此网络层的激活值的后四通道与在此网络层的误差值的前32通道进行运算,在此之后,将输入图像在此网络层的激活值的后四通道与在此网络层的误差值的后32通道进行运算,重复上述步骤以完成所有权重的更新。在进行全连接层的梯度更新运算时,仅仅使用1/3的PE单元,即只使用第一行的PE单元。至此,便已经介绍完该卷积神经网络训练加速器在各种情况下的具体实施方式。
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想在技术方案基础上所做的任何改动均落入本发明保护范围之内。
Claims (8)
1.一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,包括:
控制模块,在卷积层的前向运算以及反向运算过程中使能PE模块工作于权值固定模式,在全连接层的前向运算和反向运算过程中使能PE模块工作于输出固定模式,在卷积层更新梯度的过程中使能PE模块工作于全部开启的运算模式,在全连接层更新梯度的过程中使能PE模块工作于仅开启一行PE单元的运算模式,
输入数据缓存器,用于从外部存储读取的输入图数据或输入图经所有卷积层后得到的一维张量或输入图在各网络层的激活张量,
权重数据缓存器,用于缓存从外部存储读取的权重数据或输入图在各网络层的误差,
PE模块,接收控制模块输出的使能信号,在卷积层的前向运算过程中读入输入图数据和权重数据后输出卷积结果部分和至中间运算值缓存器,在全连接层的前向运算过程中读入输入图经所有卷积层后得到的一维张量和权重数据后输出卷积结果部分和至中间运算值缓存器,在卷积层的梯度更新过程中激活所有PE单元对输入图在各网络层的激活张量以及输入图在各网络层的误差进行卷积运算后输出各卷积层的梯度部分和,在全连接层的梯度更新过程中激活一行PE单元对输入图在各网络层的激活张量以及输入图在各网络层的误差进行卷积运算后输出全连接层的梯度部分和至中间运算值缓存器,
中间运算值缓存器,用于缓存PE模块在各运算模式下输出的中间运算值,及,
多功能运算模块,对卷积层前向运算过程得到的卷积结果部分和依次进行批量归一化处理、激活处理、量化处理、最大池化处理后输出输入图在各网络层的激活张量,对输入图数据在各网络层的激活张量在反向传播过程中得到的输入图数据在各网络层的误差依次进行批量归一化反向处理、激活反向处理、量化处理、最大池化反向处理,对梯度更新过程得到的梯度部分和依次进行BN梯度更新处理、梯度更新处理后输出各层卷积核的梯度更新值;
所述输入数据缓存器、权重数据缓存器、中间运算值缓存器为乒乓结构的缓存器,当其中一片缓存器与 PE模块交换数据时,另一片缓存器与外部存储交换数据;
所述权重数据和输入图在各网络层的激活张量采用浮点格式进行存储。
2.根据权利要求1所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,所述多功能运算模块包括:
统计模块,用于统计PE模块每一层输出值的最值;
求和模块,用于对PE模块的每一层输出值进行求和;
批量归一化模块,接收PE模块每一层输出值的最值、求和模块的输出结果,在前向运算过程中对接收的PE模块的每一层输出值进行批量归一化操作后输出PE模块各层输出值的批量归一化计算结果,在反向运算过程中对接收的输入图在各网络层的误差进行批量归一化反向操作后输出输入图在各网络层的误差在反向运算过程中的批量归一结果;
ReLU激活模块,接收PE模块各层输出值的批量归一化计算结果,输出输入图在各网络层的激活张量;
量化模块,接收PE模块每一层输出值的最值,在前向运算过程中接收的输入图在各网络层的激活张量进行量化后输出,在反向运算过程中对接收的输入图数据在各网络层的误差的反向激活张量进行量化后输出;
最大池化模块,接收输入图在各网络层激活张量的量化结果,输出输入图在各网络层激活张量的池化结果;
ID缓存器,接收输入图在各网络层激活张量的池化结果,记录最大池化过程中各个最大值的位置ID并生成位置矩阵;
最大池化反向模块,接收输入图数据在各网络层的误差的反向激活张量的量化结果、最大池化过程中各个最大值的位置ID以及位置矩阵,输出输入图数据在各网络层的误差的反向激活张量的池化结果作为输入图在各网络层的误差在反向运算过程中的批量归一结果输出至ReLU激活反向模块;
ReLU激活反向模块,接收输入图在各网络层的误差在反向运算过程中的批量归一结果,并读取ReLU反向激活参数,输出输入图数据在各网络层的误差的反向激活张量;
BN梯度更新模块,接收PE模块输出的梯度部分和,读取批量归一化参数,输出各层卷积核的BN梯度更新结果;及,
梯度更新模块,接收各层卷积核的BN梯度更新结果,计算各层卷积核的梯度更新结果。
3.根据权利要求2所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,所述多功能运算模块还包括用于缓存ReLU激活参数、ReLU反向激活参数以及位置矩阵的ReLU缓存器。
4.根据权利要求2所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,所述多功能运算模块还包括用于缓存批量归一化参数以及批量归一化反向参数的批量归一化缓存器。
5.根据权利要求2所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,所述多功能运算模块还包括用于缓存PE模块每一层输出值最值的最值存储模块。
6.根据权利要求2所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,所述多功能运算模块还包括用于缓存PE模块的每一层输出值求和结果的求和缓存器。
7.根据权利要求1所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,采用浮点格式存储权重数据和输入图在各网络层的激活张量的具体方式为:在一批权重数据或输入图在各网络层的激活张量中找出最大值并且提取最大值对应的指数,按照该指数将之前提及的一批数据处理为该指数与底数相乘的数据形式,将处理完成后的底数截断至8bit后得到8bit底数与该指数相乘的结果。
8.根据权利要求1所述一种基于FPGA的卷积神经网络片上训练加速器,其特征在于,所述加速器还包括:
Softmax分类器运算模块,用于对PE模块最终输出的前向卷积运算结果进行分类,输出分类结果;及,
输出数据缓存器,用于缓存Softmax分类器运算模块输出的分类结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110697592.7A CN113298237B (zh) | 2021-06-23 | 2021-06-23 | 一种基于fpga的卷积神经网络片上训练加速器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110697592.7A CN113298237B (zh) | 2021-06-23 | 2021-06-23 | 一种基于fpga的卷积神经网络片上训练加速器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113298237A CN113298237A (zh) | 2021-08-24 |
CN113298237B true CN113298237B (zh) | 2024-05-14 |
Family
ID=77329377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110697592.7A Active CN113298237B (zh) | 2021-06-23 | 2021-06-23 | 一种基于fpga的卷积神经网络片上训练加速器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113298237B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117217269A (zh) * | 2022-05-31 | 2023-12-12 | 华为技术有限公司 | 一种神经网络加速器、加速方法以及装置 |
CN115456149B (zh) * | 2022-10-08 | 2023-07-25 | 鹏城实验室 | 脉冲神经网络加速器学习方法、装置、终端及存储介质 |
CN117574976B (zh) * | 2024-01-16 | 2024-04-30 | 北京大学 | 一种大语言模型软硬件协同量化加速计算方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN110543939A (zh) * | 2019-06-12 | 2019-12-06 | 电子科技大学 | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 |
CN112115973A (zh) * | 2020-08-18 | 2020-12-22 | 吉林建筑大学 | 一种基于卷积神经网络图像识别方法 |
-
2021
- 2021-06-23 CN CN202110697592.7A patent/CN113298237B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
CN110543939A (zh) * | 2019-06-12 | 2019-12-06 | 电子科技大学 | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 |
CN110516801A (zh) * | 2019-08-05 | 2019-11-29 | 西安交通大学 | 一种高吞吐率的动态可重构卷积神经网络加速器架构 |
CN112115973A (zh) * | 2020-08-18 | 2020-12-22 | 吉林建筑大学 | 一种基于卷积神经网络图像识别方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113298237A (zh) | 2021-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113298237B (zh) | 一种基于fpga的卷积神经网络片上训练加速器 | |
US10096134B2 (en) | Data compaction and memory bandwidth reduction for sparse neural networks | |
US10860922B2 (en) | Sparse convolutional neural network accelerator | |
CN111459877B (zh) | 基于FPGA加速的Winograd YOLOv2目标检测模型方法 | |
CN110390383B (zh) | 一种基于幂指数量化的深度神经网络硬件加速器 | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN110516801A (zh) | 一种高吞吐率的动态可重构卷积神经网络加速器架构 | |
CN109740748B (zh) | 一种基于fpga的卷积神经网络加速器 | |
CN113792621B (zh) | 一种基于fpga的目标检测加速器设计方法 | |
CN114219699B (zh) | 匹配代价处理方法及电路和代价聚合处理方法 | |
CN111738427A (zh) | 一种神经网络的运算电路 | |
CN112559046A (zh) | 数据处理装置及人工智能处理器 | |
CN113344179A (zh) | 基于fpga的二值化卷积神经网络算法的ip核 | |
CN110222835A (zh) | 一种基于零值检测的卷积神经网络硬件系统及运算方法 | |
CN116167424B (zh) | 基于cim的神经网络加速器、方法、存算处理系统与设备 | |
CN110766136B (zh) | 一种稀疏矩阵与向量的压缩方法 | |
CN214586992U (zh) | 神经网络加速电路、图像处理器及三维成像电子设备 | |
CN110796244A (zh) | 用于人工智能设备的核心计算单元处理器及加速处理方法 | |
CN112906886A (zh) | 结果复用的可重构bnn硬件加速器及图像处理方法 | |
CN109117114B (zh) | 一种基于查找表的低复杂度近似乘法器 | |
CN111767994B (zh) | 一种神经元计算装置 | |
CN113988280B (zh) | 一种基于二值化神经网络的阵列计算加速器架构 | |
CN112001492A (zh) | 关于二值权重DenseNet模型的混合流水式加速架构及加速方法 | |
CN111445018B (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 |