CN113283587B - 一种Winograd卷积运算加速方法及加速模块 - Google Patents
一种Winograd卷积运算加速方法及加速模块 Download PDFInfo
- Publication number
- CN113283587B CN113283587B CN202110588325.6A CN202110588325A CN113283587B CN 113283587 B CN113283587 B CN 113283587B CN 202110588325 A CN202110588325 A CN 202110588325A CN 113283587 B CN113283587 B CN 113283587B
- Authority
- CN
- China
- Prior art keywords
- matrix
- convolution
- convolution kernel
- winograd
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000001133 acceleration Effects 0.000 title claims abstract description 36
- 239000011159 matrix material Substances 0.000 claims abstract description 221
- 238000004364 calculation method Methods 0.000 claims abstract description 71
- 238000009825 accumulation Methods 0.000 claims abstract description 36
- 230000009466 transformation Effects 0.000 claims abstract description 33
- 238000006243 chemical reaction Methods 0.000 claims description 36
- 238000003491 array Methods 0.000 claims description 24
- 230000001131 transforming effect Effects 0.000 claims description 6
- 238000013461 design Methods 0.000 description 31
- 238000013527 convolutional neural network Methods 0.000 description 18
- 238000007792 addition Methods 0.000 description 16
- 235000019800 disodium phosphate Nutrition 0.000 description 16
- 230000008569 process Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000002474 experimental method Methods 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 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
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)
- Complex Calculations (AREA)
Abstract
本发明提供一种Winograd卷积运算加速方法及加速模块,对于非3×3形状的卷积运算,使用基于步长的卷积核拆分方法将输入矩阵拆分或者填充为4×4的输入矩阵,将卷积核矩阵拆分或者填充为3×3的卷积核矩阵;使用卷积核转换矩阵G和输入矩阵转换矩阵BT对3×3的卷积核矩阵和4×4的输入矩阵分别进行Winograd变换,得到变换后的卷积核矩阵U和输入矩阵V;对变换后的卷积核矩阵U中的元素uξ,v按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z;对矩阵Z进行Winograd变换,获得卷积运算的输出矩阵。本发明不但能合理利用片上资源、降低计算复杂度,且可以兼容大多数尺寸的卷积运算。
Description
技术领域
本发明涉及卷积神经网络计算,具体一种Winograd卷积运算加速方法及及加速模块。
背景技术
卷积神经网络(CNN)在图像分类和语音识别中得到了广泛的应用,随着应用的数据规模越来越大,其网络模型的计算复杂度也在不断地提高,近年来,包括自动驾驶在内的诸多应用对CNN提出了更高的实时性需求。据统计,卷积计算占据了CNN总运算量的99%,因此,加速卷积层的运算是提高卷积神经网络计算速度的关键所在。
高灵活性、低成本、短设计周期使得基于FPGA的CNN加速器设计更适合部署在移动设备中。根据实现的卷积算法的类型,可以将现有的基于FPGA的加速器分为三类:
1)基于FPGA并行性的加速设计:第一类设计直接利用了空间卷积计算的并行性,在每个周期内,在大量的DSP块阵列上执行大量的乘累加操作,此类设计是最直接且最为广泛应用的设计方法。
2)基于快速卷积算法的加速器设计:空间分布域里分布矩阵的卷积运算计算,事实上等价于频次域里2个分布矩阵与之对应元素相乘,因此,第二类设计通过转换算法减少了加速器对乘累加操作的需求,典型的卷积算法包括FFT、FFA和Winograd。其中,FFT需要将卷积层的滤波器映射到和图像一样长宽的频域空间才能做点乘,增大了内存带宽需求,仅有在处理大尺寸的卷积核时才有显著的速率优势。FFA的灵活性较弱,无法支持不同的步数和卷积核大小。Winograd变换更具灵活性,且更适合2×2、3×3等小尺寸卷积核,而小尺寸卷积核是截至当前,CNN设计的主要设计趋势。
3)基于网络模型压缩的加速设计:在计算时,将数值为0或者接近0的权重参数参与的运算去除,只保留对推理结果产生作用的连接,将其称之为稀疏。根据在VGG16模型上进行的实验,经过稀疏后,网络模型的参数量大幅度减少,VGG16模型的计算量缩减了83.6%,个别层的参数量只有原来的4%,同时加速器的分类正确性几乎没有损失。
以上三类加速方法都是用大量的片上DSP资源完成乘法运算,因此,可以说加速器的计算能力主要由片上的LUT与DSP资源决定。由于DSP资源成本较高,各平台所装载的该资源也相对较少。对于8-bit量化的网络模型来说,假设一个尺寸为3×3的卷积核,根据实验,一次卷积运算所需LUT与DSP资源的比例为7.1/1,而片上所存的LUT与DSP资源的比例常为330/1~130/1。因此,传统的设计方法造成了片上资源利用的失衡,当DSP资源耗尽时,片上的其他资源并未得到充分利用。同时卷积计算对DSP的过度使用极大地限制了其余功能模块的正常工作。DSP资源是目前基于FPGA的卷积神经网络加速器的计算速度的决定性因素,现有研究采用了多种方法来改善片上资源利用情况,表1显示了几种最先进的加速器的片上资源利用情况,其中,Suda等人的设计为第一类设计,Ma与Suda等人对卷积展开循环,有效地改善了片上资源利用率;WRA是基于快速卷积算法Winograd的加速器,为第二类设计;ABM-SpConv利用了稀疏卷积神经网络,对权重参数的存储重新进行编码,在硬件计算时有效地抛弃了关于0值的计算,为第三类方法。定义U(U=LUT利用率/DSP利用率),该参数可以更直观地表现片上资源利用情况。
表1几个典型加速器的片上资源利用情况
由表1可以看出,现有的设计已经在尽量的改善逻辑资源和DSP资源之间的不平衡利用的情况,但没有办法做到完全消除这种情况。实际应用中,如机器人、智能监控/安防系统和自动驾驶等,CNN加速器往往需要与其他功能单元一起使用,这些功能单元同样对DSP资源有一定的需求。当一个应用的所有功能单元都集成在一个设备上时,由于对DSP资源的竞争,系统的整体性能会严重下降,该现象在DSP资源有限的低端嵌入式FPGA平台上表现得尤为明显。针对FPGA片上资源利用不平衡的设计现状,发明人课题组曾提出一种无乘法的卷积加速方案(MF-Conv),可以消除卷积运算在filter_loop中的乘法运算,然而该方案的硬件结构是由卷积核尺寸决定的,比如3×3的MF-Conv硬件加速单元无法兼容5×5的卷积运算。从表2可以看出,目前CNN的设计呈现出卷积核尺寸多样化的趋势,因此MF-Conv存在一定的局限性。
表2几个典型CNN网络结构及其参数量统计
发明内容
针对现有技术中存在的问题,本发明提供一种Winograd卷积运算加速方法及加速模块,不但能合理利用片上资源、降低计算复杂度,且可以兼容大多数尺寸的卷积运算。
本发明是通过以下技术方案来实现:
一种Winograd卷积运算加速方法,包括:
对于非3×3形状的卷积运算,使用基于步长的卷积核拆分方法将输入矩阵拆分或者填充为4×4的输入矩阵,将卷积核矩阵拆分或者填充为3×3的卷积核矩阵;
使用卷积核转换矩阵G和输入矩阵转换矩阵BT对3×3的卷积核矩阵和4×4的输入矩阵分别进行Winograd变换,得到变换后的卷积核矩阵U和输入矩阵V;
对变换后的卷积核矩阵U中的元素uξ,v按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z;
对矩阵Z进行Winograd变换,获得卷积运算的输出矩阵。
优选的,对于Winograd F(2×2,3×3),输入矩阵转换矩阵BT的值如下:
转换后的输入矩阵表示如下:
V=BTdB (6)
优选的,对于Winograd F(2×2,3×2),卷积核转换矩阵G的值如下:
转换后的卷积核矩阵表示如下:
U=GgGT (5)
进一步的,对变换后的卷积核矩阵U中的元素uξ,v按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z具体是:
步骤1,假设转换后的卷积核矩阵U是量化的定点格式,保持在10-bit精度,对于转换后的卷积核矩阵U中的每一个权重uξ,v,遍历比较其每一个比特位,标记出所有的非零元素coefq,ξ,v;根据所标记的ξ、v和q,将对应的输入矩阵V中的vξ,v赋给vq,ξ,v,未被标记处用0补上;
步骤2,将产生的vq,ξ,v元素根据q值的不同分类,分为10类,对于每一个q值,将被归予对应分类的所有vξ,v,q累加运算,获得10个累加和accq;
步骤3,将每q值对应分类下的累加和accq乘以2q,获得10个部分积partialq。
步骤4,对10个部分积partialq再次进行累加运算,以获得输出元素zξ,v,组成矩阵Z;
步骤5,利用累加运算对矩阵Z进行变换,得到输出矩阵Y。
进一步的,所有的累加运算采用进位保留加法算法完成。
一种Winograd卷积运算加速模块,包括:
输入矩阵转换单元:用于通过输入转换矩阵B与BT将输入矩阵In进行Winograd变换,得到变换后的输入矩阵V;
卷积核矩阵转换单元:用于通过卷积核转换矩阵G与GT将卷积核矩阵F进行Winograd变换,得到变换后的卷积核矩阵U;
F(2×2,3×3)计算单元:对变换后的卷积核矩阵U中的元素uξ,v按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z;
输出矩阵转换单元:用于通过输出转换矩阵A将矩阵Z进行Winograd变换,得到卷积运算的输出矩阵;
优选的,输入矩阵转换单元由4+4个Tuniti阵列构成;4个Tuniti阵列计算输入矩阵转换矩阵BT和输入矩阵In的乘法,产生输入矩阵转换单元的中间结果;另外4个Tuniti阵列计算该中间结果与矩阵B乘法,输出转换后的输入矩阵V。
优选的,卷积核矩阵转换单元由3+4个Tunitf阵列构成;3个Tunitf阵列计算卷积核转换矩阵G和卷积核矩阵F的乘法,产生卷积核矩阵转换单元的中间结果;然后使用4个Tunitf阵列来计算中间结果与矩阵GT乘法,完成卷积核矩阵F的转换,输出转换后的卷积核矩阵U。
优选的,F(2×2,3×3)计算单元包括8个MF-PE结构,MF-PE结构包括:三个比较器组阵列、一个累加器阵列、一个流水线寄存器和一个累加求和模块;
三个比较器组阵列遍历卷积核矩阵U中的每一个元素,每个比较器组阵列包含10个1-bit比较器;比较器组阵列根据卷积核矩阵U中的非0元素的位置对信号ξ、v和q进行标记,并将对应的输入矩阵V中的vξ,v赋给vq,ξ,v,未被标记处将0赋给vq,ξ,v,然后发送到累加器阵列;累加器阵列包含10个累加器,一个累加器完成q值相同的vq,ξ,v的累加,获得10个累加结果accq;流水线寄存器将累加结果accq向左移动q位,获得10个移位结果partialq;
累加求和模块对10移位结果partialq进行累加操作,获得矩阵Z中的8个元素。
优选的,累加器和累加求和模块均采用基于进位保留加法算法的电路结构。
与现有技术相比,本发明具有以下有益的技术效果:
本发明使用基于步长的卷积核拆分方法(SCDM)将不同尺寸的卷积核分解或者填充成若干个3×3的子模块,即设计形状固定的F(2×2,3×3),是一个高能效的形状固定的Winograd F(2×2,3×3)卷积运算加速方法,该方法可以兼容大多数尺寸的卷积运算。本发明采用Winograd F(2×2,3×3)完成卷积运算,使用MF-Conv完成卷积运算中的乘累加步骤,而MF-Conv对变换后的卷积核矩阵U中的元素uξ,v按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z,即MF-Conv又将乘累加运算转换为累加运算与移位运算,充分利用片上LUTs资源;因此,本发明通过将Winograd对卷积运算row_loop和col_loop中乘法运算量的缩减与MF-Conv对卷积运算filter_loop中乘法运算的消除相结合,最大程度的降低计算复杂度。
本发明加速模块采用形状固定的F(2×2,3×3),可以兼容大多数尺寸的卷积运算,通过将Winograd卷积和MF-Conv操作相结合,最大程度的降低计算复杂度,充分利用片上资源。
进一步的,因为MF-Conv架构可以将所有的乘累加操作转换为了累加操作和移位操作,其中累加操作的计算轨迹同样是固定的,因此本发明使用了MF-Conv的设计思想,提出了固定结构MF-PE的设计(将一个MF-Conv单元称为MF-PE)。本发明所使用的加速器架构的关键路径原本在于卷积的乘累加运算,通过MF-PE的设计使得加速器的关键路径由累加器决定。Winograd F(2×2,3×3)卷积运算的固定架构可以摆脱传统的使用加法器单元逐级进行累加的电路结构,使用固定的进位保留加法器(CSA)电路完成计算。基于CSA的累加器电路极大的提高了加速器的时钟频率,吞吐率也随时钟频率的增加而增加。CSA电路结构与加法器的面积相近,但其不具有横向的数据连接通路,因此计算延时极低。通过以上对Winograd F(2×2,3×3)运算单元、MF-PE和累加器三个层级的计算单元的设计,最大程度的缩短了计算所需的延时。对加速器的实现结构表明本发明实现了高速、高能量效率的加速器设计。
附图说明
图1为本发明Winograd F(2×2,3×3)卷积加速硬件架构;
图2为MF-PE硬件结构;
图3为输入矩阵转换单元电路结构;
图4为卷积核矩阵转换单元电路结构;
图5为CSA的计算竖式;
图6为基于CSA的累加器电路结构。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明提出的基于比特精度权重拆分的Winograd F(2×2,3×3)卷积加速方法,介绍如下:
将二维Winograd的卷积过程表示为矩阵形式:
Y=AT[(GgGT)⊙(BTdB)]A (1)
式中,g代表卷积核矩阵,d代表输入矩阵。
通过基于步长的卷积核拆分方法(SCDM),将所有的卷积窗口分解或填充成为了3×3格式。对于非3×3形状的卷积运算,使用基于步长的卷积核拆分方法将输入矩阵拆分或者填充为4×4的输入矩阵,将卷积核矩阵拆分或者填充为3×3的卷积核矩阵;
对于固定形状的Winograd F(2×2,3×3)运算,其卷积核转换矩阵G和输入矩阵转换矩阵BT有着固定的格式,因此本发明使用固定形状的共享部分运算单元的电路结构对每个卷积核矩阵和输入矩阵分别进行Winograd变换,得到变换后的卷积核矩阵U和输入矩阵V;
对于Winograd F(2×2,3×2),输入矩阵转换矩阵BT的值如下:
对于Winograd F(2×2,3×2),卷积核转换矩阵G的值如下:
对于Winograd F(2×2,3×2),输出矩阵转换矩阵AT的值如下,
将转换后的卷积核矩阵表示如下:
U=GgGT (5)
将转换后的输入矩阵表示如下:
V=BTdB (6)
此时,公式(1)可表示为如下形式:
Y=AT[U⊙V]A (7)
片上卷积加速的关键在于加速乘累加操作,根据以上推理,乘累加操作集中在公式(7)中的AT[U⊙V]一项中。为了直观地描述所提出的卷积加速方法,这里将引入两个新的符号M和Z来表示乘累加操作中的关键步骤,此时,公式(7)的计算过程可以拆解为以下形式:
M=U⊙V (8)
Z=AT[U⊙V]=ATM (9)
基于新的符号变量,Winograd算法可以写成如下的矩阵形式:
Y=AT[U⊙V]A=ZA (10)
现有研究表明,用8-bit量化的权重数据对加速器的推理性能进行测试,其分类的正确率相比于浮点数运算下降不到1%,因此大多数的硬件加速器采用8-bit的权重量化方案。假设3×3卷积核中的所有权重数据都为(1111_1111)2的极限值,根据公式(5)可以得到转换后的权重不会超过10-bit。因此,转换后的卷积核矩阵U的权重元素u是量化的定点格式,保持在10-bit精度。如公式(11)所示,每一个u可以分解成10对2q的累加和,其中,q的取值范围为0至9。使用coefq来表示转换后的权重,则10-bit量化的权重元素uξ,v在硬件上的表示形式为[coef9,ξ,v coef8,ξ,v … coef1,ξ,v coef0,ξ,v],在数学上的表现形式如公式(11)所示:
uξ,v表示该元素处于转换后的卷积核矩阵U中(ξ,v)的位置,coefq,ξ,v表示该值为uξ,v中的第q个比特位上的数值。
⊙表示两个矩阵中的元素对应位置相乘,因此,矩阵M中的元素m可以表示为:
基于公式(12),定义一个新的符号变量vq,ξ,v:
vq,ξ,v=coefq,ξ,v·vξ,v (13)
转换后的卷积核矩阵U和转换后的输入矩阵V是固定的4×4形状的矩阵,因此,矩阵M是固定的4×4形状的矩阵,矩阵Z是固定的2×4形状的矩阵。矩阵Z中的每个元素由矩阵M中的三个元素通过加法计算而获得。因此,矩阵Z中的每个元素z的计算公式如下:
输出矩阵Y中的每个元素y的计算公式如下:
y11=z11+z12+z13 (22)
y12=z12-z13-z14 (23)
y21=z21+z22+z23 (24)
y22=z22-z23-z24 (25)
具体的,通过以下七个步骤可以得到本发明所提出的Winograd F(2×2,3×3)卷积运算加速方法的计算结果:
1、使用基于步长的卷积核拆分方法(SCDM)将不同形状的卷积运算分解或者填充成若干3×3的子模块,输入给一个或者多个Winograd F(2×2,3×3)卷积运算加速单元。对于被分解的卷积运算,对Winograd F(2×2,3×3)卷积运算加速单元的计算结果进行求和可以获得一个和原计算等价的计算结果;对于被填充的卷积运算,Winograd F(2×2,3×3)卷积运算加速单元的计算结果和原计算等价。SCDM旨在通过一个固定形状的计算单元完成大多数类型的卷积运算。
2、使用卷积核转换矩阵G和输入矩阵转换矩阵BT,对每个卷积核矩阵和输入矩阵进行变换,分别获得所需要的卷积核矩阵U和输入矩阵V。
3、定义3×3×10个vq,ξ,v元素,对于转换后的4×4的卷积核矩阵U中的每一个权重uξ,v,遍历比较其每一个比特位,即u0,0[coef9,0,0 coef8,0,0 … coef1,0,0 coef0,0,0],u0,1[coef9,0,1 coef8,0,1 … coef1,0,1 coef0,0,1],…,至u3,3[coef9,3,3 coef8,3,3 … coef1,3,3coef0,3,3],标记出所有的非零元素coefq,ξ,v。根据所标记的ξ、v和q,将对应的输入矩阵V中的vξ,v赋给vq,ξ,v,未被标记处将0赋给vq,ξ,v,如公式(13)所示。
4、将步骤3所产生的3×3×10个vξ,v,q元素根据q值的不同分为10类,对于每一个q值,累加被归予当前分类的所有vq,ξ,v,获得10个累加和accq。
5、将每q值对应分类下的累加和accq乘以2q,对应到计算机的计算形式则是将每q值对应分类下的累加和accq左移q位,获得10个部分积partialq。
6、对步骤5移位计算获得的结果再次进行累加,步骤3~6联合完成公式(14)-(21)的计算任务,以获得当前Winograd F(2×2,3×3)计算单元的输出特征图元素zξ,v,组成矩阵Z。
7、利用累加运算电路对步骤6得到的矩阵Z进行变换,完成公式(22)-(25)的计算任务,最后得到卷积结果即输出矩阵Y。
迭代地重复步骤1~7,则可生成所有卷积通道的输出矩阵Y。在进行三维Winograd卷积运算时,其计算结果相当于逐层做二维卷积运算F(m×m,r×r),然后将每层对应位置的结果相加。
本发明提出的基于比特精度权重拆分的Winograd F(2×2,3×3)卷积加速硬件结构(WRA-MF),0。卷积运算的拆分是在软件上完成的,将拆分结果直接存入片上BRAM。
WRA-MF包括:
1.F(2×2,3×3)计算单元:一共包含8个MF-PE,其结构如图2所示,完成公式(14)~(21)的计算任务。
2.输入矩阵转换单元:输入矩阵转换单元由4+4个Tuniti阵列构成,Tuniti阵列的具体结构如图3所示,每个Tunitf阵列包含4个加法运算,2个取反运算,其中共享了一个取反运算单元,完成公式(6)的计算任务;
3.卷积核矩阵转换单元:卷积核矩阵转换单元由3+4个Tunitf阵列构成,Tunitf阵列的具体结构如图4所示,每个Tunitf阵列包含3个加法运算,2个移位运算,1个取反运算,其中共享了一个加法器运算单元,完成公式(5)的计算任务;
4.输出矩阵转换单元:输出矩阵为三次加法运算,因此,输出矩阵转换单元直接使用累加器完成转换,将其命名为CSA_Tunito,完成公式(22)~(25)的计算任务。
由Winograd算法可知,输入矩阵转换(图1中PATH1.1所示)和卷积核矩阵转换(图1中PATH1.2所示)之间不存在数据相关,因此,PATH1.1和PATH1.2同时启动,分别从输入缓冲区和卷积核缓冲区读取数据,然后对读取的数据进行变换,分别得到变换后的输入矩阵V和卷积核矩阵U。F(2×2,3×3)计算单元包含8个MF-PE,每个MF-PE对应3组u和v,完成关于矩阵Z中的一个元素z的计算。矩阵Z被送给输出矩阵转换单元,完成输出矩阵Y的计算。
输入矩阵转换单元,用符号In来表示该转换单元的输入矩阵,其中的元素由in表示,首先使用4个Tuniti阵列来计算矩阵BT和输入矩阵In的乘法(即公式(6)中的BTd),如图3中(a)图所示,产生输入矩阵转换单元的中间结果;然后使用4个Tuniti阵列来计算中间结果与矩阵B乘法,如图3中(b)图所示,完成输入卷积核矩阵In的转换,输出转换后的4×4输入矩阵V(即btinb11、btinb21等元素)。
卷积核矩阵转换单元由3+4个Tunitf阵列构成,用符号F来表示该卷积核矩阵转换单元输入的卷积核矩阵,其中的元素由f表示,首先使用3个Tunitf阵列来计算矩阵G和矩阵F的乘法(即公式(5)中的Gg),如图4中(a)图所示,产生卷积核矩阵转换单元的中间结果;然后使用4个Tunitf阵列来计算中间结果与矩阵GT乘法,如图4中(b)图所示,完成卷积核矩阵F的转换,输出转换后的4×4卷积核矩阵U(即gfgt11、gfgtl2等元素,图4为了更清楚的描述计算流程,使用了计算过程对信号进行了重新定义,如gf表示该计算过程的第一步,gfg表示该计算过程的第二步),gfgt表示是哪一个Tunitf阵列的计算结果)。
F(2×2,3×3)计算单元一共包含8个MF-PE,包括:三个比较器组阵列;一个累加器阵列,包含10个累加器,将累加器命名为CSA_MF_Acc;一个流水线寄存器;一个累加求和模块,由累加器构成,将其命名为CSA_MF_Sum。为了对标于传统的8-bit精度量化,本发明所设计的方案需要对转换后的权重元素uξ,v进行10-bit精度的量化。由公式(14)~(21)可知,每个输出元素z需要三次MAC,因此,本发明设计了3个比较器组阵列来遍历卷积核矩阵U中的每一个元素,每个比较器组阵列包含10个1-bit比较器。比较器组阵列根据卷积核矩阵U中的非0元素的位置对信号ξ、v、和q进行标记,并将对应的输入矩阵V中的vξ,v赋给vξ,v,q,未被标记处将0赋给vξ,v,q,然后发送到累加器阵列,累加器被称之为CSA_MF_ACC。一个累加器完成q值相同的vξ,v,q的累加,获得10个累加结果accq。流水线寄存器将累加结果accq向左移动q位,获得10个移位结果partialq。同样地,流水线寄存器将MF-PE的计算分为两个阶段,实现了高效的流水线化设计。最后,对10个移位结果partialq进行累加操作,该累加求和模块被称为SCA_MF_SUM,获得输出矩阵Z中的一个元素z。8个MF-PE获得整个输出矩阵Z的元素。
在所有的累加运算中,采取基于CSA的电路结构完成累加。进位保留加法算法(CSA)是实际应用中最有效的累加算法。它的基本思想即将3个加数a、b和c的求和计算减少为2个加数的求和计算,其每比特产生的进位信号c’与和信号s’可以独立计算,因此,CSA的电路是没有任何横向进位传播连接的k个1-bitFA’的并行组合。CSA的主要功能是实现三个1-bit比特加数ai、bi和ci的求和,输出进位保留信号ci′与和保留信号si’:
ci′=(ai∩bi)∪(ai∩ci)∪(bi∩ci) (26)
其中:
s′+c′=a+b+c (27)
例如图5,令a=50,b=27,c=10,用竖式图来表示s’与c’的计算过程。
假设三个8-bit数相加,则相应的CSA的电路结构如图6所示。为了更清楚地表述信号之间对应相加的关系,图6中用FA阵列完成c’与s’的加法计算,在实际应用中,也可以用SPG单元与Carry Lookahead Generator单元完成。
由于输入信号a,b和c是并行执行的,因此,CSA的总延迟等于一个CSAi单元的延迟,即一个FA单元的延迟。通过该结构,使得三个加数相加得到两个加数所需要的延迟被缩短至一个FA单元的延迟,三个加数的累加求和所需要的总延迟被缩短至1个FA单元与1个加法器的总延迟。并且,一个CSAi单元的硬件开销与一个FA单元的硬件开销相当,使用CSA完成多个数的累加在有效降低计算延时的同时不会造成额外的代价。本发明统计了传统的卷积方案、基于稀疏化的ABM-SpConv方案、基于Winograd的WRA方案、基于权重拆分的FM-Conv方案以及本发明所提出的WRA-MF在8-bit量化下遍历所有卷积所需的运算量,如表3所示。为了进行公平的比对,以下所使用的三个卷积神经网络模型(LeNet、AlexNet、VGG)都是没有经过剪枝的模型。需要注意的是,ABM-SpCon在存储时丢弃了“0”的权值,而其他方案仍旧存储0值。在WRA和WRA-MF中,输入、卷积核、输出变换矩阵所带来的运算量也被考虑在内。在WRA-MF中,Sum Function被认为是9次加法运算。
表3典型CNN模型中加法、乘法运算量的统计
与传统卷积相比,在三种网络模型中,本发明所提出的WRA-MF分别用6.12×、3.94×和1.71×的加法运算代替了所有的乘法运算。与ABM-SpConv相比,WRA-MF将所有的乘法运算分别替换为6.70×、5.18×和2.60×的加法运算。WRA-MF对LeNet和AlexNet的卷积运算进行了拆分和填充,这带来了额外的计算量,因此在这两个模型上的收益不如VGG。WRA和WRA-MF方案都使用SCDM对卷积运算进行了拆分和填充,因此在三个模型上收益相同,用8.25×的加法操作替换了所有的乘法操作。与MF-Conv算法相比,WRA-MF的计算量分别为MF-Conv的88.9%、61.8%和62.3%。根据实验,8-bit乘法所需的片上资源是加法的8.9倍。因此,本发明提出的方法WRA-MF可以有效减小硬件资源的消耗。
为了对本发明所提出的卷积加速方法进行性能评估,本发明替换了WRA加速器中的卷积运算模块,通过对加速器整体的性能进行评估来分析本发明的所提出的加速单元的计算性能。
功耗、时钟频率、吞吐率、能效等性能是硬件加速器设计中最重要的指标,基于以上指标,本发明的实现结果如表4,以下所有的加速器都基于VGG16网络而设计的。
表4加速器性能对比
其中,R-Zhao所设计加速器是一个传统的推理加速器,没有使用任何的加速算法。与R-Zhao、ABM-SpConv和WRA加速器相比,本发明WRA-MF的逻辑资源使用分别提高了1.05×、2.11×和1.50×,这些额外的逻辑资源被用于替换掉了加速器中所有的DSP资源。由于BRAM主要用于存储网络模型的参数,因此本发明提出的WRA-MF在BRAM的使用上与R-Zhao和ABM-SpConv有所不同。由于WRA和提出的WRA-MF使用了相同的CNN模型,因此BRAM的使用情况相近。WRA-MF极大的提升了计算速度,与R-Zhao、ABM-SpConv和WRA相比,WRA-MF的时钟频率分别提高到3.33×、2.45×和1.18×。高的时钟频率使得WRA-MF的功耗非常大,与R-Zhao和WRA相比,分别增加到1.53×和1.49×。WRA-MF的吞吐量也有了极大的提升,与R-Zhao、ABM-SpConv和WRA相比,WRA-MF的吞吐率分别提高到19.44×、7.25×和1.41×。与R-Zhao和WRA的相比,WRA-MF的能源效率提高了12.75×和1.20×。
本发明是一个高能效的形状固定的Winograd F(2×2,3×3)卷积运算加速器,该加速器可以兼容大多数尺寸的卷积运算。表2可见目前小卷积核是CNN的设计主流,且大多数CNN都包含尺寸为3×3的卷积计算,同时Winograd算法在3×3的卷积上取得的收益更好,因此,本发明使用基于步长的卷积核拆分方法(SCDM)将不同尺寸的卷积核分解或者填充成若干个3×3的子模块。将Winograd对卷积运算row_loop和col_loop中乘法运算量的缩减与MF-Conv对卷积运算filter_loop中乘法运算的消除相结合,最大程度的降低计算复杂度。通过对Winograd算法的数学分析,确定了其中乘累加操作的计算步骤,并通过对不用范围的乘累加操作的运算量的数学统计,选定了本发明中使用MF-Conv替代乘累加操作的范围。由于本发明的Winograd F(2×2,3×3)运算单元是固定的形状,因此可以相应的确定其中MF-Conv的形状,将Winograd F(2×2,3×3)运算单元中的MF-Conv单元称为MF-PE。MF-PE将所有的乘累加操作转换为了累加操作和移位操作,其中累加操作的计算轨迹同样是固定的,因此可以摆脱传统的使用加法器单元逐级进行累加的电路结构,使用固定的进位保留加法器(CSA)电路完成计算。CSA电路结构与加法器的面积相近,但其不具有横向的数据连接通路,因此计算延时极低。通过以上对Winograd F(2×2,3×3)运算单元、MF-PE和累加器三个层级的计算单元的设计,最大程度的缩短了计算所需的延时。本发明固定形状的Winograd F(2×2,3×3)卷积运算加速方法应用于基于FPGA的CNN加速器,充分挖掘了FPGA片上未充分利用的LUTs资源(用于完成除乘法运算的其余运算),探索了新的设计空间。基于LUTs的设计对功耗的消耗小于DSP,因此本发明所设计的加速器在能量效率方面也有所提升。
本发明主要特点:
1、使用基于步长的卷积核拆分方法(SCDM)将不同尺寸的卷积核与不同步数卷积运算分解填充成若干3×3的子模块,采用一个固定的Winograd F(2×2,3×3)卷积运算单元完成大多数类型的卷积运算。
2、由于计算机以2进制的形式进行计算,本发明对转换后的权重矩阵进行了比特精度的数据分解,以将所有的乘法操作转换为累加操作。
3、利用多级流水结构,有效地缩短了卷积计算的关键路径。
4、采用了基于CSA的累加器电路,有效的缩短了累加计算的路径延时,提高了计算效率。
本发明主要优点:
1、该方法消除了卷积运算中的乘法操作,将其转换为了累加操作和移位操作,有利于平衡FPGA片上资源利用。
2、通过特定的累加器电路的设计,缩短了数据的关键路径,提高了卷积计算的速度。
Claims (8)
1.一种Winograd卷积运算加速方法,其特征在于,包括:
对于非3×3形状的卷积运算,使用基于步长的卷积核拆分方法将输入矩阵拆分或者填充为4×4的输入矩阵,将卷积核矩阵拆分或者填充为3×3的卷积核矩阵;
使用卷积核转换矩阵和输入矩阵转换矩阵B T对3×3的卷积核矩阵和4×4的输入矩阵分别进行Winograd变换,得到变换后的卷积核矩阵U和输入矩阵V;
对变换后的卷积核矩阵U中的元素按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z;
对矩阵Z进行Winograd变换,获得卷积运算的输出矩阵Y;
矩阵Z中的每个元素z的计算公式如下:
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
输出矩阵Y中的每个元素y的计算公式如下:
(22)
(23)
(24)
(25)
其中,;/>表示该值为/>中的第q个比特位上的数值;/>表示该元素处于转换后的卷积核矩阵U中/>的位置,v=1,2,3,4;/>为转换后的输入矩阵V中的元素。
2. 根据权利要求1所述的Winograd卷积运算加速方法,其特征在于,对于Winograd F(2×2,3×3),输入矩阵转换矩阵的值如下:
(2)
转换后的输入矩阵表示如下:
(6)。
3. 根据权利要求1所述的Winograd卷积运算加速方法,其特征在于,对于Winograd F(2×2,3×2),卷积核转换矩阵的值如下:
(3)
转换后的卷积核矩阵表示如下:
(5)。
4.根据权利要求1所述的Winograd卷积运算加速方法,其特征在于,对变换后的卷积核矩阵U中的元素按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z具体是:
步骤1,假设转换后的卷积核矩阵U是量化的定点格式,保持在10-bit精度,对于转换后的卷积核矩阵U中的每一个权重,遍历比较其每一个比特位,标记出所有的非零元素;根据所标记的/>、/>和/>,将对应的输入矩阵V中的/>赋给/>,未被标记处用0补上;
步骤2,将产生的元素根据q值的不同分类,分为10类,对于每一个q值,将被归予对应分类的所有/>,获得10个累加和acc q;
步骤3,将每q值对应分类下的累加和acc q乘以2 q,获得10个部分积partial q;
步骤4,对10个部分积partial q再次进行累加运算,以获得输出元素,组成矩阵Z;
步骤5,利用累加运算对矩阵Z进行变换,得到输出矩阵Y。
5.根据权利要求4所述的Winograd卷积运算加速方法,其特征在于,所有的累加运算采用进位保留加法算法完成。
6.一种用于实现权利要求1所述方法的Winograd卷积运算加速模块的系统,其特征在于,包括:
输入矩阵转换单元:用于通过输入转换矩阵B与B T将输入矩阵In进行Winograd变换,得到变换后的输入矩阵V;
卷积核矩阵转换单元:用于通过卷积核转换矩阵与G T将卷积核矩阵F进行Winograd变换,得到变换后的卷积核矩阵U;
F(2×2,3×3)计算单元:对变换后的卷积核矩阵U中的元素按照比特级精度进行权重拆分,通过累加运算和移位运算得到矩阵Z;
输出矩阵转换单元:用于通过输出转换矩阵A将矩阵Z进行Winograd变换,得到卷积运算的输出矩阵;
F(2×2,3×3)计算单元包括8个MF-PE结构,MF-PE结构包括:三个比较器组阵列、一个累加器阵列、一个流水线寄存器和一个累加求和模块;
三个比较器组阵列遍历卷积核矩阵U中的每一个元素,每个比较器组阵列包含10个1-bit比较器;比较器组阵列根据卷积核矩阵U中的非0元素的位置对信号、/>和/>进行标记,并将对应的输入矩阵V中的/>赋给/>,未被标记处将0赋给/>,然后发送到累加器阵列;累加器阵列包含10个累加器,一个累加器完成/>值相同的/>的累加,获得10个累加结果acc q;流水线寄存器将累加结果acc q向左移动q位,获得10个移位结果partial q;
累加求和模块对10移位结果partial q进行累加操作,获得矩阵Z中的8个元素;
累加器和累加求和模块均采用基于进位保留加法算法的电路结构。
7.根据权利要求6所述的Winograd卷积运算加速模块的系统,其特征在于,输入矩阵转换单元由4+4个Tuniti阵列构成;4个Tuniti阵列计算输入矩阵转换矩阵B T和输入矩阵In的乘法,产生输入矩阵转换单元的中间结果;另外4个Tuniti阵列计算该中间结果与矩阵B乘法,输出转换后的输入矩阵V。
8.根据权利要求6所述的Winograd卷积运算加速模块的系统,其特征在于,卷积核矩阵转换单元由3+4个Tunitf阵列构成;3个Tunitf阵列计算卷积核转换矩阵G和卷积核矩阵F的乘法,产生卷积核矩阵转换单元的中间结果;然后使用4个Tunitf阵列来计算中间结果与矩阵G T乘法,完成卷积核矩阵F的转换,输出转换后的卷积核矩阵U。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110588325.6A CN113283587B (zh) | 2021-05-28 | 2021-05-28 | 一种Winograd卷积运算加速方法及加速模块 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110588325.6A CN113283587B (zh) | 2021-05-28 | 2021-05-28 | 一种Winograd卷积运算加速方法及加速模块 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113283587A CN113283587A (zh) | 2021-08-20 |
CN113283587B true CN113283587B (zh) | 2023-09-19 |
Family
ID=77282211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110588325.6A Active CN113283587B (zh) | 2021-05-28 | 2021-05-28 | 一种Winograd卷积运算加速方法及加速模块 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113283587B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114399036B (zh) * | 2022-01-12 | 2023-08-22 | 电子科技大学 | 一种基于一维Winograd算法的高效卷积计算单元 |
CN115329951B (zh) * | 2022-09-13 | 2023-09-15 | 北京工商大学 | 一种用于卷积神经网络快速卷积运算的fpga架构 |
CN115600062B (zh) * | 2022-12-14 | 2023-04-07 | 深圳思谋信息科技有限公司 | 卷积处理方法、电路、电子设备及计算机可读存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109190756A (zh) * | 2018-09-10 | 2019-01-11 | 中国科学院计算技术研究所 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
CN109359730A (zh) * | 2018-09-26 | 2019-02-19 | 中国科学院计算技术研究所 | 面向固定输出范式Winograd卷积的神经网络处理器 |
CN110533164A (zh) * | 2019-08-05 | 2019-12-03 | 西安交通大学 | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 |
CN110766128A (zh) * | 2018-07-26 | 2020-02-07 | 北京深鉴智能科技有限公司 | 卷积计算单元、计算方法及神经网络计算平台 |
CN110796229A (zh) * | 2018-08-01 | 2020-02-14 | 华为技术有限公司 | 一种实现卷积运算的装置及方法 |
CN112434801A (zh) * | 2020-10-30 | 2021-03-02 | 西安交通大学 | 一种按照比特精度进行权重拆分的卷积运算加速方法 |
KR20210037569A (ko) * | 2019-09-27 | 2021-04-06 | 삼성전자주식회사 | 컨볼루션 신경망 가속기 아키텍처를 위한 전력 효율적인 하이브리드 트래버설 장치 및 방법 |
WO2021082721A1 (zh) * | 2019-11-01 | 2021-05-06 | 中科寒武纪科技股份有限公司 | winograd卷积运算方法、装置、设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7634137B2 (en) * | 2005-10-14 | 2009-12-15 | Microsoft Corporation | Unfolded convolution for fast feature extraction |
US11449729B2 (en) * | 2018-11-08 | 2022-09-20 | Arm Limited | Efficient convolutional neural networks |
-
2021
- 2021-05-28 CN CN202110588325.6A patent/CN113283587B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110766128A (zh) * | 2018-07-26 | 2020-02-07 | 北京深鉴智能科技有限公司 | 卷积计算单元、计算方法及神经网络计算平台 |
CN110796229A (zh) * | 2018-08-01 | 2020-02-14 | 华为技术有限公司 | 一种实现卷积运算的装置及方法 |
CN109190756A (zh) * | 2018-09-10 | 2019-01-11 | 中国科学院计算技术研究所 | 基于Winograd卷积的运算装置及包含该装置的神经网络处理器 |
CN109359730A (zh) * | 2018-09-26 | 2019-02-19 | 中国科学院计算技术研究所 | 面向固定输出范式Winograd卷积的神经网络处理器 |
CN110533164A (zh) * | 2019-08-05 | 2019-12-03 | 西安交通大学 | 一种面向卷积神经网络加速器的Winograd卷积拆分方法 |
KR20210037569A (ko) * | 2019-09-27 | 2021-04-06 | 삼성전자주식회사 | 컨볼루션 신경망 가속기 아키텍처를 위한 전력 효율적인 하이브리드 트래버설 장치 및 방법 |
WO2021082721A1 (zh) * | 2019-11-01 | 2021-05-06 | 中科寒武纪科技股份有限公司 | winograd卷积运算方法、装置、设备及存储介质 |
CN112434801A (zh) * | 2020-10-30 | 2021-03-02 | 西安交通大学 | 一种按照比特精度进行权重拆分的卷积运算加速方法 |
Non-Patent Citations (2)
Title |
---|
Work-in-Progress: WinoNN: Optimising FPGA-based Neural Network Accelerators using Fast Winograd Algorithm;Xuan Wang etal.;《2018 International Conference on Hardware/Software Codesign and System Synthesis (CODES+ISSS)》;全文 * |
基于 Winograd 稀疏算法的卷积神经网络加速器设计与研究;徐 睿等;《计算机工程与科学》;第41卷(第9期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113283587A (zh) | 2021-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113283587B (zh) | 一种Winograd卷积运算加速方法及加速模块 | |
CN106909970B (zh) | 一种基于近似计算的二值权重卷积神经网络硬件加速器计算装置 | |
CN111062472B (zh) | 一种基于结构化剪枝的稀疏神经网络加速器及其加速方法 | |
Yepez et al. | Stride 2 1-D, 2-D, and 3-D Winograd for convolutional neural networks | |
CN109447241B (zh) | 一种面向物联网领域的动态可重构卷积神经网络加速器架构 | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN110543939B (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现装置 | |
CN110555516B (zh) | 基于FPGA的YOLOv2-tiny神经网络低延时硬件加速器实现方法 | |
CN113033794B (zh) | 基于深度可分离卷积的轻量级神经网络硬件加速器 | |
CN112434801B (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
CN111898733A (zh) | 一种深度可分离卷积神经网络加速器架构 | |
CN110851779B (zh) | 用于稀疏矩阵运算的脉动阵列架构 | |
Kala et al. | UniWiG: Unified winograd-GEMM architecture for accelerating CNN on FPGAs | |
Sun et al. | A high-performance accelerator for large-scale convolutional neural networks | |
Shahshahani et al. | Memory optimization techniques for fpga based cnn implementations | |
CN115018062A (zh) | 一种基于fpga的卷积神经网络加速器 | |
CN116502691A (zh) | 一种应用于fpga的深度卷积神经网络混合精度量化方法 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
CN117521752A (zh) | 一种基于fpga的神经网络加速方法及系统 | |
CN113158132A (zh) | 一种基于非结构化稀疏的卷积神经网络加速系统 | |
Tsai et al. | An on-chip fully connected neural network training hardware accelerator based on brain float point and sparsity awareness | |
Iliev et al. | Low latency CMOS hardware acceleration for fully connected layers in deep neural networks | |
Wong et al. | Low bitwidth CNN accelerator on FPGA using Winograd and block floating point arithmetic | |
CN110659014B (zh) | 乘法器及神经网络计算平台 | |
CN115640833A (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 |