一种稀疏权重Fused-Layer卷积加速器结构的FPGA实现方法技术

技术编号:36604699 阅读:18 留言:0更新日期:2023-02-04 18:24
本发明专利技术公开了一种稀疏权重Fused

【技术实现步骤摘要】
一种稀疏权重Fused

Layer卷积加速器结构的FPGA实现方法


[0001]本专利技术涉及数字集成电路、电子信息与深度学习领域,特别是一种基于FPGA的Fused

Layer稀疏神经网络加速器。

技术介绍

[0002]近年来,卷积神经网络(CNN)已经成为计算机视觉任务中最流行和有效的深度学习算法之一,因其准确率明显高于传统算法,在图像分类、人脸识别和语义分割等领域得到了广泛的应用。伴随着算法模型的迭代与发展,网络参数和模型运算量也在大幅度增加,这使其难以应用在资源、功耗受限且具有实时性要求的场景中。因此,高能效运行CNN模型的加速器架构设计技术备受业界关注,具有良好性能和设计灵活性的现场可编程门阵列(FPGA)作为加速CNN的硬件平台得到了广泛应用和推广。
[0003]传统的CNN加速器设计方法专注于创建统一的片上结构迭代地运算每个CNN层,由于层间数据量过大无法存储在芯片上,这样的加速器设计必须使用片外存储器来存储中间数据,由此不可避免地带来大量片外数据传输,研究表明:CNN加速器的能量消耗很大程度上来源于片外存储器访问。针对这一现象,提出一种融合层(Fused

Layer)卷积神经网络加速器结构,其无需一次性完成一个卷积层的全部运算,而是将多个卷积层的计算在片上融合,从而避免了中间数据在片外内存的存储与访问。由于这种方法无法一次性地完成单个卷积层的全部运算,故需要频繁使用不同卷积层的多个卷积核,如果不能将卷积核在片上存储,将导致可观的权重片外访问量,背离该结构设计的核心思想。因此,该结构选择将权重存储在片上,片上有限的存储资源则成为模型部署的一大限制。
[0004]随着神经网络的规模增大,模型压缩逐渐成为模型部署过程中的关键步骤,网络剪枝即神经网络稀疏化在保证网络精度的同时取得了良好的模型压缩效果。网络稀疏性主要体现在特征和权重两个方面:神经网络中使用的线性整流函数使得小于零的特征值置为零;根据模型参数设置阈值对网络权重进行剪枝将小于阈值的数值置为零。其中,权重剪枝将大幅度减少模型尺寸,缓解存储资源有限导致的部署压力。
[0005]如果能够基于稀疏神经网络在FPGA上部署Fused

Layer神经网络加速器结构,将避免权重片外存储引起的片外访问,凸显Fused

Layer结构的数据传输优势。

技术实现思路

[0006]本专利技术的目的在于针对现有技术利用稀疏神经网络方案解决Fused

Layer结构神经网络加速器权重存储问题,提出了一种稀疏权重Fused

Layer卷积加速器结构的FPGA实现方法。该方法实现了Fused

Layer卷积运算结构,完成多层网络运算模块在FPGA上的流水线部署,减少中间数据片外传输;同时,采用稀疏权重索引技术部署稀疏卷积神经网络以降低片上存储器资源压力,从而将Fuse

Layer涉及到的稀疏权重及其索引全部存储在片上,避免了权重的片外传输,降低系统功耗。
[0007]本专利技术为实现上述技术目的,所实施的技术方案为:
[0008]一种稀疏权重Fused

Layer结构卷积加速器结构的FPGA实现方法,其特征在于,包括:数据载入模块和输入缓存、中间数据缓存、权重及其索引缓存、4个卷积层运算模块、1个池化层运算模块、稀疏权重索引模块、输出缓存和数据存储模块。
[0009]所述基于FPGA的Fused

Layer结构型稀疏神经网络加速器的运行方式为:在FPGA初始化的过程中将稀疏权重和索引存储在片上缓存,通过AXI

Lite总线向配置寄存器写入加速器的运行参数和DMA的配置参数,使用AXI

Stream总线通过DMA从片外存储器读取输入特征图,使用4个卷积运算模块和1个池化层运算模块完成金字塔结构的卷积主体运算,运算结果存储在输出缓存,使用数据存储模块通过AXI

Stream总线和DMA将数据传输到片外存储器。
[0010]所述的稀疏权重Fused

Layer卷积加速器结构通过AXI总线与片外存储器相连,所述数据载入模块使用AXI

Stream总线协议通过DMA从片外存储器读取输入特征图并加载到输入缓存,由于采取了Fused

Layer结构,不需要一次性完成整张特征图的运算。相较于传统神经网络加速器,加入了输出行、输出列的特征图读取维度,即每次只需要读取一次金字塔运算所需要的数据,读取顺序为:输入通道、输入列、输入行、再到输出列、输出行;所述数据存储模块使用AXI

Stream总线协议通过DMA将输出缓存中的数据存储到片外存储器,存储顺序与读取顺序相同。
[0011]所述的权重及其索引缓存使用片上ROM实现,因为部署好的加速器所需要的全部权重是固定的,无需修改,可以在FPGA初始化过程中将量化后的权重及其索引存储在片上ROM中,其中权重和索引将分别存储在不同缓存中。以VGG

