首页> 中国专利> 面向加法网络的近存储神经网络加速器及其加速方法

面向加法网络的近存储神经网络加速器及其加速方法

摘要

本发明公开了一种面向加法网络的近存储神经网络加速器及其加速方法。神经网络加速器包括指令发生单元,计算单元组和后处理模块。加速器将在指令发生单元中利用低比特的权重和激活进行比较生成指令,指令传入计算单元组中特定的计算单元,指导其中存有的全精度权重或激活的计算,并根据指令将输出传送至后处理单元进行处理,生成最终的结果。本发明分离了符号的提取和全精度数据的计算,设计了一种可重构,可扩展的近存储计算单元,便于适应不同的神经网络推理任务,同时对加法网络模型进行了数据压缩和分组,仅保留非稀疏全精度数据,降低了模型大小和计算次数。

著录项

  • 公开/公告号CN113313244A

    专利类型发明专利

  • 公开/公告日2021-08-27

    原文格式PDF

  • 申请/专利权人 东南大学;

    申请/专利号CN202110670196.5

  • 发明设计人 齐志;凌星宇;刘昊;史旭龙;

    申请日2021-06-17

  • 分类号G06N3/063(20060101);G06N3/08(20060101);G06F1/3234(20190101);

  • 代理机构32249 南京瑞弘专利商标事务所(普通合伙);

  • 代理人孙建朋

  • 地址 211102 江苏省南京市江宁区东南大学路2号

  • 入库时间 2023-06-19 12:22:51

说明书

技术领域

本发明属于深度神经网络加速计算技术领域,尤其涉及一种面向加法网络的近存储神经网络加速器及其加速方法。

背景技术

卷积神经网络(Convolution Neural Network,CNN)是一种机器学习算法,并且在计算机视觉、语音识别、自然语言处理等领域取得了良好的效果并进行了广泛的应用。但CNN算法的卷积部分是计算密集型的且占用巨大的存储空间,因此当我们在端设备和嵌入式设备上部署卷积神经网络时,通常使用专用集成电路(ASIC)对其进行加速以实现低能耗和高性能特性。

加法神经网络(AdderNet)是卷积神经网络的一种,使用绝对差之和(Sum ofAbsolute Difference,SAD)代替了传统CNN中的卷积核。在相同的网络结构和数据集下,AdderNet的精度与传统的基于乘法的CNN相似,因此有望替代CNN并进行大规模的应用。由于其涉及的计算从乘法变为加法,而在硬件实现中,加法器的功耗和面积都远低于乘法器,所以AdderNet天然地比传统CNN算法更加适合部署在能耗和存储预算有限的端设备和嵌入式设备上。 AdderNet并未修改传统CNN中的网络结构和计算模式,因此简单地将传统CNN加速器的乘法器替换为加法器即可实现对AdderNet的加速。但需要注意的是,传统CNN加速器充分地利用了网络的稀疏性并进行了大量的优化,而 AdderNet的稀疏特性与CNN完全不同,因此直接替换计算单元无法利用到稀疏性,因此其能效远远落后于最新的经过充分优化的CNN加速器。因此,需要针对AdderNet重新设计专用加速器以发掘其能耗、性能和面积方面的优势。

本发明首次对AdderNet进行了基于ASIC的加速器设计,极大地降低了推理计算过程中的功耗,同时其推理速度与传统CNN加速器相当,实现了更高的能效,更加适合部署于能耗受限的移动设备上。

发明内容

本发明目的在于提供一种面向加法网络的近存储神经网络加速器及其加速方法,以解决现有推理计算过程中的功耗大,推理速度低,效率低的技术问题。

为解决上述技术问题,本发明的具体技术方案如下:

一种面向加法网络的近存储计算神经网络加速器,包括指令发生单元,计算单元组和后处理单元;

所述指令发生单元包括存储单元、比较器阵列和指令池;

所述存储单元用于缓存经过量化后的数据;

所述比较器阵列用于比较经过量化后的数据生成符号并组成指令;

所述指令池用于暂存已生成的指令,并依次发送至对应的计算单元;

所述计算单元组由多个计算单元组成,各计算单元结构相同并通过总线与指令发生单元相连,每个计算单元包括若干加法器及其附属的存储模块;

所述存储模块存储全精度的权重和激活数据以及部分和;

所述计算单元接收来自指令发生单元的指令,读取内部存储模块的权重或激活并送入加法器进行运算,运算结果根据指令存入内部存储模块或送出计算单元;

所述后处理单元与所有计算单元相连,将计算单元生成的运算结果累加并执行池化、非线性和归一化操作以生成完整的输出结果。

进一步的,每个计算单元具有相同的结构并在系统中具有相同的地位,单个所述计算单元被配置为仅存储权重或激活中的一种并负责对应数据的计算,并在不同的计算过程中动态配置和分配数据。

进一步的,所述单个计算单元同时包含存储模块和运算模块,且所述运算模块只负责所述存储模块中数据的运算,在整个计算过程中存储模块中的数据无需与其他计算单元交流。

