CN115186796A - 基于fpga的卷积神经网络自动部署方法 - Google Patents
基于fpga的卷积神经网络自动部署方法 Download PDFInfo
- Publication number
- CN115186796A CN115186796A CN202210625684.9A CN202210625684A CN115186796A CN 115186796 A CN115186796 A CN 115186796A CN 202210625684 A CN202210625684 A CN 202210625684A CN 115186796 A CN115186796 A CN 115186796A
- Authority
- CN
- China
- Prior art keywords
- neural network
- instruction
- hardware
- network
- convolutional neural
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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
-
- 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)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于FPGA的卷积神经网络自动部署方法及设备,通过构造自动化的神经网络编译设备,对各种输入的卷积神经网络模型,进行通用性的、面向硬件的优化处理,减少网络复杂度;并利用编译后得到的自定义硬件指令对基于FPGA的、包含了系列通用加速模块的神经网络硬件加速设备进行配置,控制其运算,实现了不同卷积神经网络模型在通用硬件加速设备上的自动、高效部署。
Description
技术领域
本发明涉及图像处理技术领域,具体涉及一种基于FPGA的卷积神经网络自动部署方法。
背景技术
近年来,基于卷积神经网络的人工智能算法在图像处理领域取得了广泛的应用。卷积神经网络具有网络参数量大,计算密集的特点,因此目前多数卷积神经网络算法利用CPU,GPU等高性能设备完成训练和推理。尽管CPU、GPU能够在卷积神经网络部署时实现较高的性能,但巨大的功耗限制了它们在一些功耗严格受限场景中的应用。嵌入式硬件设备具有低功耗,高能效的特点,被越来越多地应用于功耗敏感场景的网络算法部署,其中,基于FPGA的网络部署是最为广泛的解决方案。但在星上遥感处理等应用场景中,硬件计算资源受到严格限制,应用的内容也繁杂多变,这就要求硬件加速器能够灵活处理不同的应用。而一方面,现有的FPGA神经网络硬件加速器往往只针对特定模型加速,加速器的灵活性较差,无法处理不同的网络;另一方面,现有的主流网络部署方法还是人工编写部署代码,不仅过程繁琐,而且费时费力。这些问题使得在FPGA上灵活部署多种类型的深度神经网络存在较大的困难。
发明内容
有鉴于此,本发明提供了一种基于FPGA的卷积神经网络自动部署方法,能够实现不同卷积神经网络在FPGA上的实时、自动部署。
本公开提供的基于FPGA的卷积神经网络自动部署方法,包括如下步骤:
构建面向硬件的通用性卷积神经网络优化方法;
基于所述优化方法,构建基于FPGA的、可配置、通用化硬件加速设备;
构建用于对所述硬件加速设备进行配置的自定义硬件指令集;
构建神经网络编译设备,按照所述优化方法对各种卷积神经网络模型进行优化,并将优化后得到的数据结构转化为所述自定义硬件指令;
根据所述硬件指令对所述通用化网络硬件加速设备进行配置,实现特定卷积神经网络在通用硬件加速设备上的自动部署。
进一步地,所述卷积神经网络优化方法,包括:网络量化方法、操作统一方法、以及动态切分方法中的一种或多种,其中:
所述网络量化方法中,卷积的权重量化位数和卷积的特征图量化位数均设置为8;
所述操作统一方法,将对网络的全连接操作和卷积操作统一为卷积操作,将LeakyReLU操作和ReLU操作统一为LeakyReLU操作;
所述动态切分方法,基于神经网络每一层的维度信息,通过分析确定每一层的特征图是否需要切分。
进一步地,所述动态切分方法包括以下步骤:
分析神经网络中每一层的特征图存储需求,得出大部分层可以完整存储特征图的存储阈值;
基于所述存储阈值,分析每一层的存储需求是否超出存储阈值;
对于没有超出阈值的层,其特征图无需拆分;
对于超出阈值的层,按照存储阈值和存储需求的比例确定特征图被拆分的块。
进一步地,所述操作统一方法中,全连接操作和卷积操作的统一通过将全连接操作替换为卷积操作实现,具体包括以下步骤:
确定自定义的权重尺寸;
将全连接操作的一维输入向量重构为三维输入张量,保证输入张量的尺寸等于自定义的权重尺寸;
将全连接操作的二位权重矩阵重构为四维权重张量,保证权重张量的尺寸等于自定义的权重尺寸;
输入张量和权重张量进行卷积,得到与原全连接结果完全一致的卷积结果。
进一步地,所述硬件加速设备包含针对神经网络中各种通用运算层的加速模块,以及对应的配置系统。
进一步地,所述自定义硬件指令集中的指令包括:
配置指令,用于向所述硬件加速设备传送配置信息;
数据搬移指令,用于控制硬件加速设备的处理引擎与片外存储的交互;
握手指令,用于标志配置阶段,数据传输阶段和计算阶段的开始和结束;
所述指令包含32位二进制码,前8位作为指令的标识头,其中,数据搬移指令为多级指令。
进一步地,所述神经网络编译设备包括前端解析模块,功能通道,内存分配模块和指令生成模块,其中:
前端解析模块,将输入的神经网络模型转化为固定格式的数据结构;
内存分配模块为网络中的数据分配内存地址;
功能通道,用于按照所述优化方法对所述数据结构进行优化,并使优化后得到的数据结构与所述硬件加速设备的架构相对应;
指令生成模块实现编译结果到所述硬件指令集的映射。
本公开提供的一种神经网络动态切分方法,包括以下步骤:
分析神经网络中每一层的特征图存储需求,得出大部分层可以完整存储特征图的存储阈值;
基于所述存储阈值,分析每一层的存储需求是否超出存储阈值;
对于没有超出阈值的层,其特征图无需拆分;
对于超出阈值的层,按照存储阈值和存储需求的比例确定特征图被拆分的块。
本公开还提供了一种基于FPGA的卷积神经网络自动部署设备,包括:
基于FPGA的、可配置、通用化硬件加速设备,包含针对神经网络中各种通用运算层的加速模块,以及对应的配置系统;
神经网络编译设备,用于对各种特定卷积神经网络模型进行面向硬件的优化处理,并将优化后得到的数据结构转化为自定义硬件指令,所述指令用于对所述硬件加速设备进行配置,实现不同网络模型在所述硬件加速设备上的自动部署。
进一步地,所述自定义硬件指令包括:
配置指令,用于向所述硬件加速设备传送配置信息;
数据搬移指令,用于控制硬件加速设备的处理引擎与片外存储的交互;
握手指令,用于标志配置阶段,数据传输阶段和计算阶段的开始和结束;
所述指令包含32位二进制码,前8位作为指令的标识头,其中,数据搬移指令为多级指令。
进一步地,所述神经网络编译设备包括前端解析模块,功能通道,内存分配模块和指令生成模块,其中:
前端解析模块,将输入的神经网络模型转化为固定格式的数据结构;
内存分配模块为网络中的数据分配内存地址;
功能通道对所述数据结构进行所述面向硬件的优化处理,并使优化后得到的数据结构与所述硬件加速设备的架构相对应;
指令生成模块实现编译结果到所述硬件指令集的映射。
本公开提供的基于FPGA的卷积神经网络自动部署方法,通过构造自动化的神经网络编译设备,对各种输入的卷积神经网络模型,进行面向硬件的、通用的优化处理,减少网络复杂度;并利用编译后得到的自定义硬件指令对基于FPGA的、包含了系列通用加速模块的神经网络硬件加速设备进行配置,控制其运算,实现了不同卷积神经网络模型在通用硬件加速设备上的自动、实时部署。
有益效果:①区别于传统的专门针对单个网络进行硬件实现的方法,提供了包括网络优化方法,中间编译器,FPGA硬件加速器的一体化网络部署解决方案,实现了各种特定网络模型的自动化部署;②通过设计网络优化方法,降低网络复杂度,为网络部署提供前提条件;③通过设计可配置硬件加速器,为网络部署提供了高灵活度,高效能的部署平台;④提供了由模型到指令的完整编译流程的神经网络编译器,自动化网络部署流程,有效避免了传统FPGA实现方法中人工部署过程复杂,编码过程费时费力,难以部署不同网络的问题。
附图说明
图1为根据本公开的基于FPGA的卷积神经网络自动部署方法流程图;
图2为示例性实施例中将全连接操作替换为卷积操作的过程示意图;
图3为示例性实施例中卷积神经网络硬件加速器示结构示意图;
图4为示例性实施例中自定义硬件指令集示例图;
图5为示例性实施例中的神经网络编译器整体框架图;
图6为示例性实施例中应用于神经网络编译器内部的“计算图”数据结构示例图;
图7为示例性实施例中编译器内部功能通道处理流程图;
图8为示例性实施例中指令生成器接口函数处理过程示意图。。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种基于FPGA的卷积神经网络自动部署方法,应用于深度卷积神经网络。随着深度学习的发展,产生了大量不同类型的深度卷积神经网络。本发明所提供的自动部署方法,可以部署包含卷积,批归一化(BN),LeakyReLU激活,ReLU激活,最大池化,全局最大池化,全局平局池化,全连接的各种神经网络,包括但不限于VGG系列网络、YOLOv2,等等。
示例性的基于FPGA的卷积神经网络自动部署方法流程图如图1所示,包括以下步骤:
步骤S1、针对参数量庞大,计算密集的卷积神经网络,设计面向硬件的、通用性的优化方法,减少网络的复杂度。优化方法包括网络量化方法,操作统一方法,动态切分方法中的任一种或多种。其中:
网络量化方法,采用一种对称区间混合量化方法,对网络中卷积运算的参数和特征图进行量化,将32位的浮点数数据量化为定点数数据,减少网络数据量,方便网络的部署;同时在BN运算和激活运算之前执行反量化,保持这两种运算的浮点性质,减少网络的精度损失。考虑任意N比特位的量化,对称区间量化算法如下式所示:
其中,q代表量化后的定点数矩阵,r代表量化前的浮点数矩阵,clamp函数用来限制量化结果的范围到[(-2N-1+1),(2N-1-1)]的区间内,防止数据溢出。量化缩放因子S用来决定浮点数到定点数的映射关系,其由下式定义:
相对地,反量化算法用来将定点数矩阵还原回浮点矩阵,浮点矩阵r可3下式得到:
r=SfSw×q (1)
其中,Sf表示前一个量化卷积中特征图的缩放因子,Sw表示前一个量化卷积中权重的缩放因子。在本实施例中,优选将卷积的权重量化位数和卷积的特征图量化位数均设置为8。32位浮点数数据量化完后,得到8位定点数数据。
操作统一方法,将全连接操作和卷积操作统一为卷积操作,将LeakyReLU操作和ReLU操作统一为LeakyReLU操作,减少硬件实现的资源消耗。对全连接和卷积的操作统一,本实施例通过将全连接操作替换为卷积操作来实现,全连接操作替换为卷积操作的过程示意图如图2所示:全连接本质上是输入向量和权重矩阵的内积过程,而卷积是三维特征图和四维权重的乘加过程,因此将低维数据重构为高维张量,即可将全连接替换为卷积。若自定义卷积核尺寸为Nkh×Nkw,则全连接的长为Nif的输入向量被重构为Nnew_if×Nkh×Nkw的三维张量,而Nif×Nof大小的权重矩阵被重构为Nnew_if×Nkh×Nkw×Nof的四维张量。这样,卷积操作后得到的结果就和原始全连接的结果完全相同。
对LeakyReLU操作和ReLU操作的统一,分析两种操作的性质可得出,相比于ReLU操作,LeakyReLU操作只是在负半轴增加了一个斜率系数α,因此只要设置α=0,LeakyReLU计算就变换为ReLU计算。因此,本发明实施例用LeakyReLU操作统一实现ReLU和LeakyReLU。
动态切分方法,是基于神经网络每一层的维度信息,通过分析确定每一层的特征图是否需要切分。在神经网络中,各层特征图的大小不一,需要的存储空间并不一致。然而硬件加速器片上缓存需要根据最大特征图的小大设置,一方面导致片上存储开销过大,一方面导致在大部分计算时间内,片上缓存存在空闲,效率较低。示例性实施例中优选的动态切分方法包括以下步骤:
分析神经网络中每一层的特征图存储需求,得出大部分层可以完整存储特征图的存储阈值;
基于存储阈值,分析每一层的存储需求是否超出存储阈值;
对于没有超出阈值的层,其特征图无需拆分;对于超出阈值的层,按照存储阈值和存储需求的比例确定特征图被拆分的块。
应用动态切分方法后,片上缓存的存储开销大大减少,其空闲状态也得到了改善。
步骤S2、基于步骤一中的优化方法,面向卷积神经网络的计算特点和加速需求,构建可配置、基于FPGA的、通用化网络硬件加速器。硬件加速器包含了针对各类神经网络中常用运算层的加速模块,同时包含完整的配置系统,可以支撑多种神经网络加速。
作为优选,本实施例中提供的硬件加速器的结构示意图如图3所示,提供了一系列针对各种神经网络中通用运算层、且符合步骤一中优化方法需求的加速模块,包括卷积模块,BN模块,LeakyReLU模块,最大池化模块,全局池化模块。另外,硬件加速器还包含了完整的配置系统,分别为数据控制模块,有限状态机模块,路由模块,对应了卷积类型配置,卷积尺寸配置,模块调度配置。在配置系统的控制下,本公开提供的硬件加速器具有高度的通用性和灵活性,可以加速不同结构的神经网络。
步骤S3、设计自定义的硬件指令集,用于对步骤二中得到的硬件加速器进行配置。
基于步骤二中设计的硬件加速器的配置系统,本实施例设计了自定义硬件指令集。优选的硬件指令集的示例如图4所示,其中,指令集中的指令是一批长度为32位的二进制码,指令的前8位用来作为指令的标识头。指令按照功能可以分为三类,分别是配置指令,数据搬移指令和握手指令。配置指令用于传递硬件加速器配置系统所需的信息,包括运算种类,卷积尺寸,卷积类型等等。不同信息所携带的数据量不同,所以一条32位指令可以由多条信息组成。例如,3号配置指令的0到9位对应输出通道数,10到19位对应输入通道数,20到23位对应卷积核尺寸大小。数据搬移指令负责控制硬件加速器的处理引擎与片外存储的交互。包括从特定地址读数据和写数据到特定地址。需要注意的是,内存地址和读写数据量往往是较大的数,需求的比特位较长,因此数据搬移指令被设计为多级指令,即多条32位指令来完成一次读操作或写操作。握手指令不包含具体信息,它主要负责标志配置阶段,数据传输阶段和计算阶段的开始和结束。
步骤S4、构造神经网络编译器,实现步骤一中所提出的优化方法,并实现网络模型到自定义硬件指令和网络参数的自动转化。模型转化得到的指令和参数可以直接传输给硬件加速器,加速器上的配置系统对指令进行解码,根据指令信息控制硬件加速器的运算,从而实现卷积神经网络在硬件加速器上的自动部署。
具体地,基于步骤一中所提出的优化方法,面向步骤二中设计的硬件加速器结构,为了输出步骤三中设计的硬件指令,示例性实施例提供的自动化神经网络编译器整体框图如图5所示,编译器是一个基于C++语言编写的全栈软件,主要由前端解析器,功能通道,内存分配器和指令生成器组成。编译器的输入是Pytorch框架下定义的各种不同的神经网络模型。前端解析器将输入模型转化为固定格式的数据结构,功能通道用来完成特定的编译功能,内存分配器用来为网络中的数据分配内存地址。指令生成器实现编译结果到硬件指令集的映射。
其中,前端解析器在运算符定义库的帮助下,将输入模型转化为名为“计算图”的数据结构。一个示例的计算图如图6所示,计算图由运算节点和数据张量组成。运算节点表示了卷积神经网络中各种不同的运算,并存储了运算属性。数据张量分为运行时张量和参数张量,运行时张量表示网络推理时的前向数据流,参数张量则存储了网络的静态参数数据。
功能通道是编译器的核心部分,用来完成对计算图的编译。功能通道有一系列子模块构成,每个子模块实现一项特定的编译功能。需要注意的是,为了实现网络的自动化部署,这些编译功能不仅需要实现步骤一中所提出的优化方法,也要使得编译后的计算图能与步骤二中硬件加速器的架构相对应。功能通道的处理流程如图7所示,其中实现了操作统一子模块,节点融合子模块,数据量化子模块,动态切分子模块。操作统一子模块用来将全连接节点转化为卷积节点,将ReLU节点转化为LeakyReLU节点,并重构相应的运算属性。节点融合子模块用于融合相邻的节点,消去节点间相邻的张量,这样可以消去计算过程中到片外存储的访问,使得计算图符合硬件加速器的流水计算结构。数据量化模块按照所提出的对称区间量化算法,调整运行时张量中记录的数据量,并完成对参数张量中存储的浮点参数的量化操作。动态切分子模块实现了动态切分算法,得到网络每一层对应的特征图的切分结果,按照切分结果对对应的运算节点进行复制,对节点中的运算属性进行调整。
内存分配器为计算图中的每个张量分配内存空间,分配算法基于线性扫描算法。首先,遍历计算图中所有张量,根据张量的维度信息计算其需要的内存空间。之后,根据计算图中张量执行的先后顺序计算张量的活动区间,活动区间表征了张量需要被存储和调用的时间端。张量的活动区间表建立后,活动区间之间的重叠情况就被分析。若两个张量之间的活动区间重叠,它们就不能被分配到同一块内存空间。反之,若两个张量之间的活动区间不重叠,它们的内存空间就可以重叠以减少对片外存储开销。需要注意的是,考虑到实际应用场景中,一个部署完成的网络算法往往需要运行多次,因此参数张量会固定存储在片外存储上,直到部署的网络被更换。相对地,运行时张量的内存空间在张量涉及的运算完成后就会立即释放。内存分配完成后,每个张量都会存储其被分配的地址信息和空间大小信息。
指令生成器将编译后的计算图转换为参数文件和硬件指令。参数可以直接从参数张量中提取并被组织成可以直接存储的参数文件。硬件指令的生成则需要基于步骤三中设计的硬件指令集,创建指令生成接口函数。接口函数的工作流程如图8所示,对于每一个种类的运算节点,都有一个对应的接口函数与之对应。接口函数中已经根据指令集预编写了一个指令块,指令块能够完成对应的运算节点的配置和运算。接口函数接收运算节点输入后,根据节点中存储的运算属性向预编写指令块传参。指令块中,首先定义的是配置指令,之后定义的是数据搬移指令,配置指令和数据搬移指令之间有握手指令隔开不同的处理步骤。对应到硬件上,就是首先完成硬件加速器的配置,然后数据搬移指令控制特征图数据和参数数据进入硬件加速器,驱动加速器开始运算。运算完成后,数据搬移指令又控制结果传回片外存储。多个指令块拼接到一起,就构成了一个卷积神经网络所对应的硬件部署指令文件。
硬件加速器上的硬件解析模块可以直接对指令文件进行解码,根据指令信息控制硬件加速器的运算,从而实现不同卷积神经网络在硬件加速器上的自动部署。这样,一个自动化的,面向各种卷积神经网络的一体化部署方法就被建立起来。
利用本发明中提出的基于FPGA的卷积神经网络自动部署方法构建的嵌入式图像处理系统可灵活处理多种不同的应用,单个处理平台即可快速响应场景分类,目标检测,语义分割等不同应用场景,能够大幅提高神经网络算法应用的灵活性,降低开发难度和系统成本。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种基于FPGA的卷积神经网络自动部署方法,其特征在于,包括以下步骤:
构建面向硬件的通用性卷积神经网络优化方法;
基于所述优化方法,构建基于FPGA的、可配置、通用化硬件加速设备;
构建用于对所述硬件加速设备进行配置的自定义硬件指令集;
构建神经网络编译设备,按照所述优化方法对各种卷积神经网络模型进行优化,并将优化后得到的数据结构转化为所述自定义硬件指令;
根据所述硬件指令对所述通用化网络硬件加速设备进行配置,实现特定卷积神经网络在通用硬件加速设备上的自动部署。
2.如权利要求1所述的方法,其特征在于,所述卷积神经网络优化方法,包括:网络量化方法、操作统一方法、以及动态切分方法中的一种或多种,其中:
所述网络量化方法中,卷积的权重量化位数和卷积的特征图量化位数均设置为8;
所述操作统一方法,将对网络的全连接操作和卷积操作统一为卷积操作,将LeakyReLU操作和ReLU操作统一为LeakyReLU操作;
所述动态切分方法,基于神经网络每一层的维度信息,通过分析确定每一层的特征图是否需要切分。
3.如权利要求2所述的方法,其特征在于,所述动态切分方法包括以下步骤:
分析神经网络中每一层的特征图存储需求,得出大部分层可以完整存储特征图的存储阈值;
基于所述存储阈值,分析每一层的存储需求是否超出存储阈值;
对于没有超出阈值的层,其特征图无需拆分;
对于超出阈值的层,按照存储阈值和存储需求的比例确定特征图被拆分的块。
4.如权利要求2所述的方法,其特征在于,所述操作统一方法中,全连接操作和卷积操作的统一通过将全连接操作替换为卷积操作实现,具体包括以下步骤:
确定自定义的权重尺寸;
将全连接操作的一维输入向量重构为三维输入张量,保证输入张量的尺寸等于自定义的权重尺寸;
将全连接操作的二位权重矩阵重构为四维权重张量,保证权重张量的尺寸等于自定义的权重尺寸;
输入张量和权重张量进行卷积,得到与原全连接结果完全一致的卷积结果。
5.如权利要求1-4中任一所述的方法,其特征在于,所述硬件加速设备包含针对神经网络中各种通用运算层的加速模块,以及对应的配置系统。
6.如权利要求5所述的方法,其特征在于,所述自定义硬件指令集中的指令包括:
配置指令,用于向所述硬件加速设备传送配置信息;
数据搬移指令,用于控制硬件加速设备的处理引擎与片外存储的交互;
握手指令,用于标志配置阶段,数据传输阶段和计算阶段的开始和结束;
所述指令包含32位二进制码,前8位作为指令的标识头,其中,数据搬移指令为多级指令。
7.如权利要求1所述的方法,其特征在于,所述神经网络编译设备包括前端解析模块,功能通道,内存分配模块和指令生成模块,其中:
前端解析模块,将输入的神经网络模型转化为固定格式的数据结构;
内存分配模块为网络中的数据分配内存地址;
功能通道,用于按照所述优化方法对所述数据结构进行优化,并使优化后得到的数据结构与所述硬件加速设备的架构相对应;
指令生成模块实现编译结果到所述硬件指令集的映射。
8.一种神经网络动态切分方法,其特征在于,包括以下步骤:
分析神经网络中每一层的特征图存储需求,得出大部分层可以完整存储特征图的存储阈值;
基于所述存储阈值,分析每一层的存储需求是否超出存储阈值;
对于没有超出阈值的层,其特征图无需拆分;
对于超出阈值的层,按照存储阈值和存储需求的比例确定特征图被拆分的块。
9.一种基于FPGA的卷积神经网络自动部署设备,其特征在于,包括:
基于FPGA的、可配置、通用化硬件加速设备,包含针对神经网络中各种通用运算层的加速模块,以及对应的配置系统;
神经网络编译设备,用于对各种特定卷积神经网络模型进行面向硬件的优化处理,并将优化后得到的数据结构转化为自定义硬件指令,所述指令用于对所述硬件加速设备进行配置,实现不同网络模型在所述硬件加速设备上的自动部署。
10.如权利要求9所述的部署设备,其特征在于,所述自定义硬件指令包括:
配置指令,用于向所述硬件加速设备传送配置信息;
数据搬移指令,用于控制硬件加速设备的处理引擎与片外存储的交互;
握手指令,用于标志配置阶段,数据传输阶段和计算阶段的开始和结束;
所述指令包含32位二进制码,前8位作为指令的标识头,其中,数据搬移指令为多级指令。
11.如权利要求9或10所述的部署设备,其特征在于,所述神经网络编译设备包括前端解析模块,功能通道,内存分配模块和指令生成模块,其中:
前端解析模块,将输入的神经网络模型转化为固定格式的数据结构;
内存分配模块为网络中的数据分配内存地址;
功能通道对所述数据结构进行所述面向硬件的优化处理,并使优化后得到的数据结构与所述硬件加速设备的架构相对应;
指令生成模块实现编译结果到所述硬件指令集的映射。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210625684.9A CN115186796A (zh) | 2022-06-02 | 2022-06-02 | 基于fpga的卷积神经网络自动部署方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210625684.9A CN115186796A (zh) | 2022-06-02 | 2022-06-02 | 基于fpga的卷积神经网络自动部署方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115186796A true CN115186796A (zh) | 2022-10-14 |
Family
ID=83513247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210625684.9A Pending CN115186796A (zh) | 2022-06-02 | 2022-06-02 | 基于fpga的卷积神经网络自动部署方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115186796A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089095A (zh) * | 2023-02-28 | 2023-05-09 | 苏州亿铸智能科技有限公司 | 一种针对ReRAM神经网络计算引擎网络的部署方法 |
CN116301920A (zh) * | 2023-03-23 | 2023-06-23 | 东北大学 | 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统 |
-
2022
- 2022-06-02 CN CN202210625684.9A patent/CN115186796A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116089095A (zh) * | 2023-02-28 | 2023-05-09 | 苏州亿铸智能科技有限公司 | 一种针对ReRAM神经网络计算引擎网络的部署方法 |
CN116089095B (zh) * | 2023-02-28 | 2023-10-27 | 苏州亿铸智能科技有限公司 | 一种针对ReRAM神经网络计算引擎网络的部署方法 |
CN116301920A (zh) * | 2023-03-23 | 2023-06-23 | 东北大学 | 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统 |
CN116301920B (zh) * | 2023-03-23 | 2023-11-07 | 东北大学 | 一种用于部署cnn模型至基于fpga的高性能加速器的编译系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115186796A (zh) | 基于fpga的卷积神经网络自动部署方法 | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
CN113139648B (zh) | 执行神经网络模型的pim架构的数据布局优化 | |
CN111104120B (zh) | 神经网络编译方法、系统及相应异构计算平台 | |
CN113177034B (zh) | 一种跨平台统一的分布式图数据处理方法 | |
CN111694643B (zh) | 一种面向图神经网络应用的任务调度执行系统及方法 | |
WO2021000971A1 (zh) | 操作数据的生成方法、装置及相关产品 | |
CN113392973B (zh) | 一种基于fpga的ai芯片神经网络加速方法 | |
US11921814B2 (en) | Method and device for matrix multiplication optimization using vector registers | |
CN108875914B (zh) | 对神经网络数据进行预处理和后处理的方法和装置 | |
US20230076473A1 (en) | Memory processing unit architecture mapping techniques | |
CN114416045A (zh) | 自动生成算子的方法和装置 | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
KR20200043617A (ko) | 고효율 연산 처리를 위한 인공 신경망 모듈 및 이의 스케쥴링 방법 | |
CN115828831A (zh) | 基于深度强化学习的多芯粒芯片算子放置策略生成方法 | |
CN117032807A (zh) | 基于risc-v指令集的ai加速处理器架构 | |
CN112200310B (zh) | 智能处理器、数据处理方法及存储介质 | |
US11631001B2 (en) | Heterogeneous computing on a system-on-chip, including machine learning inference | |
CN116185937B (zh) | 基于众核处理器多层互联架构的二元运算访存优化方法及装置 | |
CN113469326B (zh) | 在神经网络模型中执行剪枝优化的集成电路装置及板卡 | |
CN114662681B (zh) | 一种面向yolo算法可快速部署的通用硬件加速器系统平台 | |
CN113077042B (zh) | 卷积神经网络的数据重用与高效处理方法 | |
CN114897133A (zh) | 一种通用可配置的Transformer硬件加速器及其实现方法 | |
CN114595813A (zh) | 异构加速处理器及数据计算方法 | |
KR102372869B1 (ko) | 인공 신경망을 위한 행렬 연산기 및 행렬 연산 방법 |
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 |