CN114742225A - 一种基于异构平台的神经网络推理加速方法 - Google Patents

一种基于异构平台的神经网络推理加速方法 Download PDF

Info

Publication number
CN114742225A
CN114742225A CN202210361419.4A CN202210361419A CN114742225A CN 114742225 A CN114742225 A CN 114742225A CN 202210361419 A CN202210361419 A CN 202210361419A CN 114742225 A CN114742225 A CN 114742225A
Authority
CN
China
Prior art keywords
convolution
module
neural network
calculation
input
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.)
Pending
Application number
CN202210361419.4A
Other languages
English (en)
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.)
Hefei Institutes of Physical Science of CAS
Original Assignee
Hefei Institutes of Physical Science of CAS
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 Hefei Institutes of Physical Science of CAS filed Critical Hefei Institutes of Physical Science of CAS
Priority to CN202210361419.4A priority Critical patent/CN114742225A/zh
Publication of CN114742225A publication Critical patent/CN114742225A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Neurology (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Complex Calculations (AREA)

Abstract

本发明的一种基于异构平台的神经网络推理加速方法,包括利用处理器+FPGA的异构平台搭建神经网络加速器推理的硬件系统,处理器负责逻辑控制,FPGA负责对计算密集型任务并行加速,充分发挥异构平台的优势;首先在FPGA中设计神经网络加速器,神经网络加速器包括普通卷积模块、深度可分离卷积模块、全连接模块、池化模块、批归一化模块、激活函数模块,来完成神经网络卷积计算与输出数据的处理。然后,利用卷积分块、并行卷积计算、缓存的设置与优化、数据流优化、流水化来进行有效加速,提高了卷积神经网络加速器的运算速度和资源利用率。本发明可用于加速包含普通卷积、深度可分离卷积、批归一化、激活函数、池化、全连接算子的卷积神经网络的前向推理。

Description

一种基于异构平台的神经网络推理加速方法
技术领域
本发明涉及人工智能技术领域,具体涉及一种基于异构平台的神经网络推理加速方法。
背景技术
卷积神经网络是当前人工智能深度学习领域中最为重要的模型,被广泛应用在图像识别和目标检测等场景中,并获得了很高的准确度。深度学习的应用场景主要包括:智能驾驶、车辆智能定损、货物分捡、农作物辨别、工业制造中零件残缺点检测、安防领域的人脸识别等。卷积神经网络的发展也给我们带来更多挑战,权重参数量越来越多,计算量也越来越大,导致了复杂的模型很难移植到移动端和嵌入式设备中,卷积神经网络模型通常有数百层网络,有着数百万的权值参数,保存大量权值参数对边缘设备的内存要求很高,而大部分的边缘设备的存储容量都是很有限的,因此,在边缘设备上部署轻量化的卷积神经网络很重要。轻量化模型设计的主要思想在于设计更高效的网络计算方式,从而使网络参数减少的同时,不损失网络性能,目前的轻量化的神经网络,如SqueezeNet、MobileNet、ShuffleNet、Xception等,主要利用深度可分离卷积(Depthwise separable convolution)来减少参数量和计算量。
同时随着智能设备、移动终端的不断普及,AI应用部署到嵌入式设备上,对于其速度、性能和功耗都有很高的要求,目前围绕卷积神经网络加速算法有多种硬件平台设计方式:采用图形处理器(GPU)、采用专用集成电路(ASIC)、现场可编程门阵列(FPGA)设计的加速系统。GPU加速是常用的一种加速方式,但是其体积和功耗较大、成本高,不适用于边缘端的应用。ASIC加速性能好,体积和功耗可控,但是其设计难度大,开发周期长,灵活性差。FPGA是一种可以根据不同算法进行硬件电路搭建的平台,FPGA以其强大的并行能力、灵活的设计方法和较高的性能功耗比,成为了在嵌入式设备中实现对卷积神经网络进行硬件加速的最具吸引力的实现平台之一。
现阶段,大部分加速卷积神经网络推断过程的加速器设计只包含普通卷积、池化和全连接部分,从而只能支持简单的普通卷积神经网络,不能够很好的支持包含深度可分离卷积的轻量化卷积神经网络,导致很多网络复杂、性能较高且轻量化的模型无法很好的在嵌入式边缘设备上应用;大部分加速卷积神经网络推理过程的设计只使用了少量方法来优化加速过程,没有将各种方法同时结合起来使用,卷积计算和数据的处理过程不够高效,不能够充分发挥FPGA的并行性;且大部分都是将重点放在FPGA侧进行硬件加速,而基于异构平台的加速能够充分的结合处理器对逻辑的控制以及FPGA对计算密集型任务并行加速,充分发挥异构平台的优势作用,从而提高系统整体的性能。
发明内容
本发明提出的一种基于异构平台的神经网络推理加速方法,可解决上述技术问题,能够适用于卷积神经网络在边缘设备上的应用。
为实现上述目的,本发明采用了以下技术方案:
一种基于异构平台的神经网络推理加速方法,基于异构平台,所述异构平台包括处理器和FPGA的片上系统,包括以下步骤:
在FPGA中设计神经网络加速器,神经网络加速器包括计算模块和数据处理模块来完成神经网络卷积计算与输出数据的处理;然后采用缓存的设置与优化、流水化、数据流优化的方法来加快神经网络前向推理过程;
其中,所述计算模块包括普通卷积模块、深度可分离卷积模块、全连接模块;所述数据处理模块包括池化模块、批归一化模块、激活函数模块;
所述普通卷积模块对卷积进行分块计算,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算;
深度可分离卷积模块包括深度卷积模块和逐点卷积模块;深度卷积的一个卷积核只有一个通道,一个卷积核只负责卷积输入特征图的一个通道,产生的输出特征图通道数和输入通道数一样;逐点卷积模块的卷积核尺寸为1x1xD,D为上一层卷积输出的通道数;
全连接模块复用普通卷积部分,通过AXI_Lite总线设置输入的规模为1x1xC,其中C为通道数;
池化模块包括最大池化和平均池化,通过配置相应寄存器的值来选择;最大池化仅为逻辑运算,输入数据通过比较器比较,输出一个最大值就好了;平均池化利用加法器将输入数据加和然后通过移位寄存器实现除法计算,从而求出平均值;
批归一化模块对普通卷积模块和深度可分离卷积模块的输出进行数据归一化处理。
进一步的,所述采用缓存的设置与优化、流水化、数据流优化的方法来加快神经网络前向推理过程,具体包括:
缓存的设置与优化,在FPGA中的片上BRAM存储器,分别设置输入缓存:IN[Tn][Tic][Tir]、权重缓存:W[Tm][Tn][Tkc][Tkr]、输出缓存:OUT[Tm][Toc][Tor],缓存的大小根据卷积分块变量大小来确定;使用缓存分割方法,对输入和输出缓存的通道维度进行分割,对权重缓存的输入和输出通道两个维度进行分割,使其分布在不同的BRAM区块,增加其输入输出端口的数量,可同时进行读写操作;将输入缓存划分为Tn个独立的缓存块,权重缓存划分为Tm*Tn个独立的缓存块,输出缓存划分为Tm个独立的缓存块;
数据流优化,为采用双缓冲+乒乓操作方法进行任务级数据流的并行优化,即在FPGA的片上BRAM中设置两块同样大小的输入缓存、权重缓存、输出缓存,利用“乒乓”数据传输机制,将读取数据、卷积计算和写回结果同时进行。
进一步的,还包括神经网络的训练,具体为在服务器端搭建神经网络模型,导入数据集进行训练,训练完成后得到神经网络各层的模型参数,包括卷积层的权重和偏置参数、批归一化参数,并将参数保存为二进制文件,放入SD卡中。
进一步的,所述神经网络前向推理过程包括:
应用程序在DDR内存中分配出一块物理地址连续的数组空间ARRAY_IMAGE,并读取输入图片进行预处理后放到该数组空间;
应用程序在DDR内存中分配出一块物理地址连续的数组空间ARRAYi,读取神经网络卷积层参数、批归一化层参数到该数组空间;
应用程序将整个加速器以二进制比特流文件的形式加载到FPGA;
应用程序根据神经网络模型的结构,配置FPGA加速器内部各个模块的寄存器,并调整卷积、池化和全连接运算的规模;
应用程序根据神经网络模型的结构,分别调用FPGA加速器中的普通卷积模块、深度可分离卷积模块、全连接模块、池化模块、批归一化模块、激活函数模块,并将内存DDR的输入数据、卷积层参数、批归一化层参数传入FPGA加速器中,进行加速计算;
FPGA加速器完成神经网络的所有层级的推理计算后,将推理结果返回到内存DDR中,提供给应用程序访问。
进一步的,所述普通卷积模块对卷积进行分块计算,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算,具体包括:
首先采用卷积分块策略,通过分时复用卷积块单元来完成整个卷积的计算,分块变量分别为输出分块的通道数:Tm、宽:Toc、高:Tor,卷积核分块的宽:Tkc、高:Tkr,输入分块的通道数:Tn、宽:Tic、高:Tir,输入分块变量和输出分块变量满足如下关系:Tir=(Tor-1)*S+Tkr、Tic=(Toc-1)*S+Tkc,S为卷积核移动步长;
分块变量通过卷积层的输出特征图尺寸和卷积核的大小来确定,并且受片上资源的制约;
卷积计算由输出特征图内、输出通道、输入通道、卷积核内四个维度上嵌套的循环结构组成,并且在每个维度都存在并行性,通过调整卷积块内的嵌套循环的循环顺序,将输出通道和输入通道的循环置于最内层并且对这两个维度进行并行卷积计算,使卷积块中的外部循环不断复用内部的并行计算核心,完成整个卷积块单元的计算。
进一步的,并行计算包含:Tm个卷积计算引擎PE,而每个PE由Tn个乘法器、一个深度为
Figure BDA0003585431900000041
的加法树和一个加法器组成,并行地进行Tn个输入特征图像素与Tm*Tn个卷积核权重的乘法运算,之后通过加法树将结果累加起来,最后再和以前保存的部分和相加。
进一步的,归一化模块的设计包括:
设卷积模块输出通道的四个参数分别为u、σ、γ、β,其中u为均值;σ为方差;γ为缩放系数、β为偏移系数;批归一化部分的输入数据为x,输出数据为:
Figure BDA0003585431900000051
其中∈为超参数;
批归一化模块的设计为将内存DDR当中对应的参数u、σ、γ、β读出,每个输出通道对应一组参数,根据上述公式,利用FPGA当中的硬件资源搭建具体运算电路模块,输入为卷积计算后输出的结果。
另一方面,本发明还公开一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上述方法的步骤。
由上述技术方案可知,本发明的基于异构平台的神经网络推理加速方法利用处理器+FPGA的异构平台搭建神经网络加速器推理的硬件系统,处理器负责逻辑控制,FPGA负责对计算密集型任务并行加速,充分发挥异构平台的优势。首先在FPGA中设计神经网络加速器,神经网络加速器包括普通卷积模块、深度可分离卷积模块、全连接模块、池化模块、批归一化模块、激活函数模块,来完成神经网络卷积计算与输出数据的处理。然后,利用卷积分块、并行卷积计算、缓存的设置与优化、数据流优化、流水化来进行有效加速,提高了卷积神经网络加速器的运算速度和资源利用率。本发明可用于加速包含普通卷积、深度可分离卷积、批归一化、激活函数、池化、全连接算子的卷积神经网络的前向推理。
与现有技术相比,本发明的有益效果为:
1、本发明搭建了一个通用的卷积神经网络加速器,适用于不同深度的普通卷积神经网络和轻量化卷积神经网络;
2、本发明通过网络各层的参数来配置加速器中各模块的寄存器,可实现加速器各模块的复用;本发明的全连接算子的实现复用了卷积算子,进一步减少了硬件资源的开销,提高了硬件资源的利用率;
3、本发明通过在FPGA中采用卷积分块、并行卷积计算、缓存的设置与优化、数据流优化、流水化的方法,提高了卷积计算的并行度,减少了数据传输时间,加速了网络的推理过程;
4、本发明利用处理器进行逻辑控制,利用FPGA对计算密集型任务进行并行加速,充分发挥了异构平台的优势,本发明提出的方法将能够以较快的速度和较高的性能实现AI应用在智能设备、移动终端上的部署。
附图说明
图1为本发明的轻量化卷积神经网络MobileNetV2的网络结构图;
图2为本发明的卷积分块计算的示意图;
图3为本发明的并行卷积计算核心的硬件结构示意图;
图4为本发明的缓存设置与优化图;
图5为本发明的数据流优化图;
图6为本发明的流水化图;
图7为本实施例中在SoC上搭建基于异构平台的神经网络前向推理系统的硬件架构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
本发明提出的基于异构平台的神经网络推理的加速方法,适用于不同深度的普通卷积神经网络和轻量化卷积神经网络,应用于由SoC片上系统,DDR内存,SD存储卡、应用程序组成的神经网络推理加速系统中;所述SoC片上系统是由处理器和FPGA组成的异构系统;包括:
步骤一、神经网络加速器的设计;
在FPGA当中设计神经网络前向推理加速器,包括计算模块和数据处理模块来完成卷积计算与输出数据的处理。计算模块包括:普通卷积模块、深度可分离卷积模块、全连接模块,数据处理模块包括:池化模块、批归一化模块、激活函数模块。
步骤二、神经网络加速器的优化方法;
对步骤一当中的普通卷积、深度可分离卷积进行加速优化,采用缓存的设置与优化、流水化、数据流优化的方法来加快神经网络前向推理过程。
步骤三、异构平台的搭建;
利用所述步骤二设计的神经网络加速器,结合处理器部分,搭建完整的神经网络推理的硬件系统;
步骤四、模型的训练;
在服务器端搭建神经网络模型,导入数据集进行训练,将训练好各层的模型参数包括权重、偏置、批归一化参数(β、γ、u、σ)导入SD卡中。
步骤五、神经网络推理的执行;
根据具体神经网络各层的规模配置加速器内部的寄存器,通过AXI总线将步骤四训练得到的模型参数传输给加速器,按照具体的网络结构分别调用加速器中不同的模块,完成整个网络的前向推理。
具体的,所述步骤一中的神经网络加速器集成了搭建卷积神经网络所需要的基本算子,尤其是用于搭建轻量化神经网络的深度可分离卷积算子,其中普通卷积部分,采用卷积分块策略,对卷积进行分块计算,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,然后,通过调整卷积块内的嵌套循环的循环顺序,将输出通道和输入通道的循环置于最内层并且对这两个维度进行并行卷积计算,使卷积块中的外部循环不断复用内部的并行计算核心,从而完成整个卷积块单元的计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算;深度可分离卷积部分包括深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度卷积部分的设计与普通卷积的实现过程基本一致,只是计算方式有所不同,深度卷积的一个卷积核只有一个通道,一个卷积核只负责卷积输入特征图的一个通道,产生的输出特征图通道数和输入通道数一样。所以深度可分离卷积只需要5个嵌套的for循环并且需要改变数据读取的顺序和卷积计算的顺序。逐点卷积的计算和普通卷积计算非常相似,只不过它的卷积核尺寸为1x1x D,D为上一层的通道数,逐点卷积会将深度卷积的输出特征图在深度方向上进行加权组合,生成新的特征图,所以逐点卷积部分的实现可以复用普通卷积部分。由于全连接运算是一种特殊的卷积运算,所以全连接部分的实现复用了普通卷积部分,进一步减少硬件资源的开销。池化部分的设计包括最大池化和平均池化,通过配置相应寄存器的值来选择。批归一化部分:每个卷积层的输出通道都有四个参数β、γ、u、σ,利用公式分别对每个通道输出特征图的每个像素点进行处理,具体公式如下:
Figure BDA0003585431900000071
式中:u为均值;σ为方差;γ为缩放系数、β为偏移系数;∈为超参数。
具体的,所述步骤二中的优化方法:缓存设置与优化:在FPGA中的片上BRAM存储器中设置输入缓存、权重缓存、输出缓存,缓存的大小根据分块参数大小来确定,输入缓存:IN[Tn][Tic][Tir]、权重缓存:W[Tm][Tn][Tkc][Tkr]、输出缓存:OUT[Tm][Toc][Tor]。由于输入输出端口数量的限制,使加速器的数据吞吐速率受缓存数据读取和写入速率的影响。为了保障加速器内数据处理的并行性,需要提高加速器读取数据的吞吐率,因此需要对输入缓存、权重缓存、输出缓存进行分割,使其分布在不同的BRAM区块,增加各缓存区输入输出端口的数量。将输入缓存划分为Tn个独立的缓存,权重缓存划分为Tm*Tn个独立的缓存,输出缓存划分为Tm个独立的缓存。数据流优化方法,采用双缓冲+乒乓操作方法进行任务级数据流的并行优化,即在FPGA的片上BRAM中设置两块同样大小的输入缓存、权重缓存、输出缓存,利用“乒乓”数据传输机制,将读取数据、卷积计算和写回结果同时进行,可以有效的将数据传输时间与计算时间重叠,从而掩盖数据传输的时间并改善RTL的吞吐量。流水化:将原来较大的计算过程划分为多个较小的步骤,每个步骤能够独立并行的处理不同的数据,是一种常用的通过面积换取速度的电路优化方式。其吞吐量鉴于串行处理和并行处理之间。
具体的,所述步骤三中处理器系统部分是基于ARM内核的Cortex-A9处理器,主要用于逻辑控制,根据具体的神经网络模型,配置神经网络加速器内部各个模块的寄存器,调整卷积、池化和全连接运算的规模,并将内存DDR的输入数据、权重和偏置,传入步骤二中神经网络加速器中,处理器的AXI_HP从接口与加速器的AXI_Master主接口相连,处理器的AXI_GP主接口与加速器的AXI_GP从接口相连,通过AXI4总线和AXI_Lite总线进行数据流和控制流的传输。根据具体模型的层级结构调用加速器中不同的模块,从而完成整个神经网络的推理,并将最终的结果返回到DDR中。
以下具体说明包括:
1.1处理器负责神经网络推理的逻辑控制,FPGA负责神经网络推理的计算加速;处理器与FPGA的连接和通信方式上,处理器的AXI_HP从接口与FPGA加速器的AXI_Master主接口相连,处理器的AXI_GP主接口与FPGA加速器的AXI_GP从接口相连;处理器和FPGA加速器通过AXI4总线进行数据的传输;处理器通过AXI_Lite总线完成对加速器内部寄存器的配置;
1.2FPGA为神经网络推理加速器,包括计算模块、数据处理模块以及AXI总线接口,提供神经网络的卷积计算与数据的处理;
1.3应用程序根据神经网络结构调用加速器中的模块完成神经网络推理工作,包括将模型的权重参数、偏置、批归一化参数从SD卡加载到DDR内存中;将神经网络的各层配置参数,如输入特征图的尺寸、卷积核的尺寸、步长等传递给加速器;
步骤2.1、神经网络加速器的设计;
在FPGA上设计神经网络推理加速器,包括计算模块、数据处理模块;其中:
计算模块包括:普通卷积模块、深度可分离卷积模块、全连接模块;
数据处理模块包括:池化模块、批归一化模块、激活函数模块;
2.1.1普通卷积模块的设计:由于卷积神经网络每层的规模不同以及受FPGA自身资源的限制,无法将每一层的特征图数据和权重加载到FPGA上,所以需要设计一个通用的固定规模大小的卷积加速模块,即对卷积进行分块计算,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算。
因此,首先采用卷积分块策略,通过分时复用卷积块单元来完成整个卷积的计算,分块变量分别为输出分块的通道数:Tm、宽:Toc、高:Tor,卷积核分块的宽:Tkc、高:Tkr,输入分块的通道数:Tn、宽:Tic、高:Tir,由卷积神经网络的原理可知,输入分块变量和输出分块变量满足如下关系:Tir=(Tor-1)*S+Tkr、Tic=(Toc-1)*S+Tkc,S为卷积核移动步长。分块变量通过卷积层的输出特征图尺寸和卷积核的大小来确定,并且受片上资源的制约。
卷积计算主要由输出特征图内、输出通道、输入通道、卷积核内四个维度上嵌套的循环结构组成,并且在每个维度都存在一定的并行性,通过调整卷积块内的嵌套循环的循环顺序,将输出通道和输入通道的循环置于最内层并且对这两个维度进行并行卷积计算,使卷积块中的外部循环不断复用内部的并行计算核心,从而完成整个卷积块单元的计算。其中,并行计算核心包含:Tm个卷积计算引擎PE,而每个PE由Tn个乘法器、一个深度为
Figure BDA0003585431900000091
的加法树和一个加法器组成,并行地进行Tn个输入特征图像素与Tm*Tn个卷积核权重的乘法运算,之后通过加法树将结果累加起来,最后再和以前保存的部分和相加。
2.1.2深度可分离卷积模块包括深度卷积模块和逐点卷积模块;
深度卷积模块的设计:由于计算方式与普通卷积有所不同,深度卷积的一个卷积核只有一个通道,一个卷积核只负责卷积输入特征图的一个通道,产生的输出特征图通道数和输入通道数一样。所以深度卷积只需要5个嵌套的for循环并且需要改变数据读取的顺序和卷积计算的顺序,其它实现过程与普通卷积基本一致。
逐点卷积模块的实现复用普通卷积模块,并设置卷积核尺寸为1x1xD,D为上一层卷积输出的通道数;
2.1.3由于全连接运算是一种特殊的卷积运算,全连接模块的实现复用普通卷积部分,从而减少硬件资源的开销,只需要通过AXI_Lite总线设置输入的规模为1x1xC,其中C为通道数。
2.1.4池化模块的设计:主要利用加法器、比较器、选择器、移位寄存器等资源搭建硬件电路,池化模块包括最大池化和平均池化,通过配置相应寄存器的值来选择。其中最大池化非常适合FPGA运算,仅为逻辑运算,输入数据通过比较器比较,输出一个最大值就好了,由于池化的尺寸不大,使用组合逻辑在一个时钟内完成池化操作;均值池化利用加法器将输入数据加和然后通过移位寄存器实现除法计算,从而求出平均值。由于各个通道之间的池化计算是独立的,在通道方向具有并行计算特性,可以利用多组相同的计算资源并行计算,从而加快池化计算过程。
2.1.5批归一化模块对普通卷积模块和深度可分离卷积模块的输出进行数据归一化处理,设卷积模块输出通道的四个参数分别为u、σ、γ、β,其中u为均值;σ为方差;γ为缩放系数、β为偏移系数;批归一化部分的输入数据为x,输出数据为:
Figure BDA0003585431900000101
其中∈为超参数;
批归一化模块的设计:将内存DDR当中对应的参数u、σ、γ、β读出,每个输出通道对应一组参数,根据上述公式,利用FPGA当中的硬件资源搭建具体运算电路模块,输入为卷积计算后输出的结果。
步骤2.2、神经网络加速器的优化:
对步骤2.1中的普通卷积、深度可分离卷积进行加速优化,其特征在于,采用缓存的设置与优化、流水化、数据流优化的方法来加快神经网络前向推理过程。2.2.1缓存的设置与优化,在FPGA中的片上BRAM存储器,分别设置输入缓存:IN[Tn][Tic][Tir]、权重缓存:W[Tm][Tn][Tkc][Tkr]、输出缓存:OUT[Tm][Toc][Tor],缓存的大小根据卷积分块变量大小来确定。由于在输入、输出通道进行并行计算,则卷积块内的输入特征图、权重、输出特征图的读写并行度分别为Tn、Tm*Tn、Tm,所以需要在一个周期内完成对缓存内多个数据同时读写,以满足并行计算的需求,但缓存在BRAM中是连续存放的,并且作为最多只有2个数据端口的BRAM来实现,所以很难在一个周期内完成对一个缓存内多个数据同时读写,为了提高数据吞吐率,使用缓存分割方法,对输入和输出缓存的通道维度进行分割,对权重缓存的输入和输出通道两个维度进行分割。使其分布在不同的BRAM区块,增加其输入输出端口的数量,可同时进行读写操作。将输入缓存划分为Tn个独立的缓存块,权重缓存划分为Tm*Tn个独立的缓存块,输出缓存划分为Tm个独立的缓存块;
2.2.2数据流优化,为了掩盖数据传输的时间,采用双缓冲+乒乓操作方法进行任务级数据流的并行优化,即在FPGA的片上BRAM中设置两块同样大小的输入缓存、权重缓存、输出缓存,利用“乒乓”数据传输机制,将读取数据、卷积计算和写回结果同时进行,可以有效的将数据传输时间与计算时间重叠,从而减少延迟并改善RTL的吞吐量,进一步提高加速器的性能。具体的乒乓缓存算法可通过if-else结构+乒乓标志来实现。
2.2.3流水化是将原来较大的计算过程划分为多个较小的步骤,每个步骤能够独立并行的处理不同的数据,是一种常用的通过面积换取速度的电路优化方式。其吞吐量鉴于之间串行处理和并行处理之间,可以使卷积计算过程中寄存器的读数据、计算和写数据流水进行,增大数据的吞吐率。
步骤2.3、神经网络的训练;
2.3.1在服务器端搭建神经网络模型,导入数据集进行训练;
2.3.2训练完成后得到神经网络各层的模型参数,包括卷积层的权重和偏置参数、批归一化参数,并将参数保存为二进制文件,放入SD卡中;
步骤2.4、神经网络推理的执行;
2.4.1所述应用程序在DDR内存中分配出一块物理地址连续的数组空间ARRAY_IMAGE,并读取输入图片进行预处理后放到该数组空间;
2.4.2所述应用程序在DDR内存中分配出一块物理地址连续的数组空间ARRAYi,读取神经网络卷积层参数、批归一化层参数到该数组空间;
2.4.3所述应用程序将整个加速器以二进制比特流文件的形式加载到FPGA;
2.4.4所述应用程序根据神经网络模型的结构,配置FPGA加速器内部各个模块的寄存器,并调整卷积、池化和全连接运算的规模;
2.4.5所述应用程序根据神经网络模型的结构,分别调用FPGA加速器中的普通卷积模块、深度可分离卷积模块、全连接模块、池化模块、批归一化模块、激活函数模块,并将内存DDR的输入数据、卷积层参数、批归一化层参数传入FPGA加速器中,进行加速计算;
2.4.6FPGA加速器完成神经网络的所有层级的推理计算后,将推理结果返回到内存DDR中,提供给应用程序访问。
下面再结合附图具体说明:
图1所示,本实施例中神经网络选用轻量化卷积神经网络MobileNetV2,网络结构具体描述如下:网络的输入图片尺寸是(224,224,3),主要结构基于深度可分离卷积,采用线性瓶颈的反向残差结构(block),网络的第一层使用普通卷积,接着使用16个线性瓶颈的反向残差结构来提取特征,最后利用平均池化和全连接进行分类,网络共有340万个参数。具体以1个线性瓶颈的反向残差结构来进行说明,其它类似。
本发明提出的基于异构平台的神经网络推理的加速方法,包括以下步骤。
步骤1)神经网络加速器的设计:在FPGA当中设计神经网络前向推理加速器,包括计算模块和数据处理模块来完成卷积计算与输出数据的处理。计算模块包括:普通卷积模块、深度可分离卷积模块、全连接模块,数据处理模块包括:池化模块、批归一化模块、激活函数模块,这些部分都是通用的。神经网络加速器集成了搭建神经网络所需要的基本算子,尤其是用于搭建轻量化卷积神经网络MobileNetV2的深度可分离卷积算子,其中普通卷积部分:首先,采用卷积分块策略,对卷积进行分块计算,然后,通过调整卷积块内的嵌套循环的循环顺序,将输出通道和输入通道的循环置于最内层并且对这两个维度进行并行卷积计算,使卷积块中的外部循环不断复用内部的并行计算核心,从而完成整个卷积块单元的计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算;图2为本实施例中的卷积分块计算的示意图,对卷积进行分块计算时,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,分块变量分别为输出分块的通道数:Tm、宽:Toc、高:Tor,卷积核分块的宽:Tkc、高:Tkr,输入分块的通道数:Tn、宽:Tic、高:Tir,由卷积神经网络的原理可知,输入分块变量和输出分块变量满足如下关系:Tir=(Tor-1)*S+Tkr、Tic=(Toc-1)*S+Tkc,S为卷积核移动步长。图3为本实施例中的并行卷积计算核心的硬件结构示意图,其中包含:Tm个卷积计算引擎PE,而每个PE由Tn个乘法器、一个深度为
Figure BDA0003585431900000131
的加法树和一个加法器组成,并行地进行Tn个输入特征图像素与Tm*Tn个卷积核权重的乘法运算,之后通过加法树将结果累加起来,最后再和以前保存的部分和相加。
深度可分离卷积部分包括深度卷积(Depthwise Convolution)和逐点卷积(Pointwise Convolution)。深度卷积部分的设计与普通卷积的实现过程基本一致,只是计算方式有所不同,深度卷积的一个卷积核只有一个通道,一个卷积核只负责卷积输入特征图的一个通道,产生的输出特征图通道数和输入通道数一样。所以深度可分离卷积只需要5个嵌套的for循环并且需要改变数据读取的顺序和卷积计算的顺序。逐点卷积的计算和普通卷积计算非常相似,只不过它的卷积核尺寸为1x1x D,D为上一层的通道数,逐点卷积会将深度卷积的输出特征图在深度方向上进行加权组合,生成新的特征图,所以逐点卷积部分的实现可以复用普通卷积部分。全连接部分:由于全连接运算是一种特殊的卷积运算,所以全连接部分的实现复用了普通卷积部分,进一步减少硬件资源的开销。池化部分的设计包括最大池化和平均池化,通过配置相应寄存器的值来选择。批归一化部分:每个卷积层的输出通道都有四个参数β、γ、u、σ,利用公式分别对每个通道输入特征图的每个像素点进行处理,具体公式如下:
Figure BDA0003585431900000132
式中:u为均值;σ为方差;γ为缩放系数、β为偏移系数;∈为超参数。
步骤2)神经网络加速器的优化,图4为本实施例中缓存的设置与优化图,在FPGA中的片上BRAM存储器中设置输入缓存、权重缓存、输出缓存,缓存的大小根据分块参数大小来确定,输入缓存:IN[Tn][Tic][Tir]、权重缓存:W[Tm][Tn][Tkc][Tkr]、输出缓存:OUT[Tm][Toc][Tor]。由于输入输出端口数量的限制,使加速器的数据吞吐速率受缓存数据读取和写入速率的影响。为了保障加速器内数据处理的并行性,需要提高加速器读取数据的吞吐率,因此需要对输入缓存、权重缓存、输出缓存进行分割,使其分布在不同的BRAM区块,增加各缓存区输入输出端口的数量。将输入缓存划分为Tn个独立的缓存,权重缓存划分为Tm*Tn个独立的缓存,输出缓存划分为Tm个独立的缓存。
图5为本实施例中的数据流优化图,在没有采用数据流优化时读取数据、卷积计算、输出数据处理是串行进行的,假设读数据需要3个周期,卷积计算需要2个周期,输出数据处理需要3个周期,那么一共需要8个周期,采用数据流优化方法将读取数据、卷积计算和输出数据处理同时进行,一共需要5个周期,进一步提高加速器的吞吐率。图6为实施例中的流水化图,在没有采用流水化时每次从寄存器当中读数据、运算、写回需要3个周期,3次一共需要9个周期,采用流水化的方法,使读数据、运算和写回流水进行,3次一共需要4个周期,增大数据的吞吐率。
步骤3)异构平台的搭建:利用所述步骤二设计的神经网络加速器,结合处理器部分,搭建完整的神经网络推理的硬件系统。处理器系统部分是基于ARM内核的Cortex-A9处理器,主要用于逻辑控制,处理器的AXI_HP从接口与加速器的AXI_Master主接口相连,处理器的AXI_GP主接口与加速器的AXI_GP从接口相连,通过AXI4总线和AXI_Lite总线进行数据流和控制流的传输。
图7为本实施例中在SoC上搭建基于异构平台的神经网络前向推理系统的硬件架构图,架构细节描述如下:本实施例中在FPGA中设计了顶层加速器模块,包含计算子模块和数据处理子模块,其中计算子模块包括:通用的普通卷积模块、深度可分离卷积模块、全连接部分复用普通卷积模块,数据处理模块包括:池化模块、批归一化模块、激活函数模块。然后将加速器集成到SoC异构系统中,加速器的AXI_Master主接口连接ARM处理器AXI_HP的从接口,加速器的AXI_GP的从接口连接ARM处理器AXI_GP的主接口,加速器和ARM处理器通过AXI4总线进行数据的传输,ARM处理器通过AXI_Lite总线完成对加速器内部寄存器的配置,形成完整的卷积神经网络推断系统硬件架构。为了减少数据传输所花费的开销,加快运算速度,在FPGA中的BRAM设置了输入缓存、权重缓存、输出缓存,并将缓存进行分割,使其分布在不同的BRAM区块,增加其输入输出端口的数量,可同时进行读写操作,提高数据吞吐率。应用程序主要完成神经网络前向推理前的准备工作,系统的初始化以及根据具体的网络结构对加速器中的模块进行调用来完成推理工作,具体包括:将模型的权重参数、偏置、批归一化参数从SD卡加载到DDR内存中,将神经网络的各层配置参数如输入特征图的尺寸、卷积核的尺寸、步长等传给加速器中具体模块。
步骤4)模型的训练:在服务器端基于tensorflow 2.0深度学习框架,搭建MobileNetV2神经网络图片分类模型,采用ImageNet图像数据集进行训练,将训练好各层的模型参数包括权重、偏置、批归一化参数(β、γ、u、σ)导入SD卡中。
步骤5)神经网络推理的执行:根据MobileNetV2神经网络各层的配置参数如输入特征图的尺寸、卷积核的尺寸、步长、池化类型等,通过AXI_Lite总线配置神经网络加速器内部各个模块的寄存器,调整卷积、池化和全连接运算的规模,并将内存DDR的输入数据、权重、偏置和批归一化参数通过AXI4总线传入步骤二中神经网络加速器中,根据MobileNetV2的层级结构调用加速器中不同的模块,从而完成整个神经网络的推理,并将最终的结果返回到DDR中。
MobileNetV2网络的输入图片尺寸是(224,224,3),经过边缘填充后变为(225,225,3),作为第1层普通卷积的输入,第1层卷积运算由32个kernel(卷积核)组成,其中每个kernel的大小是(3,3,3),卷积运算的stride(步长)为2,通过AXI_Lite总线配置神经网络加速器内部普通卷积部分的寄存器,然后传入权重参数和输入数据,调用加速器当中的普通卷积部分,通过卷积分块、并行卷积计算、缓存的设置与优化、数据流优化、流水化的方法,提高卷积运算的并行度和吞吐率,得到大小为(112,112,32)的特征图。然后经过数据处理模块中的批归一化部分和激活函数部分的数据处理后,特征图的尺寸不发生变化,例如第1层批归一化,共有32个通道,每个通道都有四个参数β、γ、u、σ,利用公式1分别对每个通道输入特征图的每个像素点进行运算,将结果传给激活函数部分,其中激活函数部分采用ReLu6,即当批归一化输出的值小于0时,输出为0,大于0且小于6时,原样输出,大于6时输出为6;第一层深度卷积部分输入为(112,112,32),卷积核为(3,3)共32个,一个卷积核只负责卷积输入特征图的一个通道,所以输出特征图也是32个通道,经过批归一化层和RuLe6层的数据处理后,特征图的尺寸不发生变化,输入到第一层点卷积,第一层点卷积的计算和普通卷积计算非常相似,只不过它的卷积核尺寸为(1,1,32,16),32为上一层的输出通道数,点卷积会将深度卷积的输出特征图在深度方向上进行加权组合,生成大小为(112,112,16)的特征图,点卷积部分的实现复用普通卷积部分。池化部分的设计包括最大池化和平均池化,根据网络要求,配置pooling寄存器的值为1,即选择最大池化;全连接部分输入是1280,输出为1000个类别的概率,复用普通卷积部分来实现。最终,将分类结果返回到DDR中。
上述实施例已经充分说明了本发明的必要技术内容,普通技术人员能够依据说明加以实施,故不再赘述其他技术细节。
综上可知,本实施例首先在FPGA中设计通用的神经网络前向推理加速器,包括普通卷积模块、深度可分离卷积模块、全连接模块、池化模块、批归一化模块、激活函数模块,并且采用卷积分块、并行卷积计算、缓存的设置与优化、数据流优化、流水化的方法来加快神经网络前向推理过程。然后,将神经网络加速器结合处理器部分,搭建完整的神经网络推理的硬件系统。最后,在服务器上训练神经网络具体模型,根据神经网络各层的规模配置加速器内部的寄存器,将训练得到的模型参数传输给加速器,按照网络结构分别调用加速器中不同的模块,实现了整个网络的前向推理。
又一方面,本发明还公开一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如上述任一方法的步骤。
再一方面,本发明还公开一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上述任一方法的步骤。
在本申请提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一方法的步骤。
可理解的是,本发明实施例提供的系统与本发明实施例提供的方法相对应,相关内容的解释、举例和有益效果可以参考上述方法中的相应部分。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (8)