进一步的,分离绝对差之和计算中的符号生成过程与求和过程,利用所述指令发生单元计算每组绝对值之差的正负号并组合为指令,指令被发送至所述计算单元组中对应计算单元,并利用所述计算单元根据收到的指令执行求和运算。

一种面向加法网络的近存储计算神经网络的加速方法,包括以下步骤:

步骤1、对加法神经网络的输入和权重进行稀疏化和压缩,得到低比特量化后的全尺寸模型和全精度的压缩后模型;

步骤2、将所述压缩后模型分块并存入不同的计算单元,所述全尺寸模型送入所述指令发生单元;所述指令发生单元比较量化后权重和激活的数值,并为每对权重和激活生成一个正负号;一系列正负号与目标计算单元地址拼接生成完整指令,并被送至对应的计算单元;

步骤3、所述计算单元接收步骤2中生成的指令,根据其中全精度数据地址获取其存储模块内部数据;其后,根据指令中正负号将相应数据取反或保持原样,并送入加法器;生成部分和数据根据指令重新写入其存储模块或送至所述后处理单元;

步骤4、后处理单元获取计算单元生成的部分和,累加并执行池化、非线性操作和归一化操作,生成完整的输出结果,并对输出结果进行层间复用,存入未使用的计算单元中;

步骤5、重复步骤2到步骤4,直至整个加法神经网络计算完成。

进一步的,步骤1中所述压缩方法包括以激活的数值分布为基准,将超出该范围的权重在片外提前累加,并将对应位置的权重及零值激活视为稀疏值,沿通道方向进行RLE编码。

进一步的,将处于激活取值范围内的权重及非零激活沿通道方向每隔固定数量编组,并丢弃其余数据,成组的数据被存储在所述计算单元所属存储模块中,并被连接至加法树,在指令到来时将该组数据根据指令中的符号取正或负并求和。

进一步的,将权重和激活量化至极低位宽,其中极低位宽指2/3/4bit,并在所述存储单元中暂存,计算时沿通道读出并送入所述比较器阵列比较大小从而生成正负号,多个正负号拼接形成指令并暂存至指令池中等待发送。

进一步的,记录上一层神经网络计算中未使用的计算单元,并将该层计算结果生成后直接存入所述未使用的计算单元。

本发明的一种面向加法网络的近存储神经网络加速器及其加速方法,具有以下优点:

1、本发明采用了一种稀疏生成方法,基于权重及激活的分布模式对超出激活数值范围外的权重进行剪枝并视为稀疏值,同时将零值激活也视为稀疏值进行了压缩,降低了模型大小而精度无损。

2、本发明采用了一种将符号生成与和分离的计算模式,用低位宽的压缩数据进行比较获得符号,并将符号传送至计算单元进行全精度数据的求和。本发明的计算模式中产生能耗的部分为:低位宽数据读取,低位宽比较,符号片上传输,全精度数据的加法计算。由于访存能耗及片上传输能耗与位宽正相关,而低位宽比较器的能耗远低于访存及传输功耗,相同位宽下加法器的功耗远低于乘法器,因此本发明中的低位宽数据读取、低位宽比较及符号片上传输的能耗之和低于全精度数据读取及全精度数据片上传输的能耗,实现了计算过程能耗的降低。

3、本发明采用了一种数据编组方法,仅保留非稀疏数据并将其按照一定的规则编组,与传统CNN加速器相比,仅非稀疏数据需要从片外传输,仅非稀疏数据参与计算,降低了访存量和计算量,具有低功耗,高利用率的特点。

4、本发明采用了一种可重构,可扩展,近存储计算的计算单元,可根据需要复制和配置计算单元,适应更大规模的加法神经网络计算,提升了灵活性。近存储计算避免了计算单元与计算单元之间、主存与计算单元之间的全精度数据传输,存入计算单元的全精度数据在其生命周期内无需移动,节省了数据移动的能耗。

5、本发明采用了一种层间复用方法,将一层神经网络的计算结果根据计算单元组的使用情况,直接存入未使用的计算单元中,从而避免了将结果存入片外大容量存储,再于下一层计算时重新读入带来的高能耗。

附图说明

图1为本发明的加速器架构图;

图2为本发明的应该推理计算的流程图;

图3为本发明的比较器阵列示意图;

图4为本发明的一个计算单元示意图。

具体实施方式

为了更好地了解本发明的目的、结构及功能,下面结合附图,对本发明一种面向加法网络的近存储神经网络加速器及其加速方法做进一步详细的描述。

图1为本实施例的加速器架构图,包含了指令发生单元、计算单元组和后处理单元。

指令发生单元包含一个存储单元,一个比较器阵列和一个指令池。缓存单元用于缓存经过量化后的数据。比较器阵列用于比较经过量化后的数据生成符号并组成指令。指令池用于暂存已生成的指令,并依次发送至对应的计算单元。

计算单元组包含多个独立的计算单元,在本实施例中计算单元的个数为 256个。每个计算单元可以被配置为存储权重或激活,并负责对应数据的计算。如有需要,计算单元组可以通过复制计算单元进行扩展。

后处理单元负责将部分和结果累加并执行池化,非线性和归一化操作以生成输出结果。

