CN111582465A - 基于fpga的卷积神经网络加速处理系统、方法以及终端 - Google Patents
基于fpga的卷积神经网络加速处理系统、方法以及终端 Download PDFInfo
- Publication number
- CN111582465A CN111582465A CN202010382557.1A CN202010382557A CN111582465A CN 111582465 A CN111582465 A CN 111582465A CN 202010382557 A CN202010382557 A CN 202010382557A CN 111582465 A CN111582465 A CN 111582465A
- Authority
- CN
- China
- Prior art keywords
- chip
- neural network
- convolutional neural
- data
- subunit
- 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Engineering & Computer Science (AREA)
- Neurology (AREA)
- Software Systems (AREA)
- Molecular Biology (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- General Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供一种基于FPGA的卷积神经网络加速处理系统、方法以及终端,解决了解决现有技术中存在卷积神经网络内在计算特性与部署在片上网络架构失配的问题,硬件加速效率还有很大的提升空间,并且出现网络网络层在不同维度上的并行度差异较大、不同网络层的内存访问特征不同的问题,本申请通过流水线架构、定制的多级访存策略和卷积并行优化,以提升卷积神经网络在FPGA上的加速效率、数据的吞吐率以及计算能效。
Description
技术领域
本申请涉及一种人工智能技术领域,特别是涉及一种基于FPGA的卷积神经网络加速处理系统、方法以及终端。
背景技术
近年来,随着人工智能技术的持续发展和数据量的爆发式增长,以卷积神经网络(CNN)为代表的深度学习技术被广泛运用到视觉分析(目标检测、分类、跟踪)等类人脑认知任务中,并取得了令人瞩目的成果。由于应用场景的复杂度与日俱增,网络模型的结构变得越来越复杂、深度也在不断增加,给通用计算平台的实时处理带来了非常严峻的挑战。
针对嵌入式平台苛刻的性能、能效要求,使得卷积神经网络在移动端的部署受到巨大的限制。在这种计算需求下,基于专用集成电路(ASIC)和现场可编程门阵列(FPGA)的硬件加速方法已普遍应用到对卷积神经网络的硬件加速部署中。FPGA由于其具有高并行度、可配置、灵活度高和低功耗等优势,是一个更合适的硬件加速平台。与传统大数据算法相似的是,卷积神经网络兼具计算密集性和访存密集性,而FPGA平台本身计算资源和存储资源都有限,在实际应用中对卷积神经网络的前馈计算实时性要求又非常高,因此如何采用FPGA来加速卷积神经网络的前馈计算效率也是一个亟待解决的问题。
早期部署在FPGA上的卷积神经网络主要集中在卷积计算单元的高效实现上,MAPLE是针对卷积神经网络的核心矩阵、向量算子进行加速,并尝试通过片上缓存暂存中间结果来减小片外访存开销;Caffeine通过将全连接层的计算转化为卷积计算来实现对网络模型的加速,但该加速器的设计空间搜索只面向特定的硬件平台。也有研究人员采用向量内积、二维脉动阵列来优化卷积计算过程中的数据流动,通过矩阵变换的Wingograd算法也被引入到卷积神经网络的硬件部署中以减少卷积计算过程中的乘法数量。
总的来说,主流的基于FPGA的卷积神经网络硬件加速器主要通过高层次综合的方法,采用循环展开、分片等优化技术,将计算部件组织为若干同构的处理单元后对外封装为统一的单核计算整体,不同层之间采用计算部件复用的方式逐层计算。这种方式存在卷积神经网络内在计算特性与部署在片上网络架构失配的问题,硬件加速效率还有很大的提升空间,并且出现网络网络层在不同维度上的并行度差异较大、不同网络层的内存访问特征不同的问题。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种基于FPGA的卷积神经网络加速处理系统、方法以及终端,用于解决现有技术中存在卷积神经网络内在计算特性与部署在片上网络架构失配的问题,硬件加速效率还有很大的提升空间,并且出现网络网络层在不同维度上的并行度差异较大、不同网络层的内存访问特征不同的问题。
为实现上述目的及其他相关目的,本申请提供一种基于FPGA的卷积神经网络加速处理方法,应用于流水线架构,包括:片外储存模块,用于发送片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述特征图数据相对应的权值数据;片换储存器接口,连接所述片外储存模块,用于接收并发送多的片外输入数据以实现片上与片外进行的数据交互;片上缓存模块,连接所述片换储存器接口,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征值对应的权值数据;卷积核心计算模块,连接所述片上缓存模块,包括:中间值计算单元以及中间值片上缓存单元,所述卷积核心计算模块用于对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
于本申请的一实施例中,所述中间值计算单元包括:窗口生成子单元、乘法阵列子单元、加法树子单元、激活子单元以及池化子单元;其中,所述窗口生成子单元加载接收到的所述输入特征图数据以及与所述输入特征图数据相对应的权值数据;所述乘法阵列子单元与所述加法树子单元分别对加载的特征图数据相对应的权值数据进行乘法与加法计算得到卷积计算结果;所述激活子单元根据所述卷积计算结果进行非线性激活运算得到激活运算值;所述池化子单元根据所述激活运算值进行池化操作得到输出特征值的中间结果。
于本申请的一实施例中,所述池化子单元包括:第一比较器,用于将奇数行的奇数列的激活运算值与奇数行的偶数列的激活运算值进行对比得到奇数行较大值;第二比较器,用于将偶数行的奇数列的激活运算值与偶数行的偶数列的激活运算值进行对比得到偶数行较大值;Line buffer缓存器,用于储存所述奇数行较大值和/或偶数行较大值,以得到所述输出特征值的中间结果。
于本申请的一实施例中,所述中间值片上缓存单元包括:第一缓存子单元和第二缓存子单元;其中,当所述第一缓存子单元输出所述中间结果,所述第二缓存子单元加载另外的中间结果;或者,当所述第二缓存子单元输出所述中间结果,所述第一缓存子单元加载另外的中间结果。
于本申请的一实施例中,所述片上缓存模块包括:输入特征片上缓存单元,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据;权值片上缓存单元,连接所述输入特征片上缓存单元,用于在所述片外输入数据上读取与所述输入特征图数据对应的权值数据。
于本申请的一实施例中,所述中间值计算单元还包括:等效扩充子单元,连接窗口生成子单元,用于对所述输入特征图数据进行等效扩充。
于本申请的一实施例中,所述系统还包括:直接内存访问控制模块,连接所述片换储存器接口,用于控制所述片上缓存模块和片外储存器上的数据交互;和/或,流水线控制模块,连接所述卷积核心计算模块,用于控制所述卷积核心计算模块的计算过程。
为实现上述目的及其他相关目的,本申请提供一种基于FPGA的卷积神经网络加速处理方法,应用于流水线架构,所述方法包括:接收并发送片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述输入特征图数据相对应的权值数据;在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据;对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
于本申请的一实施例中,对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果的方式包括:接收所述输入特征图数据以及与所述输入特征图数据相对应的权值数据;分别对加载的输入特征图数据相对应的权值数据进行乘法与加法计算得到卷积计算结果;根据所述卷积计算结果进行非线性激活运算得到激活运算值;根据所述激活运算值进行池化操作得到输出特征值的中间结果。
为实现上述目的及其他相关目的,本申请提供一种基于FPGA的卷积神经网络加速处理终端,包括:存储器,用于存储计算机程序;处理器,运行所述计算机程序,以执行所述基于FPGA的卷积神经网络加速处理方法。
如上所述,本申请的基于FPGA的卷积神经网络加速处理系统、方法以及终端,具有以下有益效果:通过流水线架构、定制的多级访存策略和卷积并行优化,以提升卷积神经网络在FPGA上的加速效率、数据的吞吐率以及计算能效。
附图说明
图1显示为本申请一实施例中的基于FPGA的卷积神经网络加速处理系统的结构示意图。
图2显示为本申请一实施例中的中间值片上缓存单元的结构示意图。
图3显示为本申请一实施例中的中间值计算单元的结构示意图。
图4显示为本申请一实施例中的乘加计算子单元的实现流程示意图。
图5显示为本申请一实施例中的池化子单元的结构示意图。
图6显示为本申请一实施例中的等效扩充子单元的结构示意图。
图7显示为本申请一实施例中的基于FPGA的卷积神经网络加速处理系统的结构示意图。
图8显示为本申请一实施例中的基于FPGA的卷积神经网络加速处理方法的流程示意图。
图9显示为本申请一实施例中的基于FPGA的卷积神经网络加速处理终端的结构示意图。
具体实施方式
以下通过特定的具体实例说明本申请的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本申请的其他优点与功效。本申请还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本申请的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,在下述描述中,参考附图,附图描述了本申请的若干实施例。应当理解,还可使用其他实施例,并且可以在不背离本申请的精神和范围的情况下进行机械组成、结构、电气以及操作上的改变。下面的详细描述不应该被认为是限制性的,并且本申请的实施例的范围仅由公布的专利的权利要求书所限定。这里使用的术语仅是为了描述特定实施例,而并非旨在限制本申请。空间相关的术语,例如“上”、“下”、“左”、“右”、“下面”、“下方”、““下部”、“上方”、“上部”等,可在文中使用以便于说明图中所示的一个元件或特征与另一元件或特征的关系。
在通篇说明书中,当说某部分与另一部分“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种部分“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素,排除在外,而是意味着可以还包括其它构成要素。
其中提到的第一、第二及第三等术语是为了说明多样的部分、成份、区域、层及/或段而使用的,但并非限定于此。这些术语只用于把某部分、成份、区域、层或段区别于其它部分、成份、区域、层或段。因此,以下叙述的第一部分、成份、区域、层或段在不超出本申请范围的范围内,可以言及到第二部分、成份、区域、层或段。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
主流的基于FPGA的卷积神经网络硬件加速器主要通过高层次综合的方法,采用循环展开、分片等优化技术,将计算部件组织为若干同构的处理单元后对外封装为统一的单核计算整体,不同层之间采用计算部件复用的方式逐层计算。这种方式存在卷积神经网络内在计算特性与部署在片上网络架构失配的问题,硬件加速效率还有很大的提升空间。把卷积神经网络部署到FPGA上,需要解决网络网络层在不同维度上的并行度差异较大、不同网络层的内存访问特征不同等问题,合理的进行卷积神经网络的计算任务划分对整个加速器的加速效果非常重要。
因此,本申请提供一种基于FPGA的卷积神经网络加速处理系统,应用于流水线架构,所述基于FPGA的卷积神经网络加速处理系统用于解决现有技术中现有技术中存在卷积神经网络内在计算特性与部署在片上网络架构失配的问题,硬件加速效率还有很大的提升空间,并且出现网络网络层在不同维度上的并行度差异较大、不同网络层的内存访问特征不同的问题,本申请通过流水线架构、定制的多级访存策略和卷积并行优化,以提升卷积神经网络在FPGA上的加速效率、数据的吞吐率以及计算能效。
本申请提到的所述流水线结构是以层间数据流驱动的流水线方式进行数据从前往后流动。
所述系统包括:
片外储存模块,用于发送片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述特征值相对应的权值数据;
片换储存器接口,连接所述片外储存模块,用于接收并发送多的片外输入数据以实现片上与片外进行的数据交互;
片上缓存模块,连接所述片换储存器接口,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据;
卷积核心计算模块,连接所述片上缓存模块,包括:中间值计算单元以及中间值片上缓存单元,所述卷积核心计算模块用于对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存;
下面以附图1为参考,针对本申请得实施例进行详细说明,以便本申请所述技术领域的技术人员能够容易地实施。本申请可以以多种不同形态体现,并不限于此处说明的实施例。
如图1所示,为本申请实施例中的一种基于FPGA的卷积神经网络加速处理系统的结构示意图。
所述系统应用于流水线架构,所述系统包括:
所述片外储存模块11,用于发送片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述特征值相对应的权值数据;
所述片换储存器接口12,连接所述片外储存模块,用于接收并发送多的片外输入数据以实现片上与片外进行的数据交互;
所述片上缓存模块13,连接所述片换储存器接口,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据;
卷积核心计算模块14,连接所述片上缓存模块,包括:中间值计算单元141以及中间值片上缓存单元142,所述卷积核心计算模块用于对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
可选的,所述片外储存模块11发送片外输入数据至所述片换储存器接口12,通过所述片换储存器接口向片内传递数据;所述片上缓存模块13根据通过所述接口在所述片外输入数据上读取卷积神经网络的输入特征图数据以及所述输入特征值对应的权值数据;所述卷积核心计算模块14接收到来自所述片上缓存模块的输入特征图数据以及所述输入特征值对应的权值数据,并根据以上数据通过在所述卷积核心计算模块14中的中间值计算单元141分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存在所述卷积核心计算模块14中的中间值片上缓存单元142。
可选的,所述片外储存模块11包括:片外DDR存储器。
可选的,所述片换储存器接口12为外部储存接口,用于接收来自所述片外储存模块11的数据向片内发送,以及来自片内的相关数据向片外发送,以实现片上与片外进行的数据交互。
可选的,所述片上缓存模块13包括:输入特征片上缓存单元,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据;权值片上缓存单元,连接所述输入特征片上缓存单元,用于在所述片外输入数据上读取与所述输入特征图数据对应的权值数据。
可选的,所述卷积核心计算模块14中采用层间流水线的方式。
可选的,所述卷积核心计算模块14包括一或多个卷积层以及全连接层。
可选的,所述中间核心计算模块14对应于一或多个卷积层以及全连接层。
可选的,所述中间值片上缓存单元包括:第一缓存子单元和第二缓存子单元;其中,当所述第一缓存子单元输出所述中间结果,所述第二缓存子单元加载另外的中间结果;或者,当所述第二缓存子单元输出所述中间结果,所述第一缓存子单元加载另外的中间结果。
具体的,请参阅图2,对卷积层1来说,乘加阵列当前计算所需的值已经加载到第一缓冲子单元缓存A中,此时直接从缓存A中读取数据,而不需要访问外部DDR。与此同时,外部DDR也将下次计算所需的数据写入到第二缓存子单元缓存B中,两个缓存模块的读写相互独立、互不干扰。同理,对于每一层的计算,涉及到输入特征图的数据读取以及中间计算结果的存储,通过双缓存结构可以利用乒乓操作来克服在计算期间数据传输的延迟。
可选的,所述中间值计算单元141包括:窗口生成子单元、乘法阵列子单元、加法树子单元、激活子单元以及池化子单元;其中,所述窗口生成子单元加载接收到的所述输入特征图数据以及与所述输入特征图数据相对应的权值数据;所述乘法阵列子单元与所述加法树子单元分别对加载的特征图数据相对应的权值数据进行乘法与加法计算得到卷积计算结果;所述激活子单元根据所述卷积计算结果进行非线性激活运算得到激活运算值;所述池化子单元根据所述激活运算值进行池化操作得到输出特征值的中间结果。
在一实施例中,请参阅图3为一实施例中的中间值计算单元的结构示意图,所述计算单元包括:窗口生成子单元、乘法阵列子单元、加法树子单元、激活子单元以及池化子单元;其中卷积核的大小为3×3,因此每个输出特征图值的一个像素值是将临近的9个像素值和对应的权重值进行点积运算得到的。卷积层设计流水线式并行乘加结构,在每个时钟周期都能输出后续特征图上的一个点。由于卷积计算随着窗口的每次移动,都有交叠部分,为了减少输入特征图的重复读取,使用3条Linebuffer从片上缓存中加载输入特征图,Linebuffer的长度为输入特征图的宽度。同时在Linebuffer后接一个寄存器组,可以暂存当前卷积所需要的邻近多行数据。
可选的,乘法阵列和加法树子单元所组成的乘加计算子单元在FPGA的具体实现如图4所示,乘法器阵列子单元由多个并行的乘法器组成,加法树子单元通过流水线式方式进行加法计算,使得卷积模块能够在一个周期内完成卷积核大小所对应的乘加运算。
可选的,所述激活子单元通过ReLU函数对所述卷积计算结果进行激活。
可选的,所述池化子单元用来完成对输出特征图进行下采样以减少特征图的大小,同时抽象出更高层次的语义信息。目前绝对大多数网络使用最大值池化来进行下采样本文中池化运算的窗口大小为2×2,即从相邻的2×2的激活值中求取最大值或平均值,而且步长为2,经过池化运算以后的特征图大小为池化前的1/4。
可选的,所述池化子单元包括:第一比较器,用于将奇数行的奇数列的激活运算值与奇数行的偶数列的激活运算值进行对比得到奇数行较大值;第二比较器,用于将偶数行的奇数列的激活运算值与偶数行的偶数列的激活运算值进行对比得到偶数行较大值;Linebuffer缓存器,用于储存所述奇数行较大值和/或偶数行较大值,以得到所述输出特征值的中间结果。
所述第一比较器以及第二比较器的数量为至少一个;
举例来说,如图5所示,当奇数行的奇数列数据输入进来时,将其暂存在第一个寄存器中。并在下一个时钟周期,和输入进来的奇数行的偶数列数在第一个比较器中进行比较,将较大的值暂存到Linebuffer缓存器中,Linebuffer的长度为特征图宽度的一半。同理,当偶数行的数据输入进来时,也是在第一个比较器中两两比较,将较大的值暂存到第二个寄存器中,在下一个时钟周期,在第二个比较器中和暂存在Linebuffer中的奇数行对应位置的数据进行比较。这样仅只用了两个比较器和一个Linebuffer缓存器就实现了最大值池化操作,并且不需要重复读取数据。
可选的,所述中间值计算单元141还包括:等效扩充子单元,连接窗口生成子单元,用于对所述输入特征图数据进行等效扩充。以解决在对特征图进行卷积的过程中,卷积运算中一般因为卷积核大于1会造成输出特征图的周围缩小一圈,一般采用对输入特征图的周围填充(Padding)像素的方式增大特征图,通常的做法是补0。输入图像的高度和宽度设置为h、w,k为kernel的大小。我们应该将原始图像的大小扩展到(h+k-1,w+k-1)。这意味着二维PE需要(h+k-1)×(w+k-1)个时钟周期才能遍历完单个输入特征图,完成单通道卷积运算。
可选的,等效扩充子单元包括:多路复用器,若当前输入等效为输入特征图本该扩充的图像边缘,则输入0,若为输入特征图,选择输入特征图本身的值。采用这种结构,避免了直接扩展输入图像和增加运行时间,遍历整个输入特征图的时间缩小为h×k,如图6所示。
可选的,与所述系统还包括:直接内存访问控制模块,连接所述片换储存器接口,用于控制所述片上缓存模块和片外储存器上的数据交互;和/或,流水线控制模块,连接所述卷积核心计算模块,用于控制所述卷积核心计算模块的计算过程。
以下结合具体实施例来说明所述基于FPGA的卷积神经网络加速处理系统。
实施例1:一种基于FPGA的卷积神经网络加速处理系统,请参阅图7。
基于流水线架构,所述系统包括:
片外DDR存储器、片换存储器接口、直接内存访问控制器、卷积计算核心引擎、输入特征片上缓存单元、权值片上缓存单元、中间值片上缓存单元、流水线控制器单元构成。其中图7中的实线箭头为数据通路,虚线箭头为控制通路。
所述片外DDR存储器发送片外输入数据给所述片换存储器接口,以实现与片内进行数据传输;所述输入特征片上缓存单元,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据;权值片上缓存单元,连接所述输入特征片上缓存单元,用于在所述片外输入数据上读取与所述输入特征图数据对应的权值数据。虚线框内的卷积计算核心引擎为整个加速器的核心,不同的网络层就对应着各自映射的独享的计算引擎,主要负责卷积计算、激活计算、池化计算以及全连接计算。卷积计算核心引擎根据实际应用需求,内部可以进行并行化扩展以适应不同层的计算需求,每个引擎的片上缓存也根据每层的中间值大小需求来进行部署。所述DMA控制器主要实现片上缓存和片外存储器之间的数据读写控制,所述流水线控制器用来协调相邻层间连续的流式计算过程。所述中间值片上缓存单元采用双缓存结构,直接从缓存A中读取中间值,而不需要访问外部DDR。与此同时,外部DDR也将下次计算所需的中间值写入到缓存B中,两个缓存模块的读写相互独立、互不干扰。
上述实施例原理相似的是,本申请提供一种基于FPGA的卷积神经网络加速处理方法,应用于流水线架构,所述方法包括:
接收并发送多的片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述输入特征图数据相对应的权值数据;
在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据;
对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
下面以附图8为参考,针对本申请得实施例进行详细说明,以便本申请所述技术领域的技术人员能够容易地实施。本申请可以以多种不同形态体现,并不限于此处说明的实施例。
如图8所示,为本申请实施例中的一种基于FPGA的卷积神经网络加速处理方法的流程示意图。
所述基于FPGA的卷积神经网络加速处理方法,应用于流水线架构,所述方法包括:
步骤S81:接收并发送多的片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述输入特征图数据相对应的权值数据。
可选的,接收并发送片外输入数据至一片换储存器接口,以以实现片上与片外进行的数据交互。
步骤S82:在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据。
可选的,接收所述片外输入数据,在所述输入数据上读取卷积神经网络的输入特征图数据;在所述输入数据上读取与所述卷积神经网络的特征图数据对应的权值数据。
步骤S83:对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
可选的,缓存为利用双缓存结构进行缓存,当所述从第一缓存输出所述中间结果,所述第二缓存加载另外的中间结果;或者当所述第二缓存输出所述中间结果,所述第一缓存加载另外的中间结果。
可选的,对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果的方式包括:
接收所述输入特征图数据以及与所述输入特征图数据相对应的权值数据;
分别对加载的输入特征图数据相对应的权值数据进行乘法与加法计算得到卷积计算结果;
根据所述卷积计算结果进行非线性激活运算得到激活运算值;
根据所述激活运算值进行池化操作得到输出特征值的中间结果。
可选的,所述池化操作完成对输出特征图进行下采样以减少特征图的大小,同时抽象出更高层次的语义信息,使用最大值池化来进行池化操作;
其中得到最大值的方式包括:
将奇数行的奇数列的激活运算值与奇数行的偶数列的激活运算值进行对比得到奇数行较大值并储存所述奇数行较大值;
或者,将偶数行的奇数列的激活运算值与偶数行的偶数列的激活运算值进行对比得到偶数行较大值,并储存所述偶数行较大值。
可选的,所述基于FPGA的卷积神经网络加速处理方法还包括:对所述输入特征图数据进行等效扩充。
如图9所示,展示本申请实施例中的基于FPGA的卷积神经网络加速处理终端90的结构示意图。
所述基于FPGA的卷积神经网络加速处理终端90包括:存储器91及处理器92所述存储器91用于存储计算机程序;所述处理器92运行计算机程序实现如图8所述的基于FPGA的卷积神经网络加速处理终端方法。
可选的,所述存储器91的数量均可以是一或多个,所述处理器92的数量均可以是一或多个,所而图9中均以一个为例。
可选的,所述电子装置90中的处理器92会按照如图8述的步骤,将一个或多个以应用程序的进程对应的指令加载到存储器91中,并由处理器92来运行存储在存储器91中的应用程序,从而实现如图8所述基于FPGA的卷积神经网络加速处理终端方法中的各种功能。
可选的,所述存储器91,可能包括但不限于高速随机存取存储器、非易失性存储器。例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备;所述处理器91,可能包括但不限于中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital SignalProcessing,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可选的,所述处理器92可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供计算机可读存储介质,存储有计算机程序,所述计算机程序运行时实现如图8所示的基于FPGA的卷积神经网络加速处理方法。所述计算机可读存储介质可包括,但不限于,软盘、光盘、CD-ROM(只读光盘存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。所述计算机可读存储介质可以是未接入计算机设备的产品,也可以是已接入计算机设备使用的部件。
综上所述,本申请基于FPGA的卷积神经网络加速处理系统、方法以及终端,解决了解决现有技术中存在卷积神经网络内在计算特性与部署在片上网络架构失配的问题,硬件加速效率还有很大的提升空间,并且出现网络网络层在不同维度上的并行度差异较大、不同网络层的内存访问特征不同的问题,本申请通过流水线架构、定制的多级访存策略和卷积并行优化,以提升卷积神经网络在FPGA上的加速效率、数据的吞吐率以及计算能效。所以,本申请有效克服了现有技术中的种种缺点而具高度产业利用价值。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (10)
1.一种基于FPGA的卷积神经网络加速处理系统,其特征在于,应用于流水线架构,包括:
片外储存模块,用于发送片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述特征图数据相对应的权值数据;
片换储存器接口,连接所述片外储存模块,用于接收并发送多的片外输入数据以实现片上与片外进行的数据交互;
片上缓存模块,连接所述片换储存器接口,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征值对应的权值数据;
卷积核心计算模块,连接所述片上缓存模块,包括:中间值计算单元以及中间值片上缓存单元,所述卷积核心计算模块用于对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
2.根据权利要求1所述的基于FPGA的卷积神经网络加速处理方法,其特征在于,所述中间值计算单元包括:窗口生成子单元、乘法阵列子单元、加法树子单元、激活子单元以及池化子单元;其中,
所述窗口生成子单元加载接收到的所述输入特征图数据以及与所述输入特征图数据相对应的权值数据;所述乘法阵列子单元与所述加法树子单元分别对加载的特征图数据相对应的权值数据进行乘法与加法计算得到卷积计算结果;所述激活子单元根据所述卷积计算结果进行非线性激活运算得到激活运算值;所述池化子单元根据所述激活运算值进行池化操作得到输出特征值的中间结果。
3.根据权利要求2所述的基于FPGA的卷积神经网络加速处理方法,其特征在于,所述池化子单元包括:
第一比较器,用于将奇数行的奇数列的激活运算值与奇数行的偶数列的激活运算值进行对比得到奇数行较大值;
第二比较器,用于将偶数行的奇数列的激活运算值与偶数行的偶数列的激活运算值进行对比得到偶数行较大值;
Line buffer缓存器,用于储存所述奇数行较大值和/或偶数行较大值,以得到所述输出特征值的中间结果。
4.根据权利要求1所述的基于FPGA的卷积神经网络加速处理方法,其特征在于,所述中间值片上缓存单元包括:第一缓存子单元和第二缓存子单元;其中,
当所述第一缓存子单元输出所述中间结果,所述第二缓存子单元加载另外的中间结果;
或者,
当所述第二缓存子单元输出所述中间结果,所述第一缓存子单元加载另外的中间结果。
5.根据权利要求1所述的基于FPGA的卷积神经网络加速处理方法,其特征在于,所述片上缓存模块包括:
输入特征片上缓存单元,用于在所述片外输入数据上读取卷积神经网络的输入特征图数据;
权值片上缓存单元,连接所述输入特征片上缓存单元,用于在所述片外输入数据上读取与所述输入特征图数据对应的权值数据。
6.根据权利要求1所述的基于FPGA的卷积神经网络加速处理方法,其特征在于,所述中间值计算单元还包括:等效扩充子单元,连接窗口生成子单元,用于对所述输入特征图数据进行等效扩充。
7.根据权利要求1所述的基于FPGA的卷积神经网络加速处理系统,其特征在于,所述系统还包括:
直接内存访问控制模块,连接所述片换储存器接口,用于控制所述片上缓存模块和片外储存器上的数据交互;
和/或,流水线控制模块,连接所述卷积核心计算模块,用于控制所述卷积核心计算模块的计算过程。
8.一种基于FPGA的卷积神经网络加速处理方法,其特征在于,应用于流水线架构,所述方法包括:
接收并发送片外输入数据,其中,所述片外输入数据包括卷积神经网络的输入特征图数据以及与所述输入特征图数据相对应的权值数据;
在所述片外输入数据上读取卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据;
对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果,并将所述中间结果进行缓存。
9.根据权利要求6所述的基于FPGA的卷积神经网络加速处理方法,其特征在于,对接收到的所述卷积神经网络的输入特征图数据以及与所述输入特征图数据对应的权值数据分别进行卷积运算、非线性激活运算以及池化操作得到输出特征值的中间结果的方式包括:
接收所述输入特征图数据以及与所述输入特征图数据相对应的权值数据;
分别对加载的输入特征图数据相对应的权值数据进行乘法与加法计算得到卷积计算结果;
根据所述卷积计算结果进行非线性激活运算得到激活运算值;
根据所述激活运算值进行池化操作得到输出特征值的中间结果。
10.一种基于FPGA的卷积神经网络加速处理终端,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于运行所述计算机程序,以执行如权利要求8或9中所述的基于FPGA的卷积神经网络加速处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010382557.1A CN111582465B (zh) | 2020-05-08 | 2020-05-08 | 基于fpga的卷积神经网络加速处理系统、方法以及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010382557.1A CN111582465B (zh) | 2020-05-08 | 2020-05-08 | 基于fpga的卷积神经网络加速处理系统、方法以及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111582465A true CN111582465A (zh) | 2020-08-25 |
CN111582465B CN111582465B (zh) | 2023-04-07 |
Family
ID=72117260
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010382557.1A Active CN111582465B (zh) | 2020-05-08 | 2020-05-08 | 基于fpga的卷积神经网络加速处理系统、方法以及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111582465B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112766478A (zh) * | 2021-01-21 | 2021-05-07 | 中国电子科技集团公司信息科学研究院 | 一种面向卷积神经网络的fpga流水线结构 |
CN112860320A (zh) * | 2021-02-09 | 2021-05-28 | 山东英信计算机技术有限公司 | 基于risc-v指令集进行数据处理的方法、系统、设备及介质 |
CN113222107A (zh) * | 2021-03-09 | 2021-08-06 | 北京大学 | 数据处理方法、装置、设备及存储介质 |
CN113673701A (zh) * | 2021-08-24 | 2021-11-19 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180307980A1 (en) * | 2017-04-24 | 2018-10-25 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
CN108804077A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
US20190180170A1 (en) * | 2017-12-12 | 2019-06-13 | Amazon Technologies, Inc. | Multi-memory on-chip computational network |
EP3531348A1 (en) * | 2018-02-27 | 2019-08-28 | STMicroelectronics International N.V. | Aritmetic unit for deep learning acceleration |
-
2020
- 2020-05-08 CN CN202010382557.1A patent/CN111582465B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180307980A1 (en) * | 2017-04-24 | 2018-10-25 | Intel Corporation | Specialized fixed function hardware for efficient convolution |
CN108804077A (zh) * | 2017-04-28 | 2018-11-13 | 英特尔公司 | 用来执行用于机器学习的浮点和整数操作的指令和逻辑 |
US20190180170A1 (en) * | 2017-12-12 | 2019-06-13 | Amazon Technologies, Inc. | Multi-memory on-chip computational network |
EP3531348A1 (en) * | 2018-02-27 | 2019-08-28 | STMicroelectronics International N.V. | Aritmetic unit for deep learning acceleration |
CN109284817A (zh) * | 2018-08-31 | 2019-01-29 | 中国科学院上海高等研究院 | 深度可分离卷积神经网络处理架构/方法/系统及介质 |
Non-Patent Citations (1)
Title |
---|
刘晏辰等: "一种细粒度可重构的深度神经网络加速芯片", 《半导体技术》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112766478A (zh) * | 2021-01-21 | 2021-05-07 | 中国电子科技集团公司信息科学研究院 | 一种面向卷积神经网络的fpga流水线结构 |
CN112766478B (zh) * | 2021-01-21 | 2024-04-12 | 中国电子科技集团公司信息科学研究院 | 一种面向卷积神经网络的fpga流水线结构 |
CN112860320A (zh) * | 2021-02-09 | 2021-05-28 | 山东英信计算机技术有限公司 | 基于risc-v指令集进行数据处理的方法、系统、设备及介质 |
CN113222107A (zh) * | 2021-03-09 | 2021-08-06 | 北京大学 | 数据处理方法、装置、设备及存储介质 |
CN113673701A (zh) * | 2021-08-24 | 2021-11-19 | 安谋科技(中国)有限公司 | 神经网络模型的运行方法、可读介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111582465B (zh) | 2023-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
CN110458279B (zh) | 一种基于fpga的二值神经网络加速方法及系统 | |
US11734006B2 (en) | Deep vision processor | |
CN110390385B (zh) | 一种基于bnrp的可配置并行通用卷积神经网络加速器 | |
CN111897579B (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN111325321B (zh) | 基于多神经网络融合的类脑计算系统及指令集的执行方法 | |
CN108229671B (zh) | 一种降低加速器外部数据存储带宽需求的系统和方法 | |
CN110321997B (zh) | 高并行度计算平台、系统及计算实现方法 | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
CN113051216B (zh) | 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法 | |
CN114742225A (zh) | 一种基于异构平台的神经网络推理加速方法 | |
WO2023116314A1 (zh) | 一种神经网络加速装置、方法、设备和计算机存储介质 | |
CN110705702A (zh) | 一种动态可扩展的卷积神经网络加速器 | |
CN110991630A (zh) | 一种面向边缘计算的卷积神经网络处理器 | |
CN109472734B (zh) | 一种基于fpga的目标检测网络及其实现方法 | |
CN115423081A (zh) | 一种基于fpga的cnn_lstm算法的神经网络加速器 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN113743587A (zh) | 一种卷积神经网络池化计算方法、系统、及存储介质 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN113128688B (zh) | 通用型ai并行推理加速结构以及推理设备 |
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 |