【技术实现步骤摘要】
一种稀疏权重Fused
‑
Layer卷积加速器结构的FPGA实现方法
[0001]本专利技术涉及数字集成电路、电子信息与深度学习领域,特别是一种基于FPGA的Fused
‑
Layer稀疏神经网络加速器。
技术介绍
[0002]近年来,卷积神经网络(CNN)已经成为计算机视觉任务中最流行和有效的深度学习算法之一,因其准确率明显高于传统算法,在图像分类、人脸识别和语义分割等领域得到了广泛的应用。伴随着算法模型的迭代与发展,网络参数和模型运算量也在大幅度增加,这使其难以应用在资源、功耗受限且具有实时性要求的场景中。因此,高能效运行CNN模型的加速器架构设计技术备受业界关注,具有良好性能和设计灵活性的现场可编程门阵列(FPGA)作为加速CNN的硬件平台得到了广泛应用和推广。
[0003]传统的CNN加速器设计方法专注于创建统一的片上结构迭代地运算每个CNN层,由于层间数据量过大无法存储在芯片上,这样的加速器设计必须使用片外存储器来存储中间数据,由此不可避免地带来大量片外数据传输,研究表明:CNN加速器的能量消耗很大程度上来源于片外存储器访问。针对这一现象,提出一种融合层(Fused
‑
Layer)卷积神经网络加速器结构,其无需一次性完成一个卷积层的全部运算,而是将多个卷积层的计算在片上融合,从而避免了中间数据在片外内存的存储与访问。由于这种方法无法一次性地完成单个卷积层的全部运算,故需要频繁使用不同卷积层的多个卷积核,如果不能将卷积核在片上存储,将导致可观的权重片 ...
【技术保护点】
【技术特征摘要】
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的二维区域数据进行求最大值或平均值的操作,受到读取数据顺序到限制,可将其分为两个一维池化模块来提升池化操作的效率,首先对不同列的输出数据进行一维池化操作,将输出结果交给第二个维度的池化模块对不同行的数据进行一维池化操作,从而得到二维池化结果,模块内部配置多个多路选择器或加法器模块实现选择最大值或运算平均值功能;为避免因池化层而多产生一个中间数据缓存占据片上存储空间,将池化层模块配置在卷积层后直接获取卷积层的输出数...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。