图2为本发明的实施例进行一次推理计算的流程。第一步,加速器从片外获取全精度的,经过压缩的权重和激活数据。这些权重和激活在去掉冗余的编码后直接写入计算单元的存储中,同时在主控单元处记录下每组数据存储的计算单元地址。在写入计算单元的同时,指令发生单元对权重和激活进行处理,并写入指令发生单元处的缓存,作为生成指令的依据。特别地,在本实施例中,保留的数据为低比特量化后的权重及激活,最低可量化至2bit。第二步,指令发生单元分批次读取缓存中的低比特数据,并行地送入比较器阵列中,通过比较低比特权重和激活的数值大小生成对应计算的正负号。生成的正负号和将被送入的计算单元地址组合,成为一个指令。第三步,指令被发送至对应的计算单元,计算单元根据正负号决定是否对对应的全精度数据取反。这些数据随后被送入一个加法树,并累加为部分和。第四步,将多个计算单元中准备好的部分和分时或同步地送入后处理单元,并进行累加, ReLu,池化,批量归一化(BN)等操作,从而形成最终的结果。第五步,指令的生成、计算单元的执行和后处理不断进行直至整个神经网络计算完成。

图3为所述比较器阵列示意图,比较器以阵列形式排列。权重按行广播至处于同一行的所有比较器,激活按列广播至处于同一列的比较器,比较器将一对权重和激活进行比较。在本实施例中,量化的权重和激活为3bits。3bits编码可以表示8个数值,其中,000用于表示小于所有激活的权重和零值激活,111用于表示大于所有激活的权重。剩余六个编码用于表示非稀疏的权重和激活,将权重和激活按数量分为六个区间并按大小分别赋予编码,当某一数据落在某一区间时则将该数据量化为区间对应的编码。

在一次比较中,若权重大于激活,则为权重取正号,为激活取负号;若激活大于权重,则为权重取负号,激活取正号;若权重和激活相同,则另外用1bit的mask标记为无法确定大小;若权重或激活为稀疏的,则不产生符号,跳过。其具体规则如下表所示:

表中,W

当一轮取出的数据完成比较,形成长短不一的符号序列,若符号序列满一组数据长度(16个),则截取前16个符号,与前述mask标记和目标计算单元地址拼接,形成一个完整的指令并存入指令池,剩余的符号仍暂存于比较器阵列中,等待下一轮比较器生成的符号与其拼接。若不满一组数据长度,则不产生指令,等待下一轮生成的符号直至长度大于一组数据长度或某位置沿通道方向的比较已经结束。

指令池是一个FIFO(先进先出)模块,完整的指令按生成的先后顺序存入指令池,指令池模块每次截取前六个指令,若可以并行则同时发送至六个不同的PE(performanceelement),若无法并行则依次发出指令。

图4为本实施例的一个计算单元示意图。数据缓存用于存储压缩编组后的权重和激活,其位宽为存储16个全精度数的大小,即256bit,深度为24,其容量为最大存储24组所述编组数据,其基本单元为6T SRAM。数据缓存与一个多路选择器相连作为其中一路选择。多路选择器根据指令选择从数据缓存中取出的数据,从数据缓存中取出的数据的补码和bias三者中选择其一作为加法树的输入。加法树共接收17个输入,其中16个两两相加呈树形结构得到这些数的和,并与第17个数相加得到最终结果。PE内另外设有部分和缓存,其基本单元为寄存器,位宽为24bit,其容量与数据缓存的编组数据个数相同,在本实施例中,总容量为24*24bit。

PE的在执行推理的过程中可能出现三个状态:未使用状态(not used),即PE内的数据缓存未存数据,此时将该PE的电源关断(power gating)以节省功耗;空闲状态(IDLE),即PE内数据缓存存有数据,但未有指令传来,此时不执行访存和计算操作,PE内各器件的时钟被关断(clock gating);工作状态(WORK),即有指令传入,PE根据指令执行对应操作。

PE的工作状态下执行一次计算指令的流程为:

T时刻,指令缓存至PE内的寄存器中。

T+1时刻,指令被拆分成五段:指令类型,数据缓存地址,符号,掩码 (mask),部分和缓存地址。根据数据缓存地址对数据缓存进行访存,取出对应的十六个操作数,根据对应的符号及掩码对数据进行操作。具体为:若掩码为1,屏蔽该数据并替换为bias(偏置值),若掩码为0,判断符号,若符号为0,则取该数据的补码,若符号为1,则不对该数据进行操作。同时,根据部分和缓存地址,取出部分和数据。

T+2时刻,十六个经过处理的操作数和部分和数据同时被送入加法树执行加法。

T+3时刻,根据部分和缓存地址,将加法结果重新存入部分和缓存单元。

以上四个步骤是流水线形式的,即平均到每个周期每个PE可以执行一个对十六个数据的求和操作。其他指令类型与计算指令执行过程相似,流水线长度相同。求和完成后,根据指令类型码,亦可将计算结果送出PE至后处理单元,待后处理单元进行非线性、批归一化等操作后,根据计算单元组的利用情况,直接回写至未使用的计算单元,从而避免与片外存储的高能耗的数据访问。

可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明所保护的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号