1.一种基于异构平台的神经网络推理加速方法,基于异构平台,所述异构平台包括处理器和FPGA的片上系统,其特征在于,包括以下步骤:
在FPGA中设计神经网络加速器,神经网络加速器包括计算模块和数据处理模块来完成神经网络卷积计算与输出数据的处理;然后采用缓存的设置与优化、流水化、数据流优化的方法来加快神经网络前向推理过程;
其中,所述计算模块包括普通卷积模块、深度可分离卷积模块、全连接模块;所述数据处理模块包括池化模块、批归一化模块、激活函数模块;
所述普通卷积模块对卷积进行分块计算,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算;
深度可分离卷积模块包括深度卷积模块和逐点卷积模块;深度卷积的一个卷积核只有一个通道,一个卷积核只负责卷积输入特征图的一个通道,产生的输出特征图通道数和输入通道数一样;逐点卷积模块的卷积核尺寸为1x1xD,D为上一层卷积输出的通道数;
全连接模块复用普通卷积部分,通过AXI_Lite总线设置输入的规模为1x1xC,其中C为通道数;
池化模块包括最大池化和平均池化,通过配置相应寄存器的值来选择;最大池化仅为逻辑运算,输入数据通过比较器比较,输出一个最大值就好了;平均池化利用加法器将输入数据加和然后通过移位寄存器实现除法计算,从而求出平均值;
批归一化模块对普通卷积模块和深度可分离卷积模块的输出进行数据归一化处理。
2.根据权利要求1所述的基于异构平台的神经网络推理加速方法,其特征在于:所述采用缓存的设置与优化、流水化、数据流优化的方法来加快神经网络前向推理过程,具体包括:
缓存的设置与优化,在FPGA中的片上BRAM存储器,分别设置输入缓存:IN[Tn][Tic][Tir]、权重缓存:W[Tm][Tn][Tkc][Tkr]、输出缓存:OUT[Tm][Toc][Tor],缓存的大小根据卷积分块变量大小来确定;使用缓存分割方法,对输入和输出缓存的通道维度进行分割,对权重缓存的输入和输出通道两个维度进行分割,使其分布在不同的BRAM区块,增加其输入输出端口的数量,可同时进行读写操作;将输入缓存划分为Tn个独立的缓存块,权重缓存划分为Tm*Tn个独立的缓存块,输出缓存划分为Tm个独立的缓存块;
数据流优化,为采用双缓冲+乒乓操作方法进行任务级数据流的并行优化,即在FPGA的片上BRAM中设置两块同样大小的输入缓存、权重缓存、输出缓存,利用“乒乓”数据传输机制,将读取数据、卷积计算和写回结果同时进行。
3.根据权利要求1所述的基于异构平台的神经网络推理加速方法,其特征在于:还包括神经网络的训练,具体为在服务器端搭建神经网络模型,导入数据集进行训练,训练完成后得到神经网络各层的模型参数,包括卷积层的权重和偏置参数、批归一化参数,并将参数保存为二进制文件,放入SD卡中。
4.根据权利要求1所述的基于异构平台的神经网络推理加速方法,其特征在于:所述神经网络前向推理过程包括:
应用程序在DDR内存中分配出一块物理地址连续的数组空间ARRAY_IMAGE,并读取输入图片进行预处理后放到该数组空间;
应用程序在DDR内存中分配出一块物理地址连续的数组空间ARRAYi,读取神经网络卷积层参数、批归一化层参数到该数组空间;
应用程序将整个加速器以二进制比特流文件的形式加载到FPGA;
应用程序根据神经网络模型的结构,配置FPGA加速器内部各个模块的寄存器,并调整卷积、池化和全连接运算的规模;
应用程序根据神经网络模型的结构,分别调用FPGA加速器中的普通卷积模块、深度可分离卷积模块、全连接模块、池化模块、批归一化模块、激活函数模块,并将内存DDR的输入数据、卷积层参数、批归一化层参数传入FPGA加速器中,进行加速计算;
FPGA加速器完成神经网络的所有层级的推理计算后,将推理结果返回到内存DDR中,提供给应用程序访问。
5.根据权利要求1所述的基于异构平台的神经网络推理加速方法,其特征在于:所述普通卷积模块对卷积进行分块计算,每次只进行固定块大小的输入和卷积核权重之间的卷积计算,再通过滑动窗口的方式依次完成所有输出特征图上像素点的计算,具体包括:
首先采用卷积分块策略,通过分时复用卷积块单元来完成整个卷积的计算,分块变量分别为输出分块的通道数:Tm、宽:Toc、高:Tor,卷积核分块的宽:Tkc、高:Tkr,输入分块的通道数:Tn、宽:Tic、高:Tir,输入分块变量和输出分块变量满足如下关系:Tir=(Tor-1)*S+Tkr、Tic=(Toc-1)*S+Tkc,S为卷积核移动步长;
分块变量通过卷积层的输出特征图尺寸和卷积核的大小来确定,并且受片上资源的制约;
卷积计算由输出特征图内、输出通道、输入通道、卷积核内四个维度上嵌套的循环结构组成,并且在每个维度都存在并行性,通过调整卷积块内的嵌套循环的循环顺序,将输出通道和输入通道的循环置于最内层并且对这两个维度进行并行卷积计算,使卷积块中的外部循环不断复用内部的并行计算核心,完成整个卷积块单元的计算。
6.根据权利要求5所述的基于异构平台的神经网络推理加速方法,其特征在于:
并行计算包含:Tm个卷积计算引擎PE,而每个PE由Tn个乘法器、一个深度为
Figure FDA0003585431890000031
的加法树和一个加法器组成,并行地进行Tn个输入特征图像素与Tm*Tn个卷积核权重的乘法运算,之后通过加法树将结果累加起来,最后再和以前保存的部分和相加。
7.根据权利要求1所述的基于异构平台的神经网络推理加速方法,其特征在于:归一化模块的设计包括:
设卷积模块输出通道的四个参数分别为u、σ、γ、β,其中u为均值;σ为方差;γ为缩放系数、β为偏移系数;批归一化部分的输入数据为x,输出数据为:
Figure FDA0003585431890000032
其中∈为超参数;
批归一化模块的设计为将内存DDR当中对应的参数u、σ、γ、β读出,每个输出通道对应一组参数,根据上述公式,利用FPGA当中的硬件资源搭建具体运算电路模块,输入为卷积计算后输出的结果。
8.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至7中任一项所述方法的步骤。
CN202210361419.4A 2022-04-07 2022-04-07 一种基于异构平台的神经网络推理加速方法 Pending CN114742225A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210361419.4A CN114742225A (zh) 2022-04-07 2022-04-07 一种基于异构平台的神经网络推理加速方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210361419.4A CN114742225A (zh) 2022-04-07 2022-04-07 一种基于异构平台的神经网络推理加速方法

