基于混层级精度运算的稀疏神经网络处理器、方法技术

技术编号:31995938 阅读:12 留言:0更新日期:2022-01-22 18:08
本申请提供的一种基于混层级精度运算的稀疏神经网络处理器,包括:权重缓存模块、激活值缓存模块、激活值索引模块、乘累加运算模块及输出缓存模块,乘累加运算模块包括乘累加运算单元及寄存器,乘累加运算单元的精度为预设的第一固定位宽。权重缓存模块中存储有压缩后的稀疏权重,每次卷积计算时,权重缓存模块先进行解码,然后输出非零权重值及非零权重位置信息,激活值索引模块根据非零权重位置信息输出相应的激活值,乘累加单元采用固定精度运算模式,结合寄存器,实现对可变精度数据的处理。本申请提供的稀疏神经网络处理器既能在高并行度下加载和操作非零权重数据,又能支持混层级精度计算。级精度计算。级精度计算。

【技术实现步骤摘要】
基于混层级精度运算的稀疏神经网络处理器、方法


[0001]本申请涉及深度学习
,尤其涉及基于混层级精度运算的稀疏神经网络处理器、 方法。

技术介绍

[0002]为减轻神经网络的计算量和储存负担,对网络进行剪枝去除冗余参数是一种非常有效的 加速神经网络的方式。剪枝在网络模型中引入了大量稀疏权重数据,要利用网络稀疏性,需 要在执行网络模型时跳过随机分布的零权重数据。一般神经网络的激活值和权重都是连续存 储在缓存中,读取时也连续读取,普通的神经网络处理器无法做到跳过零权重数据、只对非 零权重数据进行计算。
[0003]为了保证精度的前提下最大化地减少计算量、降低功耗,神经网络不同层会采用不同的 数据精度(数据位宽)参与计算,传统的神经网络处理器能够处理的模型精度单一,不支持 混层级精度的计算。因此,本申请旨在提供一种既能在高并行度下加载和操作非零权重数据, 又能支持混层级精度计算的神经网络处理器。

技术实现思路

