技术领域
本发明涉及电子信息和深度学习领域,特别是一种基于FPGA的高效稀疏激活感知型神经网络加速器。
背景技术
卷积神经网络(CNN)近些年来已经成为计算机视觉任务中最流行和有效的算法之一,因其准确率明显高于传统算法,在图像分类,人脸识别,和语义分割等领域得到了广泛的应用。随着CNN网络模型规模不断扩大,需要更多的计算和存储资源,CPU由于其并行计算资源的不足,面对大规模的CNN运算已经现得力不从心,相反,具有大量流处理器的GPU成为了CNN训练和推理的主流平台,但是其运行CNN时高能耗的缺陷无法避免。FPGA作为一种可编程的逻辑器件,其不仅具有较高的灵活性可以适应各种网络结构,强大的逻辑计算资源和和其较高的能源效率也使其成为了运行CNN的很有前途的硬件平台。
在深度CNN中,其计算量是十分巨大的,这些运算的激活和权重很大一部分都为0,通过利用这些稀疏性,可以在不降低网络预测精度的前提下提升大规模网络的推理性能。其中激活的稀疏是在推理过程中产生的,特别是现代卷积神经网络中大规模使用的矫正线性单元,但是与权重稀疏不同的是,推理时产生的稀疏位置很难在训练时进行控制,这就造成现有的利用稀疏激活神经网络加速器方案对稀疏激活的利用率较为低下。
发明内容
本发明的目的在于针对现有技术利用稀疏激活神经网络加速器方案对稀疏激活的利用率较为低下的不足,提出了一种基于FPGA的稀疏激活感知型神经网络加速器,该加速器实现了较高的片上数据复用,同时使用的数据分配方式减少功耗并对稀疏激活中的0值实现了高效跳过。
本发明为实现上述技术目的,所实施的技术方案为:
一种基于FPGA的稀疏激活感知型神经网络加速器,其特征在于,包括:读命令发生器、数据分配器、T
所述读命令发生器用于向外部总线发送读请求寻址片外存储器存储的激活和权重数据,其读请求按照T
所述数据分配器,用于将片外存储器读入的数据以输入通道为单位分配给运算子通道,内部维持1个输入通道的计数器,在输入通道为Chin的情况下,计数器的溢出值为ceil(Chin/T
所述运算子通道包含片上激活和权重缓存、地址发生器、应答器、稀疏感知器和非0缓存,它接收到的数据首先存储在权重和激活的片上缓存内,片上缓存由FPGA中的blockram构成,激活地址发生器产生运算所需激活的地址,经过应答器应答确认数据已读入后,从激活缓存输出T
所述乘累加阵列接收运算子通道送过来的数据,包含T
所述由T
可选地,所述读命令发生器寻址内部维持两个输入通道计数器,计数器A和计数器B,在输入通道为Chin的情况下,计数器A的溢出值为ceil(Chin/T
可选地,所述稀疏感知器输入的T
可选地,所述加法树组的每一个输入接口设置了先入先出缓存,将来自乘累加阵列输出的非同时到达的数据暂存,待所有先入先出缓存均不空再做加法运算。
可选地,在乘累加阵列的第x行y列上的MAC运算输入通道从Dtm×x到Dtm×(x+1)、输出通道从ceil(Chout/Tn)×y到ceil(Chout/Tn)×(y+1)的卷积运算,这里Dtm=ceil(ceil(Chin/T
一种基于FPGA的稀疏激活神经网络运算数据流,将卷积运算按照每Dtm输入通道切分为一个运算片,在输入通道深度为Chin的情况下,Dtm=ceil(ceil(Chin/T
可选地,所述运算条带在运算子通道内部流动方式为:每个时钟周期流动T
本发明所采用的技术方案具有的优点和有益效果是:
实现了高效的并行计算,每个时钟周期可以达到T
附图说明
图1为本发明的结构示意图;
图2为运算子通道的结构示意图;
图3为乘累加阵列的结构示意图;
图4为加法树组的结构示意图;
具体实施方式
如图1所示的结构,本实施例涉及一种基于FPGA的稀疏激活感知型神经网络加速器,包括读命令发生器、数据分配器、T
所述读命令发生器用于向外部总线发送读请求寻址片外存储器存储的激活和权重数据,其读请求按照T
所述数据分配器,用于将片外存储器读入的数据以输入通道为单位分配给运算子通道,内部维持1个输入通道的计数器,在输入通道为Chin的情况下,计数器的溢出值为ceil(Chin/T
所述运算子通道的结构参见图2,接收到的数据首先存储在权重和激活的片上缓存上,片上缓存由FPGA中的block ram构成,激活地址发生器产生运算所需激活的地址,经过应答器应答确认数据已读入后,激活缓存输出T
所述稀疏感知器接收来自运算子通道中激活缓存输出的T
所述乘累加阵列接收运算子通道传送过来的数据,通过图3的多个MAC上交错的行和列来分配卷积与并行化卷积的向量运算,该阵列尺寸为T
所述加法树组如图4将每一列MAC的输出都连接到一个单独的加法树中,这样T
加法树组输出T
机译: DUT FPGA一种测试架构,具有基于FPGA的硬件加速器模块,可独立测试多个器件
机译: 人工神经网络中基于结构化激活的稀疏性
机译: 一种具有多个基于FPGA的硬件加速器块的测试架构,可独立测试多个时间