Publications (1)

Publication Number Publication Date
CN114742225A true CN114742225A (zh) 2022-07-12

Family

ID=82278260

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210361419.4A Pending CN114742225A (zh) 2022-04-07 2022-04-07 一种基于异构平台的神经网络推理加速方法

Country Status (1)

Country Link
CN (1) CN114742225A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982530A (zh) * 2023-03-13 2023-04-18 苏州浪潮智能科技有限公司 加速器运算控制方法、系统、存储介质、装置及设备
CN116128046A (zh) * 2023-04-14 2023-05-16 杭州国芯科技股份有限公司 嵌入式设备的多输入神经网络模型串行块的存储方法
CN116451757A (zh) * 2023-06-19 2023-07-18 山东浪潮科学研究院有限公司 一种神经网络模型的异构加速方法、装置、设备及介质
CN116737382A (zh) * 2023-06-20 2023-09-12 中国人民解放军国防科技大学 一种基于面积折叠的神经网络推理加速方法
CN116842994A (zh) * 2023-07-03 2023-10-03 上海交通大学 多神经网络执行效率动态优化方法及系统
CN116991564A (zh) * 2023-09-28 2023-11-03 之江实验室 面向异构双核mcu的算子内并行加速方法
CN117763399A (zh) * 2024-02-21 2024-03-26 电子科技大学 一种自适应变长信号输入的神经网络分类方法

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115982530A (zh) * 2023-03-13 2023-04-18 苏州浪潮智能科技有限公司 加速器运算控制方法、系统、存储介质、装置及设备
CN116128046A (zh) * 2023-04-14 2023-05-16 杭州国芯科技股份有限公司 嵌入式设备的多输入神经网络模型串行块的存储方法
CN116451757A (zh) * 2023-06-19 2023-07-18 山东浪潮科学研究院有限公司 一种神经网络模型的异构加速方法、装置、设备及介质
CN116451757B (zh) * 2023-06-19 2023-09-08 山东浪潮科学研究院有限公司 一种神经网络模型的异构加速方法、装置、设备及介质
CN116737382A (zh) * 2023-06-20 2023-09-12 中国人民解放军国防科技大学 一种基于面积折叠的神经网络推理加速方法
CN116737382B (zh) * 2023-06-20 2024-01-02 中国人民解放军国防科技大学 一种基于面积折叠的神经网络推理加速方法
CN116842994A (zh) * 2023-07-03 2023-10-03 上海交通大学 多神经网络执行效率动态优化方法及系统
CN116842994B (zh) * 2023-07-03 2024-03-01 上海交通大学 多神经网络执行效率动态优化方法及系统
CN116991564A (zh) * 2023-09-28 2023-11-03 之江实验室 面向异构双核mcu的算子内并行加速方法
CN116991564B (zh) * 2023-09-28 2024-01-09 之江实验室 面向异构双核mcu的算子内并行加速方法
CN117763399A (zh) * 2024-02-21 2024-03-26 电子科技大学 一种自适应变长信号输入的神经网络分类方法
CN117763399B (zh) * 2024-02-21 2024-05-14 电子科技大学 一种自适应变长信号输入的神经网络分类方法

