CN116090518A - 基于脉动运算阵列的特征图处理方法、装置以及存储介质 - Google Patents
基于脉动运算阵列的特征图处理方法、装置以及存储介质 Download PDFInfo
- Publication number
- CN116090518A CN116090518A CN202310025509.0A CN202310025509A CN116090518A CN 116090518 A CN116090518 A CN 116090518A CN 202310025509 A CN202310025509 A CN 202310025509A CN 116090518 A CN116090518 A CN 116090518A
- Authority
- CN
- China
- Prior art keywords
- input
- feature map
- convolution
- array
- characteristic
- 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
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Biomedical Technology (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Biophysics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Neurology (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Complex Calculations (AREA)
Abstract
本申请提供一种基于脉动运算阵列的特征图处理方法、装置以及计算机可读存储介质。该特征图处理方法包括:获取待处理的输入特征图以及用于对输入特征图进行三维卷积运算的卷积核;沿卷积核的宽度方向和高度方向将卷积核分解成1×1维度的子卷积核;沿输入特征图和卷积核的通道方向,利用脉动运算阵列对输入特征图的宽高平面内的相应位置点的特征值和子卷积核的权重值进行并行运算,以获得部分卷积结果;对部分卷积结果进行累加,以获得输出特征图的相应特征值。通过上述方式,特征图处理装置将不同尺寸的卷积核转换为1×1卷积核计算的数据切分、调度控制和硬件实现方案,解决了对不同卷积核计算的兼容性问题。
Description
技术领域
本申请涉及深度学习技术领域,特别是涉及一种基于脉动运算阵列的特征图处理方法、装置以及计算机可读存储介质。
背景技术
随着物联网、云计算、大数据等信息技术的发展,在感知数据和图形处理器等计算平台推动下,深度学习技术受到业界广泛关注,其中卷积神经网络(convolutional neuralnetwork,CNN)在图像分类、目标检测和语义分割等诸多领域成为研究热点,并能实现良好的效果。CNN中卷积层和全连接层的计算量最大,同时卷积核的尺寸又会随算法存在各种变化,因此有效地对其计算加速显得尤为重要。随着CNN模型计算规模、复杂度日益提升,传统CPU(Central Process Unit,中央处理器)平台已无法满足实用性的要求。因此,采用GPU和FPGA(Field-Programmable Gate Array,现场可编程门阵列)等计算平台对CNN模型加速受到业界广泛关注。然而,相比于GPU(Graphic Process Unit,图形处理器),FPGA的高能效、易重构、迭代更新快和移动边缘端易于部署的特点,更能适应深度学习算法快速发展的需求。
当前采用FPGA的CNN加速器的实现方案主要包括两方面:循环展开并行计算和脉动阵列计算。前者通过增加并行度减少迭代次数降低系统处理延时,但面临输入数据直连共享导致的扇入/扇出高的问题,使得最终系统速度低,且存在对不同尺寸卷积核计算的模式通用性差的问题;后者将CNN中的卷积运算和全连接运算转换为矩阵乘法,但如何提供通用卷积核计算的方法对系统性能影响显著。同时,由于CNN模型推理计算时,对应的模型参数和输入数据量运算所涉及的数据量较大,FPGA片上资源有限,无法存储CNN动辄几百兆字节的参数或数据。CNN加速器的设计旨在“高并行度计算”,而这要求极大的数据吞吐量,同时因卷积计算的特点,存在若干次迭代,上述因素会带来频繁数据交互的问题。因此,提供一种高效的通用卷积核计算方案和CNN加速器装置,对CNN加速器领域尤为重要。
发明内容
本申请提供了一种基于脉动运算阵列的特征图处理方法、装置以及计算机可读存储介质。
本申请提供了一种基于脉动运算阵列的特征图处理方法,所述方法包括:
获取待处理的输入特征图以及用于对所述输入特征图进行三维卷积运算的卷积核;
沿所述卷积核的宽度方向和高度方向将所述卷积核分解成1×1维度的子卷积核;
沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的宽高平面内的相应位置点的特征值和所述子卷积核的权重值进行并行运算,以获得部分卷积结果;
对所述部分卷积结果进行累加,以获得输出特征图的相应特征值。
其中,所述方法进一步包括:
根据预设的输入通道并行度,沿所述通道方向将所述输入特征图的各位置点的特征值分别划分成多个特征值分组,其中每个所述特征值分组内的特征值数量等于所述输入通道并行度;
根据所述输入通道并行度,沿所述通道方向将所述子卷积核的权重值划分成与所述特征值分组对应的多个权重值分组,其中对应的所述特征值分组和所述权重值分组形成运算分组对;
所述沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的宽高平面内的相应位置点的特征值和所述子卷积核的权重值进行并行运算的步骤包括:
利用所述脉动计算阵列对所述运算分组对进行并行运算,其中同一所述运算分组对内的运算彼此并行或者不同的所述运算分组对的运算彼此并行。
其中,所述利用所述脉动计算阵列对所述运算分组对进行并行运算的步骤包括:
针对同一所述子卷积核,以所述运算分组对为单位,依次沿所述输入特征图的宽度方向和高度方向中的一者以及所述通道方向对所述输入特征图进行遍历。
其中,所述根据预设的输入通道并行度,沿所述通道方向将所述输入特征图的各位置点的特征值分别划分成多个特征值分组的步骤包括:
以所述特征值分组为读取单位,并依次沿所述输入特征图的宽度方向和高度方向中的所述一者、所述通道方向以及所述输入特征图的宽度方向和高度方向中的另一者从外部存储器缓存所述输入特征图,其中缓存后的输入特征图用于输入所述脉动计算阵列进行运算。
其中,所述以所述特征值分组为读取单位,并依次沿所述输入特征图的宽度方向和高度方向中的所述一者、所述通道方向以及所述输入特征图的宽度方向和高度方向中的另一者从外部存储器缓存所述输入特征图的步骤包括:
在所述输入特征图的宽度方向和高度方向中的另一者上,从所述外部存储器分次缓存所述输入特征图。
其中,所述卷积核的数量为与所述输出特征图的通道数量对应的多个;
所述方法进一步包括:
按照预设的输出通道并行度,将多个所述卷积核划分成多个卷积核分组,其中每组所述卷积核分组内的卷积核数量等于所述输出通道并行度;
所述沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的宽高平面内的相应位置点的特征值和所述子卷积核的权重值进行并行运算的步骤包括:
针对同一所述卷积核分组内的各卷积核,并行执行所述利用所述脉动计算阵列对所述运算分组对进行并行运算的步骤。
其中,所述输出通道并行度等于所述输入通道并行度,且不小于1。
其中,所述脉动计算阵列包括阵列式排布的多个计算单元,所述沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的特征值和所述子卷积核的权重值进行并行运算的步骤之前,进一步包括:
将同一所述特征值分组内的特征值沿所述脉动计算阵列的行方向并行馈入到所述脉动计算阵列的不同行,以使得各所述特征值沿各自的行方向进行传递;
将同一所述卷积核分组内的各卷积核所对应的所述权重值分组并行馈入到所述脉动计算阵列的不同列,以使得各所述权重值分组内的所述权重值沿各自的列方向进行传递。
其中,所述计算单元设置成对应的所述特征值和所述权重值进行乘积运算,以获得乘积结果与沿所述列方向输入的上一级计算单元的输出结果进行加法运算,以获得自身的输出结果。
本申请还提供了一种特征图处理装置,所述特征图处理装置包括处理器和存储器,所述存储器中存储有程序数据,所述处理器用于执行所述程序数据以实现如上述的特征图处理方法。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现上述的特征图处理方法。
本申请的有益效果是:特征图处理装置获取待处理的输入特征图以及用于对输入特征图进行三维卷积运算的卷积核;沿卷积核的宽度方向和高度方向将卷积核分解成1×1维度的子卷积核;沿输入特征图和卷积核的通道方向,利用脉动运算阵列对输入特征图的宽高平面内的相应位置点的特征值和子卷积核的权重值进行并行运算,以获得部分卷积结果;对部分卷积结果进行累加,以获得输出特征图的相应特征值。通过上述方式,特征图处理装置将不同尺寸的卷积核转换为1×1卷积核计算的数据切分、调度控制和硬件实现方案,解决了对不同卷积核计算的兼容性问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的特征图处理方法一实施例的流程示意图;
图2是本申请提供的CNN加速器装置系统架构的示意图;
图3是本申请提供的卷积层计算示意图;
图4是图1所示特征图处理方法步骤S13的具体流程示意图;
图5是本申请提供的输入通道方向优先存储策略的示意图;
图6是本申请提供的内部卷积计算的调度的示意图;
图7是本申请提供的通用卷积核计算原理的示意图;
图8是本申请提供的脉动阵列单元的结构示意图;
图9是本申请提供的基于脉动阵列的卷积核计算的示意图;
图10是本申请提供的特征图处理装置一实施例的结构示意图;
图11是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请提供的基于脉动运算阵列的特征图处理方法,旨在解决以下问题:
1、CNN加速器中不同尺寸卷积核计算兼容性差、无法通用的问题。
2、CNN加速器部署在资源受限的FPGA上面临的输入数据和权重复用带来的对外部存储器频繁访存、带宽压力大的问题。
3、输入数据被权重共享的处理单元结构带来的高扇入/扇出问题,导致系统最终速度较低的问题。
请参阅图1和图2,图1是本申请提供的特征图处理方法一实施例的流程示意图,图2是本申请提供的CNN加速器装置系统架构的示意图。
其中,本申请的特征图处理方法应用于一种特征图处理装置,其中,本申请的特征图处理装置可以为服务器,也可以为由服务器和终端设备相互配合的系统。相应地,特征图处理装置包括的各个部分,例如各个单元、子单元、模块、子模块可以全部设置于服务器中,也可以分别设置于服务器和终端设备中。
进一步地,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块,例如用来提供分布式服务器的软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。在一些可能的实现方式中,本申请实施例的特征图处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
本申请提出一种基于脉动运算阵列的通用卷积核CNN加速器架构设计和装置,其系统架构图如图2所示。其中,CNN加速器通常是对神经网络模型中多层计算密集型的卷积层或全连接层进行加速,下面以大小为256×256×32的输入特征图,且实际处理一层卷积层的过程来介绍本申请中的CNN加速器的各组件功能及数据处理方式,其他大小的输入特征图处理过程类似,在此不再赘述。
如图2所示,输入特征图数据作为卷积层的输入或全连接层的输入,与其对应权重参数进行卷积计算或者全连接计算。其中输入特征图和模型中每层卷积层、全连接层的权重参数均在外部存储器中存储(例如DDR,Double Data Rate,双倍速率同步动态随机存储器)。
需要注意的是,CNN加速器的正向计算通常称为推理,本申请所提及的CNN加速器是单引擎架构,即支持通用卷积核运算的计算引擎,CNN加速器通过神经网络模型不同层的特征信息(例如卷积核大小),调度配置计算引擎实现神经网络模型所有层的推理运算。
因此,每层执行推理前,需由软件系统对可编程逻辑(例如FPGA)的硬件模块参数寄存器进行配置。
例如卷积运算时,软件系统通过总线,例如Avalon总线或APB总线配置直接内存访问控制器DMA(Direct Memory Access)的工作寄存器,控制DMA从外部存储器DDR搬运数据(即本申请中的输入特征图和权重参数)至FPGA。由于FPGA器件存储资源有限,因此加速器装置中需要输入特征图缓存单元和权重缓存单元,分别缓存部分输入特征图和权重参数数据,这两部分数据进行若干次卷积运算后,DMA再读取DDR下一批数据。
其中,输入特征图缓存单元、输入特征图脉动加载控制、权重缓存单元和权重脉动加载控制为本申请的重点创新之处。其中通过缓存部分输入特征图共享复用,循环读取权重的方式,结合脉动阵列计算引擎,实现通用卷积核CNN加速器架构系统,下面将详细介绍:
脉动阵列单元为主要的计算单元,本申请的加速器装置将输入特征图和权重的卷积运算转换为了向量矩阵乘法,并利用脉动阵列进行计算,其结果为卷积运算的部分和。因此该部分和结果由累加器缓存单元暂存,等下一批的结果累加,直至当前权重参数对应的输入特征图计算完成,输出最终结果。
偏置模块主要对输入特征图的输出通道方向进行增加偏置参数的运算操作,该结果通过激活函数,如ReLU、Leaky ReLU等模块进行非线性处理输出至下一级模块,至此一层卷积层的计算便完成。
通常卷积层的下一层为池化层或元素级操作层,例如拼接Concat层等,因此,图2中的池化/元素级操作处理单元主要负责池化操作和元素级操作,其输出结果通过DMA写回DDR,作为下一层卷积层的输入特征图,执行新一轮卷积层-偏置-激活函数-池化/元素级操作的处理过程,直至CNN模型的所有层全部计算完成。
需要进一步说明的是,本申请的CNN加速器装置是单引擎架构,即通过将CNN模型线下分组,每组包括卷积层-偏置-激活函数-池化/元素级等操作,若某组无对应的处理单元,可旁路关闭使能。这样通过软核调度若干次(即组数)引擎计算之后,便可得到最终CNN模型的输出结果。
本申请的CNN加速器装置中,通过软件系统将所有组的配置参数预先下发至片上(如FPGA),之后全部由FPGA直接读取相关配置参数,实现所有组的计算,通过减少与软件系统的通信交互,降低冗余的系统处理时延,从而提升系统的推理性能。
下面结合图1所示的特征图处理方法继续介绍图2所示CNN加速器装置各部分的功能实现:
具体而言,如图1所示,本申请实施例的特征图处理方法具体包括以下步骤:
步骤S11:获取待处理的输入特征图以及用于对输入特征图进行三维卷积运算的卷积核。
在本申请实施例中,特征图处理装置将待处理的输入特征图以及用于对输入特征图进行三维卷积运算的卷积核从外部存储器DDR输入直接内存访问控制器,其中,输入特征图为每层卷积计算的输入。
具体地,每层卷积计算的输入包括输入特征图ifmp(N,Ci,Hi,Wi)和权重参数weight(Co,Ci,Ky,Kx),最终的计算结果为输出特征图ofmp(N,Co,Ho,Wo),其中N表示批大小,即图像帧数。在此描述过程中,N设为1,即表示单帧图像;另外,多帧图像处理即可以视为单帧图像的多次调度。
Co和Ci分别表示输出通道数目和输入通道数目,Kx和Ky分别表示卷积核的长和宽,Hi、Wi分别表示输入特征图的高和宽,Ho、Wo分别表示输出特征图的高和宽,最终结果需加偏置bias(Co,1),即每个输出通道Co的数据共享一个bias。
其中,卷积层的计算伪代码具体如下,其中S表示滑动窗口的步长:
其中,Ho=((Hi-Ky+2*P)/S)+1,Wo=((Wi-Kx+2*P)/S)+1,P表示补零行数。以其中某层卷积层为例,若输入特征图ifmp为(1,32,256,256),weight为(64,32,3,3),S=1,P=1,则第一层的输出特征图ofmp为(1,64,256,256)。
同时,全连接层可以看做向量矩阵乘法,即ifmp为(Ci,1),权重weight为(Co,Ci),偏置bias为(Co,1),则ofmp(Co,1)=weight×ifmp+bias。
步骤S12:沿卷积核的宽度方向和高度方向将卷积核分解成1×1维度的子卷积核。
在本申请实施例中,特征图处理装置可以沿卷积核的宽度方向和高度方向将卷积核分解成1×1维度的子卷积核。例如,对于一个卷积核大小Kx=Ky=3,可以沿宽度方向和高度方向分解为9个不同位置的1×1维度的子卷积核。
步骤S13:沿输入特征图和卷积核的通道方向,利用脉动运算阵列对输入特征图的宽高平面内的相应位置点的特征值和子卷积核的权重值进行并行运算,以获得部分卷积结果。
在本申请实施例中,请继续参阅图3,图3是本申请提供的卷积层计算示意图。本申请卷积的计算具体过程如图3所示,即每个滤波器wgt在输入特征图ifmp上从左到右从上到下依次滑动,同时两者对应的重叠位置相乘累加,计算输出特征图ofmp的1个特征点,当滑动窗口遍历整个ifmp后,得到1个通道的输出特征图,Co个wgt则得到最终Co个通道的ofmp。
由于卷积过程中,涉及大量的输入特征图和参数数据的存储和复用,但硬件片上资源有限(例如FPGA),因此每次只能在片上缓存部分数据进行运算,如图中灰色部分。灰色立方体在Ci方向的个数为PCi,称之为输入通道并行度,灰色立方体在Co方向的个数为PCo,称之为输出通道并行度。由此可见,加速器每次只计算整个输入特征图和权重参数的子集(即灰色立方体)对应的卷积结果。
请继续参阅图4,图4是图1所示特征图处理方法步骤S13的具体流程示意图。
具体而言,如图4所示,本申请实施例的特征图处理方法具体包括以下步骤:
步骤S131:根据预设的输入通道并行度,沿通道方向将输入特征图的各位置点的特征值分别划分成多个特征值分组,其中每个所述特征值分组内的特征值数量等于所述输入通道并行度。
在本申请实施例中,为了实现有效地读取外部存储器中对应的计算数据,现有技术通过“十字形”分块,即将输入特征图横向和纵向分为若干块,每次只读取和计算1个块的输入特征图,然而由于滑动窗口的卷积计算模式,易知,两个上下/左右相邻的块边界存在数据交叠的情况需要额外的处理,此外,计算完每块的卷积结果之后,还需要额外的控制和操作恢复原始输出特征图的物理形态,这就引入了额外的时延。
通过图3所示的卷积计算的过程可以看出,在硬件片上资源有限的情况下,输入特征图ifmp和权重wgt的复用次数相同,即每个输出通道Co方向的特征点的计算需要遍历一次所有的权重参数。若如此多的数据均从DDR读取,将会对带宽利用带来限制。
本申请提出一种输入通道Ci方向优先的存储策略,其存储原理如图5所示。考虑到并行度PCi,存储单位设置为Ci方向PCi个数据,计算时同样并行处理的单位为PCi个数据,本申请将输入特征图ifmp的行Wi和Ci方向的数据全部存储,列Hi方向只存储部分行,即将特征值划分成多个特征值分组,例如8行为一个特征值分组,其中,该值可根据兼容的最大卷积核配置,此处以最大支持卷积核7×7为例,则共计需存储Wi×Ci×8个数据。片上存储资源地址连续,同时CNN的前级层Wi×Ci和后级层Wi×Ci数量级相同,因此存储资源可以兼容。
步骤S132:根据输入通道并行度,沿通道方向将子卷积核的权重值划分成与特征值分组对应的多个权重值分组,其中对应的特征值分组和所述权重值分组形成运算分组对。
在本申请实施例中,输入通道Ci的并行度PCi为8,PCi=8表示每个ifmp数据在Ci方向每8个1组,在外部DDR存储、片上存储以及片上计算均采用PCi=8为单位,例如,当数据位宽为8位,则每个PCi单位共64位,即包括Ci方向的8个ifmp数据。
在其他实施例中,输入通道Ci的并行度PCi可设置为更大值,需要结合所选器件的DSP(Digital Signal Processing,数字信号处理)计算单元数量,并行度越大,性能越强,例如并行度PCi=16、并行度PCi=32等。
本申请的卷积计算调度如图6所示,Wi×Hi×Ci的输入特征图ifmp,Kx×Ky×Ci×Co的滤波器wgt进行卷积,得到Wo×Ho×Co的输出特征图ofmp。
本申请采用使用实施例之一进行描述,即采用缓存8行的ifmp,PCi为8,同时在权重wgt的尺度也采用并行度PCo为8,即将子卷积核的权重值划分成多个权重值分组。后续会解释为何PCi=PCo,PCo表示将滤波器,即每个wgt N的三维立方体,wgt0、wgt1、…和wgt7共8个作为1组,后面依次类推,若共有n组PCo,则易知滤波器wgt的总个数为Co=n×PCo。
在卷积计算时,若Kx=Ky=3,计算过程如下:步骤S1,先按照Wi方向,例如图6中wgt0的第0号PCi个权重,依次与ifmp中第0、1、2、…Wi号PCi个数据对应乘累加得到ofmp中Wo方向的1行卷积部分和;步骤S2,按照Ci方向,重复步骤1的过程,需要注意的是,wgt0的第0号PCi个权重变为Ci方向的下一组,同样ifmp中的第0、1、2、…Wi号PCi个数据也变为Ci方向的下一组,两者保持位置对应。步骤S3,重复步骤S2,直到Ci方向所有的PCi个数据全部计算完成,便得到1×1卷积核对应的ofmp中Wo方向的1行卷积结果。由于此时卷积核大小Kx=Ky=3,即共有9个不同位置的1×1卷积核,则需将上述1×1的计算过程重复9次,最终得到3×3卷积核对应的ofmp中Wo方向的1行卷积结果。
上述过程描述了wgt0的卷积计算过程,由于所描述实施例的输出通道并行度PCo=8,表示有8份(即wgt0、wgt1、…、wgt7)与wgt0相同的卷积计算在并行进行,最终的输出为PCo个Wo方向的1行结果。当第1组PCo个wgt计算完成,再进行第2组PCo个wgt得到Co方向的第2组PCo个Wo方向的1行结果,依次类推。当所有n组PCo个wgt计算完成,即得到Co方向所有组的PCo个Wo方向1行结果。
由此可知,ofmp的数据排布与ifmp的数据排布是一致的,后级卷积层又是相同的计算过程,上级卷积层的PCo作为下级卷积层的PCi,数据排布相同,便可直接调度引擎计算,直至贯穿整个模型的计算。上述描述也解释了需要PCi=PCo的原因,即保持前后级层的并行度对应关系。当ofmp中Wo方向1行结果得到后,卷积核窗口沿Hi方向向下移动,计算第2行Wo的卷积结果,当8行ifmp数据消耗完,再读取下一组8行的ifmp。
上述过程仅是本申请实施例中的一种情况,本申请所涉及的通用卷积核计算,具体的计算原理示意如图7所示。基于图2的装置和图6的原理,本申请提供了通用的卷积核计算方法,即将各种大小的卷积核转换为1×1的卷积核计算。
如图7所示,当卷积核为1×1时,其在输入特征图上的窗口滑动路径为a1到aa,数据对应位置乘累加。若卷积核为3×3,类似上述步骤S1、步骤S2和步骤S3的描述,此处展开描述,将3×3的卷积核分为a、b、c、d、e、f、g、h、i共9组1×1的卷积核。对于卷积核a位置的窗口滑动路径为a1、a2、…、a8,计算过程即为1×1卷积核的过程,其中窗口未覆盖的区域与步长S和补零P相关,如果S不为1,则通过控制读缓存地址即可。
同理,b、c、d、…、i位置的计算过程类似,当9组1×1计算完成并相互累加,输出即为3×3卷积核最终的卷积结果。图7仅展示了Ci=1平面的情况,当然实际情况Ci一般不为1,那么将PCi作为1组数据,先沿Wi行方向滑动,再Ci通道方向滑动,与上述步骤1和步骤2描述过程一致。若卷积核大小为其他尺寸,计算过程类似。
此外,本申请提供的方法还支持卷积核Kx不等于Ky的情况,例如1×3、5×1等,由此可见,本申请的卷积核计算实现了通用兼容化。
需要进一步说明的是,权重缓存单元和权重脉动加载控制也为本申请的重点部分,根据上述描述,滤波器wgt被分为每PCo一组并行计算,同时卷积核内部又按照1×1卷积核进行计算,此外Ci方向还有并行度PCi。因此,如图6所示,权重参数在外部存储器、片上存储器和片上运算的内存排布为:步骤SS1,wgt0的第0号PCi、wgt1的第0号PCi、…、wgt7的第0号PCi,然后沿Ci方向,下一组wgt0的第0号PCi、wgt1的第0号PCi、…、wgt7的第0号PCi,直至Ci方向最大值;步骤SS2,重复上述过程,完成wgt0、wgt1、…、wgt7的第1、2、…、7号权重存储,即完成第1组PCo的wgt权重存储;步骤SS3,重复步骤SS1和步骤SS2,直到所有组的PCo的wgt权重存储完成。需要注意的是,本申请采用共享部分暂存输入特征图,循环读取权重的方式,即输入特征图仅需从DDR中读1遍,权重参数需从DDR中读若干次。
综上所述,本申请的共享部分暂存输入特征图和调度策略有3点好处:(1)支持不同的卷积核大小的卷积层计算;(2)对于资源有限的器件,片上缓存的输入特征图和权重减少,可根据器件的资源大小适配;(3)共享部分暂存输入特征图,只需遍历1次,可直接产生并写回输出特征图结果,不需片上缓存中间卷积计算的部分和结果,同时,降低了访问外部存储器的次数,进而降低了带宽需求。
步骤S133:利用脉动计算阵列对运算分组对进行并行运算,其中同一运算分组对内的运算彼此并行或者不同的运算分组对的运算彼此并行。
在本申请实施例中,本申请提供的脉动阵列单元的结构具体请参阅图8,其由一个二维处理单元PE(Processing Element,处理元件)矩阵组成。
本申请采用权重间歇性脉动加载,输入特征图数据和输出特征图数据定向传播的方式进行计算,其中权重参数按需纵向进行加载,此后,输入特征图数据横向逐拍进入脉动阵列单元进行计算,并向相邻右边的PE流动,每个PE的计算结果纵向定向传播。所有的一次流动需1个时钟节拍。每个PE为一个乘累加单元,即当每个PE中Wi和Xi相遇,即一个运算分组对,则进行乘法,并将乘积结果和来自其相邻上级PE流入的结果累加,再流向相邻下级的PE。当前批次的部分输入特征图计算完成后,得到部分和结果,由于最终的输出特征图的结果是输入通道方向所有数据乘积之和,因此需要暂存部分和与下一批对应的部分和累加,直至输出最终的计算结果,即为当前卷积层的输出特征图。可以看出,基于脉动阵列的方法,每个PE只和相邻的PE相连接,扇入和扇出为1,同时脉动阵列规则的矩形物理结构,使其映射到FPGA上时更有效,因为对应的FPGA上的DSP资源分布的物理空间是矩形区域,布局布线更有利,因此加速器可以达到更高时钟频率。
另一方面,本申请实施例提供了一种基于脉动阵列的通用卷积核计算方法。如图9所示,当PCi=PCo=8时,采用脉动阵列的大小为PCi×PCo=8×8的PE阵列。其中,每个PE阵列的电路结构图如图9右所示,即权重wi输入寄存,与特征图数据xi相乘,并与纵向上级PE的结果psumi-1累加,寄存输出为psumi,作为纵向下级PE的输入。同时,xi寄存输出给横向后级PE使用。
结合图6所示过程,ifmp第0号PCi个数据从脉动阵列的左侧输入,PCi个ifmp数据分别对应脉动阵列第1列8个PE的输入,即索引0、1、…、7对应第1列PE的PE0、PE1、…、PE7,同时第1组的PCo个PCi的wgt0、wgt1、…、wgt7数据从脉动阵列上侧输入,对于每个wgt{0,2,…,7},以wgt0为例,PCi个参数对应第1列的PE0、PE1、…、PE7,依次类推。卷积计算时,暂时固定每一列PE的wgt,逐次输入ifmp的第1号、第2号、…、第Wi号数据,则脉动阵列的最下端输出为1行Wo的并行的PCo个卷积部分和,当1行第Wi号数据发送完成,进而沿Ci方向发送下1行ifmp的第1号、第2号、…、第Wi号数据,同时每个PE的wgt也需要对应的更新。为了减少空闲周期,本申请中权重wgt的加载采用脉动加载,通过权重脉动加载控制单元实现,即在1行最后的第Wi号数据输入PE阵列后,左上角的PE完成第Wi号数据计算的当前拍,进行新的权重加载,其他PE类型,以此实现前1行数据、权重和后1行的数据、权重的首尾相连,从而实现DSP利用率的最大化,提高系统的吞吐量。上述的每1行结果均为卷积部分和,利用图8中的累加缓存单元与下一次脉动阵列结果进行累加,直至完成卷积运算操作,输出给后级模块、如bias、激活和池化等操作。
此外,需要进一步说明的是,当计算全连接层时,数据的排布还是如图4中ifmp所示,与卷积层不同,全连接层的权重参数与ifmp的形状尺寸一致,例如,当ifmp的Wi=Hi=7,Ci=256时,则全连接层的每个wgt的Kx=Ky=7,Ci=256,若Co=512,显然,经过全连接层的计算,最终输出1×512的向量,易知本申请的装置同样兼容全连接计算。
步骤S14:对部分卷积结果进行累加,以获得输出特征图的相应特征值。
在本申请实施例中,当前批次的部分输入特征图计算完成后,得到部分和结果,由于最终的输出特征图的结果是输入通道方向所有数据乘积之和,因此需要暂存部分和与下一批对应的部分和累加,直至输出最终的计算结果,即为当前卷积层的输出特征图。特征图处理装置通过将当前卷积层的输出特征图,作为下一个卷积层的输入特征图,从而不断调用图2所示的CNN加速器装置,得到输出特征图的最终特征值。
在本申请实施例中,通过提供通用卷积核CNN加速器装置,采用共享部分暂存输入特征图和数据调度的策略,兼容不同尺寸的卷积核计算,通过降低对外部存储器的访存降低了带宽需求。同时,提供的基于脉动阵列的通用卷积核计算方法实现了流水线设计,对装置系统的带宽、资源和性能具有重要意义。
本申请通过将不同尺寸的卷积核计算转换为1×1卷积核的计算,按照输入通道和输出通道并行度,将输入特征图和权重参数数据进行切分,并提供了有效地调度控制方式和硬件实现方案,有效解决了其他方案中CNN加速器对不同卷积核计算的兼容性问题。
本申请提供的权重共享部分输入特征图数据分块策略,通过复用输入数据,有效地降低了访存带宽压力和缓解了FPGA片上存储资源受限的问题,同时提供针对输入特征图行-通道方向优先存储的方法,有效地与兼容不同尺寸卷积核计算模式配合,实现高效调度和高并行度计算。与其他分块策略相比,本提案以行方向-通道方向组成的面为单位的数据进行缓存,包含了滑窗区域所有数据,因此得到的输出特征图不需额外处理。
本申请提供的基于脉动阵列进行计算的结构,与循环展开并行计算方案相比,易知脉动阵列结构扇入/扇出为1,其规则的矩阵形物理结构便于FPGA的布局布线,因此利于实现更高的工作频率,从而提升CNN加速器系统性能。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
为实现上述实施例的特征图处理方法,本申请还提出了一种特征图处理装置,具体请参阅图10,图10是本申请提供的特征图处理装置一实施例的结构示意图。
本申请实施例的特征图处理装置300包括存储器31和处理器32,其中,存储器31和处理器32耦接。
存储器31用于存储程序数据,处理器32用于执行程序数据以实现上述实施例所述的特征图处理方法。
在本实施例中,处理器32还可以称为CPU(Central Processing Unit,中央处理单元)。处理器32可能是一种集成电路芯片,具有信号的处理能力。处理器32还可以是通用处理器、数字信号处理器(DSP,Digital Signal Process)、专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、现场可编程门阵列(FPGA,Field Programmable GateArray)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器32也可以是任何常规的处理器等。
为实现上述实施例的特征图处理方法,本申请还提供了一种计算机可读存储介质,如图11所示,计算机可读存储介质400用于存储程序数据41,程序数据41在被处理器执行时,用以实现如上述实施例所述的特征图处理方法。
本申请还提供一种计算机程序产品,其中,上述计算机程序产品包括计算机程序,上述计算机程序可操作来使计算机执行如本申请实施例所述的特征图处理方法。该计算机程序产品可以为一个软件安装包。
本申请上述实施例所述的特征图处理方法,在实现时以软件功能单元的形式存在并作为独立的产品销售或使用时,可以存储在装置中,例如一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (11)
1.一种基于脉动运算阵列的特征图处理方法,其特征在于,所述方法包括:
获取待处理的输入特征图以及用于对所述输入特征图进行三维卷积运算的卷积核;
沿所述卷积核的宽度方向和高度方向将所述卷积核分解成1×1维度的子卷积核;
沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的宽高平面内的相应位置点的特征值和所述子卷积核的权重值进行并行运算,以获得部分卷积结果;
对所述部分卷积结果进行累加,以获得输出特征图的相应特征值。
2.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
根据预设的输入通道并行度,沿所述通道方向将所述输入特征图的各位置点的特征值分别划分成多个特征值分组,其中每个所述特征值分组内的特征值数量等于所述输入通道并行度;
根据所述输入通道并行度,沿所述通道方向将所述子卷积核的权重值划分成与所述特征值分组对应的多个权重值分组,其中对应的所述特征值分组和所述权重值分组形成运算分组对;
所述沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的宽高平面内的相应位置点的特征值和所述子卷积核的权重值进行并行运算的步骤包括:
利用所述脉动计算阵列对所述运算分组对进行并行运算,其中同一所述运算分组对内的运算彼此并行或者不同的所述运算分组对的运算彼此并行。
3.根据权利要求2所述的方法,其特征在于,所述利用所述脉动计算阵列对所述运算分组对进行并行运算的步骤包括:
针对同一所述子卷积核,以所述运算分组对为单位,依次沿所述输入特征图的宽度方向和高度方向中的一者以及所述通道方向对所述输入特征图进行遍历。
4.根据权利要求3所述的方法,其特征在于,
所述根据预设的输入通道并行度,沿所述通道方向将所述输入特征图的各位置点的特征值分别划分成多个特征值分组的步骤包括:
以所述特征值分组为读取单位,并依次沿所述输入特征图的宽度方向和高度方向中的所述一者、所述通道方向以及所述输入特征图的宽度方向和高度方向中的另一者从外部存储器缓存所述输入特征图,其中缓存后的输入特征图用于输入所述脉动计算阵列进行运算。
5.根据权利要求4所述的方法,其特征在于,所述以所述特征值分组为读取单位,并依次沿所述输入特征图的宽度方向和高度方向中的所述一者、所述通道方向以及所述输入特征图的宽度方向和高度方向中的另一者从外部存储器缓存所述输入特征图的步骤包括:
在所述输入特征图的宽度方向和高度方向中的另一者上,从所述外部存储器分次缓存所述输入特征图。
6.根据权利要求2所述的方法,其特征在于,所述卷积核的数量为与所述输出特征图的通道数量对应的多个;
所述方法进一步包括:
按照预设的输出通道并行度,将多个所述卷积核划分成多个卷积核分组,其中每组所述卷积核分组内的卷积核数量等于所述输出通道并行度;
所述沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的宽高平面内的相应位置点的特征值和所述子卷积核的权重值进行并行运算的步骤包括:
针对同一所述卷积核分组内的各卷积核,并行执行所述利用所述脉动计算阵列对所述运算分组对进行并行运算的步骤。
7.根据权利要求6所述的方法,其特征在于,所述输出通道并行度等于所述输入通道并行度,且不小于1。
8.根据权利要求6所述的方法,其特征在于,所述脉动计算阵列包括阵列式排布的多个计算单元,所述沿所述输入特征图和所述卷积核的通道方向,利用所述脉动运算阵列对所述输入特征图的特征值和所述子卷积核的权重值进行并行运算的步骤之前,进一步包括:
将同一所述特征值分组内的特征值沿所述脉动计算阵列的行方向并行馈入到所述脉动计算阵列的不同行,以使得各所述特征值沿各自的行方向进行传递;
将同一所述卷积核分组内的各卷积核所对应的所述权重值分组并行馈入到所述脉动计算阵列的不同列,以使得各所述权重值分组内的所述权重值沿各自的列方向进行传递。
9.根据权利要求8所述的方法,其特征在于,所述计算单元设置成对应的所述特征值和所述权重值进行乘积运算,以获得乘积结果与沿所述列方向输入的上一级计算单元的输出结果进行加法运算,以获得自身的输出结果。
10.一种特征图处理装置,其特征在于,所述特征图处理装置包括处理器和存储器,所述存储器中存储有程序数据,所述处理器用于执行所述程序数据以实现如权利要求1-9任一项所述的特征图处理方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现权利要求1-9任一项所述的特征图处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310025509.0A CN116090518A (zh) | 2023-01-05 | 2023-01-05 | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310025509.0A CN116090518A (zh) | 2023-01-05 | 2023-01-05 | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116090518A true CN116090518A (zh) | 2023-05-09 |
Family
ID=86198726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310025509.0A Pending CN116090518A (zh) | 2023-01-05 | 2023-01-05 | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116090518A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117763275A (zh) * | 2024-02-21 | 2024-03-26 | 北京壁仞科技开发有限公司 | 执行卷积计算的方法、计算装置、介质和程序产品 |
-
2023
- 2023-01-05 CN CN202310025509.0A patent/CN116090518A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117763275A (zh) * | 2024-02-21 | 2024-03-26 | 北京壁仞科技开发有限公司 | 执行卷积计算的方法、计算装置、介质和程序产品 |
CN117763275B (zh) * | 2024-02-21 | 2024-06-21 | 北京壁仞科技开发有限公司 | 执行卷积计算的方法、计算装置、介质和程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108241890B (zh) | 一种可重构神经网络加速方法及架构 | |
US10691996B2 (en) | Hardware accelerator for compressed LSTM | |
Yepez et al. | Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks | |
CN108629406B (zh) | 用于卷积神经网络的运算装置 | |
CN111898733B (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN107239824A (zh) | 用于实现稀疏卷积神经网络加速器的装置和方法 | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
TW202123093A (zh) | 實行卷積運算的系統及方法 | |
US11915118B2 (en) | Method and apparatus for processing computation of zero value in processing of layers in neural network | |
CN109472361B (zh) | 神经网络优化方法 | |
EP3093757B1 (en) | Multi-dimensional sliding window operation for a vector processor | |
CN113222101A (zh) | 深度学习处理装置、方法、设备和存储介质 | |
CN111582465B (zh) | 基于fpga的卷积神经网络加速处理系统、方法以及终端 | |
CN109993293B (zh) | 一种适用于堆叠式沙漏网络的深度学习加速器 | |
KR102516039B1 (ko) | 효율적인 컨볼루션 엔진 | |
Liu et al. | WinoCNN: Kernel sharing Winograd systolic array for efficient convolutional neural network acceleration on FPGAs | |
CN112005251A (zh) | 运算处理装置 | |
KR20230081697A (ko) | 팽창 컨볼루션 계산 가속화 방법 및 장치 | |
CN116090518A (zh) | 基于脉动运算阵列的特征图处理方法、装置以及存储介质 | |
CN115310037A (zh) | 矩阵乘法计算单元、加速单元、计算系统和相关方法 | |
Shrivastava et al. | A survey of hardware architectures for generative adversarial networks | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
CN113158132A (zh) | 一种基于非结构化稀疏的卷积神经网络加速系统 | |
US20230376733A1 (en) | Convolutional neural network accelerator hardware | |
CN115328440A (zh) | 一种基于2d脉动阵列的通用稀疏矩阵乘法实现方法及装置 |
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 |