【技术实现步骤摘要】
基于混层级精度运算的稀疏神经网络处理器、方法
[0001]本申请涉及深度学习
,尤其涉及基于混层级精度运算的稀疏神经网络处理器、 方法。
技术介绍
[0002]为减轻神经网络的计算量和储存负担,对网络进行剪枝去除冗余参数是一种非常有效的 加速神经网络的方式。剪枝在网络模型中引入了大量稀疏权重数据,要利用网络稀疏性,需 要在执行网络模型时跳过随机分布的零权重数据。一般神经网络的激活值和权重都是连续存 储在缓存中,读取时也连续读取,普通的神经网络处理器无法做到跳过零权重数据、只对非 零权重数据进行计算。
[0003]为了保证精度的前提下最大化地减少计算量、降低功耗,神经网络不同层会采用不同的 数据精度(数据位宽)参与计算,传统的神经网络处理器能够处理的模型精度单一,不支持 混层级精度的计算。因此,本申请旨在提供一种既能在高并行度下加载和操作非零权重数据, 又能支持混层级精度计算的神经网络处理器。
技术实现思路
[0004]为了解决神经网络处理器能够处理的模型精度单一,不支持混层级精度计算,且难以同 时实现只对非零权重进行计算的技术问题,本申请通过以下实施例公开了一种基于混层级精 度运算的稀疏神经网络处理器、方法。
[0005]本申请第一方面公开了一种基于混层级精度运算的稀疏神经网络处理器,包括:权重缓 存模块、激活值缓存模块、激活值索引模块、乘累加运算模块及输出缓存模块,所述乘累加 运算模块包括乘累加运算单元及寄存器,所述乘累加运算单元的精度为预设的第一固定位宽;
[0006 ...
【技术保护点】
【技术特征摘要】
1.一种基于混层级精度运算的稀疏神经网络处理器,其特征在于,包括:权重缓存模块、激活值缓存模块、激活值索引模块、乘累加运算模块及输出缓存模块,所述乘累加运算模块包括乘累加运算单元及寄存器,所述乘累加运算单元的精度为预设的第一固定位宽;权重缓存模块用于获取压缩后的稀疏权重,并将所述压缩后的稀疏权重进行分行存储,其中每行存储的数据宽度为所述第一固定位宽;还用于在卷积运算过程中对所述压缩后的稀疏权重进行解码,将解码得到的非零权重值按行顺次输出至所述乘累加运算单元,以及将解码得到的非零权重位置信息按行顺次输出至所述激活索引模块;激活值缓存模块用于分行存储神经网络的激活值,其中每行存储的数据宽度为所述第一固定位宽;还用于在卷积运算过程中对所述激活值进行读取,按行顺次输出至所述激活索引模块;激活值索引模块用于根据接收到的每行非零权重位置信息,对接收到的每行激活值进行选取,并将选取得到的激活值按行顺次输出至所述乘累加运算单元;所述乘累加运算单元用于对接收到的每行激活值及每行非零权重值进行两两乘累加运算,获取多个乘累加运算结果;还用于判断是否对每个所述乘累加运算结果执行移位操作,并在判断结果为否的情况下,将所述乘累加运算结果直接输出至所述寄存器,在判断结果为是的情况下,对所述乘累加运算结果执行移位之后再输出至所述寄存器;所述寄存器用于暂时存储所述多个乘累加运算结果,并在最终卷积运算完成后将所述多个乘累加结果输出至所述输出缓存模块。2.根据权利要求1所述的基于混层级精度运算的稀疏神经网络处理器,其特征在于,所述乘累加运算单元在判断是否对每个所述乘累加运算结果执行移位操作的过程中,用于执行以下步骤:获取目标乘累加运算结果对应的非零权重值级数,所述目标乘累加运算结果为任一个所述乘累加运算结果,所述非零权重值级数为所述非零权重值对应的行序;获取目标乘累加运算结果对应的激活值级数,所述激活值级数为所述激活值对应的行序;比较所述非零权重值级数与所述激活值级数;若所述非零权重值级数与所述激活值级数一致,则获取所述判断结果为否;若所述非零权重值级数与所述激活值级数不一致,则获取所述判断结果为是。3.根据权利要求2所述的基于混层级精度运算的稀疏神经网络处理器,其特征在于,所述乘累加运算单元对所述乘累加运算结果执行移位之后再输出至所述寄存器时,用于执行以下步骤:根据所述非零权重值级数、所述激活值级数及所述第一固定位宽,获取移位数;基于所述移位数,对所述目标乘累加运算结果执行左移之后,输出至所述寄存器中。4.根据权利要求3所述的基于混层级精度运算的稀疏神经网络处理器,其特征在于,所述根据所述非零权重值级数、所述激活值级数及所述第一固定位宽,获取移位数,包括:根据以下公式,获取所述移位数:S=(|a
‑
b|
×
(w/2));其中,S表示所述移位数,a表示所述非零权重值级数,b表示所述激活值级数,w表示所述第一固定位宽。
5.根据权利要...
【专利技术属性】
技术研发人员:秦子迪,温家玉,陶为,
申请(专利权)人:南京风兴科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。