Similar Documents

Publication Publication Date Title
CN114742225A (zh) 一种基于异构平台的神经网络推理加速方法
CN110321999B (zh) 神经网络计算图优化方法
CN111242289B (zh) 一种规模可扩展的卷积神经网络加速系统与方法
CN112840356B (zh) 运算加速器、处理方法及相关设备
CN111898733B (zh) 一种深度可分离卷积神经网络加速器架构
CN111967468A (zh) 一种基于fpga的轻量级目标检测神经网络的实现方法
CN111414994B (zh) 一种基于FPGA的Yolov3网络计算加速系统及其加速方法
CN107239824A (zh) 用于实现稀疏卷积神经网络加速器的装置和方法
CN108665063B (zh) 用于bnn硬件加速器的双向并行处理卷积加速系统
CN110321997B (zh) 高并行度计算平台、系统及计算实现方法
CN112215332B (zh) 神经网络结构的搜索方法、图像处理方法和装置
CN111783937A (zh) 一种神经网络构建方法以及系统
CN113361695B (zh) 卷积神经网络加速器
CN111582465B (zh) 基于fpga的卷积神经网络加速处理系统、方法以及终端
CN113344179B (zh) 基于fpga的二值化卷积神经网络算法的ip核
CN117751366A (zh) 神经网络加速器及神经网络加速器的数据处理方法
CN117501245A (zh) 神经网络模型训练方法和装置、数据处理方法和装置
CN112884137A (zh) 神经网络的硬件实现方式
CN113792621B (zh) 一种基于fpga的目标检测加速器设计方法
CN113743587B (zh) 一种卷积神经网络池化计算方法、系统、及存储介质
CN109740619B (zh) 用于目标识别的神经网络终端运行方法和装置
CN114003201A (zh) 矩阵变换方法、装置及卷积神经网络加速器
CN114519425A (zh) 一种规模可扩展的卷积神经网络加速系统
CN114358237A (zh) 多核硬件中神经网络的实现方式
US11481604B2 (en) Apparatus and method for neural network processing

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