[0004]为了解决神经网络处理器能够处理的模型精度单一,不支持混层级精度计算,且难以同 时实现只对非零权重进行计算的技术问题,本申请通过以下实施例公开了一种基于混层级精 度运算的稀疏神经网络处理器、方法。
[0005]本申请第一方面公开了一种基于混层级精度运算的稀疏神经网络处理器,包括:权重缓 存模块、激活值缓存模块、激活值索引模块、乘累加运算模块及输出缓存模块,所述乘累加 运算模块包括乘累加运算单元及寄存器,所述乘累加运算单元的精度为预设的第一固定位宽;
[0006]权重缓存模块用于获取压缩后的稀疏权重,并将所述压缩后的稀疏权重进行分行存储, 其中每行存储的数据宽度为所述第一固定位宽;还用于在卷积运算过程中对所述压缩后的稀 疏权重进行解码,将解码得到的非零权重值按行顺次输出至所述乘累加运算单元,以及将解 码得到的非零权重位置信息按行顺次输出至所述激活索引模块;
[0007]激活值缓存模块用于分行存储神经网络的激活值,其中每行存储的数据宽度为所述第一 固定位宽;还用于在卷积运算过程中对所述激活值进行读取,按行顺次输出至所述激活索引 模块;
[0008]激活值索引模块用于根据接收到的每行非零权重位置信息,对接收到的每行激活值进行 选取,并将选取得到的激活值按行顺次输出至所述乘累加运算单元;
[0009]所述乘累加运算单元用于对接收到的每行激活值及每行非零权重值进行两两乘累加运 算,获取多个乘累加运算结果;还用于判断是否对每个所述乘累加运算结果执行移位操作, 并在判断结果为否的情况下,将所述乘累加运算结果直接输出至所述寄存器,在判断结果为 是的情况下,对所述乘累加运算结果执行移位之后再输出至所述寄存器;
[0010]所述寄存器用于暂时存储所述多个乘累加运算结果,并在最终卷积运算完成后将所述多 个乘累加结果输出至所述输出缓存模块。
[0011]可选的,所述乘累加运算单元在判断是否对每个所述乘累加运算结果执行移位操作的过 程中,用于执行以下步骤:
[0012]获取目标乘累加运算结果对应的非零权重值级数,所述目标乘累加运算结果为任一个所 述乘累加运算结果,所述非零权重值级数为所述非零权重值对应的行序;
[0013]获取目标乘累加运算结果对应的激活值级数,所述激活值级数为所述激活值对应的行序;
[0014]比较所述非零权重值级数与所述激活值级数;
[0015]若所述非零权重值级数与所述激活值级数一致,则获取所述判断结果为否;
[0016]若所述非零权重值级数与所述激活值级数不一致,则获取所述判断结果为是。
[0017]可选的,所述乘累加运算单元对所述乘累加运算结果执行移位之后再输出至所述寄存器 时,用于执行以下步骤:
[0018]根据所述非零权重值级数、所述激活值级数及所述第一固定位宽,获取移位数;
[0019]基于所述移位数,对所述目标乘累加运算结果执行左移之后,输出至所述寄存器中。
[0020]可选的,所述根据所述非零权重值级数、所述激活值级数及所述第一固定位宽,获取移 位数,包括:
[0021]根据以下公式,获取所述移位数:
[0022]S=(|a

b|
×
(w/2));
[0023]其中,S表示所述移位数,a表示所述非零权重值级数,b表示所述激活值级数,w表示 所述第一固定位宽。
[0024]可选的,所述压缩后的稀疏权重包括每个非零权重对应的值、通道差和位置差;
[0025]所述通道差用于表示非零权重的输入通道之间的索引差值;
[0026]所述位置差用于表示一个输入通道内非零权重的相对位置。
[0027]可选的,所述权重缓存模块对所述压缩后的稀疏权重进行解码时,用于执行以下步骤:
[0028]获取目标非零权重对应的值、通道差、位置差及压缩后地址,所述目标非零权重为任一 个所述非零权重;
[0029]获取所述目标非零权重的一维坐标值,所述目标非零权重的一维坐标值为所述目标非零 权重对应的位置差及第一非零权重对应的位置差的累加结果,所述第一非零权重包括压缩后 地址小于所述目标非零权重的所有非零权重;
[0030]根据所述一维坐标值及卷积核尺寸,获取所述目标非零权重的二维坐标值;
[0031]获取通道累加值,所述通道累加值为所述目标非零权重对应的通道差及第一非零权重对 应的通道差的累加结果;
[0032]根据所述二维坐标值及所述通道累加值,获取所述目标非零权重的三维坐标值;
[0033]获取所述目标非零权重位置信息,所述目标非零权重位置信息包括所述二维坐标值及三 维坐标值。
[0034]本申请第二方面公开了一种基于混层级精度运算的稀疏神经网络处理方法,应用
于如本 申请第一方面所述的基于混层级精度运算的稀疏神经网络处理器,所述方法包括:
[0035]权重缓存模块获取压缩后的稀疏权重,并将所述压缩后的稀疏权重进行分行存储,其中 每行存储的数据宽度为第一固定位宽;
[0036]激活值缓存模块分行存储神经网络的激活值,其中每行存储的数据宽度为所述第一固定 位宽;
[0037]在卷积运算过程中:
[0038]所述权重缓存模块对所述压缩后的稀疏权重进行解码,将解码得到的非零权重值按行顺 次输出至乘累加运算单元,以及将解码得到的非零权重位置信息按行顺次输出至激活索引模 块;
[0039]所述激活值缓存模块对所述激活值进行读取,按行顺次输出至所述激活索引模块;
[0040]所述激活值索引模块根据接收到的每行非零权重位置信息,对接收到的每行激活值进行 选取,并将选取得到的激活值按行顺次输出至所述乘累加运算单元;
[0041]所述乘累加运算单元对接收到的每行激活值及每行非零权重值进行两两乘累加运算,获 取多个乘累加运算结果;以及,判断是否对每个所述乘累加运算结果执行移位操作,并在判 断结果为否的情况下,将所本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于混层级精度运算的稀疏神经网络处理器,其特征在于,包括:权重缓存模块、激活值缓存模块、激活值索引模块、乘累加运算模块及输出缓存模块,所述乘累加运算模块包括乘累加运算单元及寄存器,所述乘累加运算单元的精度为预设的第一固定位宽;权重缓存模块用于获取压缩后的稀疏权重,并将所述压缩后的稀疏权重进行分行存储,其中每行存储的数据宽度为所述第一固定位宽;还用于在卷积运算过程中对所述压缩后的稀疏权重进行解码,将解码得到的非零权重值按行顺次输出至所述乘累加运算单元,以及将解码得到的非零权重位置信息按行顺次输出至所述激活索引模块;激活值缓存模块用于分行存储神经网络的激活值,其中每行存储的数据宽度为所述第一固定位宽;还用于在卷积运算过程中对所述激活值进行读取,按行顺次输出至所述激活索引模块;激活值索引模块用于根据接收到的每行非零权重位置信息,对接收到的每行激活值进行选取,并将选取得到的激活值按行顺次输出至所述乘累加运算单元;所述乘累加运算单元用于对接收到的每行激活值及每行非零权重值进行两两乘累加运算,获取多个乘累加运算结果;还用于判断是否对每个所述乘累加运算结果执行移位操作,并在判断结果为否的情况下,将所述乘累加运算结果直接输出至所述寄存器,在判断结果为是的情况下,对所述乘累加运算结果执行移位之后再输出至所述寄存器;所述寄存器用于暂时存储所述多个乘累加运算结果,并在最终卷积运算完成后将所述多个乘累加结果输出至所述输出缓存模块。2.根据权利要求1所述的基于混层级精度运算的稀疏神经网络处理器,其特征在于,所述乘累加运算单元在判断是否对每个所述乘累加运算结果执行移位操作的过程中,用于执行以下步骤:获取目标乘累加运算结果对应的非零权重值级数,所述目标乘累加运算结果为任一个所述乘累加运算结果,所述非零权重值级数为所述非零权重值对应的行序;获取目标乘累加运算结果对应的激活值级数,所述激活值级数为所述激活值对应的行序;比较所述非零权重值级数与所述激活值级数;若所述非零权重值级数与所述激活值级数一致,则获取所述判断结果为否;若所述非零权重值级数与所述激活值级数不一致,则获取所述判断结果为是。3.根据权利要求2所述的基于混层级精度运算的稀疏神经网络处理器,其特征在于,所述乘累加运算单元对所述乘累加运算结果执行移位之后再输出至所述寄存器时,用于执行以下步骤:根据所述非零权重值级数、所述激活值级数及所述第一固定位宽,获取移位数;基于所述移位数,对所述目标乘累加运算结果执行左移之后,输出至所述寄存器中。4.根据权利要求3所述的基于混层级精度运算的稀疏神经网络处理器,其特征在于,所述根据所述非零权重值级数、所述激活值级数及所述第一固定位宽,获取移位数,包括:根据以下公式,获取所述移位数:S=(|a

b|
×
(w/2));其中,S表示所述移位数,a表示所述非零权重值级数,b表示所述激活值级数,w表示所述第一固定位宽。
5.根据权利要...

【专利技术属性】
技术研发人员:秦子迪温家玉陶为
申请(专利权)人:南京风兴科技有限公司
类型:发明
国别省市:

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

1