Net16的卷积层2为例,卷积核权重尺寸为64*3*3*64*2Byte=72KB;如果采用剪枝后的稀疏化权重进行存储,若剪枝率为30%,其尺寸为64*3*3*64*0.3*2Byte=21.6KB,稀疏权重索引尺寸为64*3*3*64*0.3*(6+4)bit=13.5KB,合计35.1KB。该卷积层权重压缩后的尺寸为原尺寸的48.8%。
[0012]所述的中间数据缓存使用片上BRAM实现,其在运算过程中存储前一卷积层的输出特征数据并为下一个卷积层提供输入数据,中间数据缓存数量为3个,即每两个卷积层模块之间配置一个中间数据缓存。
[0013]所述稀疏权重索引模块从权重及其索引缓存读取稀疏权重及其对应索引,索引经过对应规则解码,用于计算出该权重对应特征的位置,并根据该位置参数从载入数据缓存或中间数据缓存中读取特征,用于完成与该权重进行的卷积运算。
[0014]所述卷积运算模块包含T
m
个卷积运算子单元,其中T
m
=输出通道数量/输出通道Tile数量。每个卷积运算子单元包括T
n
个乘累加单元,其中T
n
=输入通道数量/输入通道Tile数量,使用片上DSP资源实现。其中Tile是指将输入通道和输出通道进行分组,每一组数据称为一个Tile,因为完整输入通道和输出通道数量过于庞大,对其进行并行度展开无法实现,而Tile内数据可以同时参与运算,提升加速器运算并行度。因为采取了输入通道与输出通道Tile循环展开策略,且为了避免乘法运算结果大量缓存无法完成累加,数据替换选择输入切换优先的卷积窗不变策略:1.卷积窗对应位置的输入通道分为T组依次送入运算单元完成乘累加运算;2.遍历卷积核内所有位置,完成同一输出位置的所有运算并与本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种稀疏权重Fused

Layer卷积加速器结构的FPGA实现方法,其特征在于,包括:数据载入模块和输入缓存、中间数据缓存、权重及其索引缓存、4个卷积层运算模块、1个池化层运算模块、稀疏权重索引模块、输出缓存和数据存储模块;稀疏权重Fused

Layer卷积加速器结构的运行方式为:在FPGA初始化过程中,将稀疏权重及索引存储在片上ROM中,PS端通过AXI

Lite总线向配置寄存器写入加速器的运行参数和DMA的配置参数;数据载入模块使用AXI

Stream总线通过AXI

DMA连接到PS端的AXI

HP端口,从片外存储器DDR载入特征图数据到输入缓存;第一个卷积层运算模块从片上ROM中读取稀疏权重及其索引,通过模块内的特征索引模块从输入缓存中读取对应特征到运算模块内,通过乘累加阵列和加法树完成卷积运算并将结果输出到中间数据缓存;如果该卷积层后包括池化操作,将池化操作合并入卷积运算模块;后续的卷积层运算模块从中间数据缓存读取输入特征,在完成4层卷积运算后将结果存入输出缓存;数据存储模块使用AXI

Stream总线通过AXI

DMA连接到PS端的AXI

HP端口,将输出数据写回片外存储器DDR;稀疏权重Fused

Layer卷积加速器结构通过AXI总线与片外存储器相连,数据载入模块使用AXI

Stream总线协议通过DMA从片外存储器读取输入特征图并加载到输入缓存,加入了输出行、输出列的特征图读取维度,即每次只需要读取一次金字塔运算所需要的数据,读取顺序为:输入通道、输入列、输入行、再到输出列、输出行;数据存储模块使用AXI

Stream总线协议通过DMA将输出缓存中的数据存储到片外存储器,存储顺序与读取顺序相同;权重及其索引缓存使用片上ROM实现,在FPGA初始化过程中将量化后的权重及其索引存储在片上ROM中,其中权重和索引将分别存储在不同缓存中;中间数据缓存使用片上BRAM实现,其在运算过程中存储前一卷积层的输出特征数据并为下一个卷积层提供输入数据,中间数据缓存数量为3个,即每两个卷积层模块之间配置一个中间数据缓存;卷积运算模块包含T
m
个卷积运算子单元,其中T
m
=输出通道数量/输出通道Tile数量;每个卷积运算子单元包括T
n
个乘累加单元,其中T
n
=输入通道数量/输入通道Tile数量,使用片上DSP资源实现;针对输入通道和输出通道进行分组后得到的每一组数据称为一个Tile;池化层模块可实现最大值池化或平均值池化功能,读取数据顺序为:输出通道、输出列、输出行;池化层针对2*2的二维区域数据进行求最大值或平均值的操作,受到读取数据顺序到限制,可将其分为两个一维池化模块来提升池化操作的效率,首先对不同列的输出数据进行一维池化操作,将输出结果交给第二个维度的池化模块对不同行的数据进行一维池化操作,从而得到二维池化结果,模块内部配置多个多路选择器或加法器模块实现选择最大值或运算平均值功能;为避免因池化层而多产生一个中间数据缓存占据片上存储空间,将池化层模块配置在卷积层后直接获取卷积层的输出数...

【专利技术属性】
技术研发人员:袁海英黎明昊
申请(专利权)人:北京工业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1