技术领域
[0001] 本发明涉及近似片上网络技术领域,尤其涉及一种面向卷积神经网络加速的高实时性近似片上网络。
相关背景技术
[0002] 自从摩尔定律诞生开始,每一代新的工艺都会使得单个晶体管的面积更小,从而在相同的面积下带来更多的晶体管数量。即使在单个计算核上的算力不断增强,由于有功耗墙和存储墙等限制,单个核心不可能做到无限大,因此多核片上系统应运而生。多核片上系统的出现解决了高性能计算应用在硬件中算力不足的问题,这些高性能多核处理器需要提供足够大的传输带宽,并同时保持极低的传输延迟。因此,片上网络成为了连接处理器核心的高效片上通信架构。片上网络通过路由器实现节点和节点之间的互联,多个通信数据流在这些链路上时分复用,从而实现了高可扩展性和大传输带宽。
[0003] 研究表明,神经网络具有较强的容错能力,其可容错特性使得其在推理时使用近似技术成为可能。随着神经网络规模增大,参数成指数级增长,对基于片上网络的多核神经网络加速器的通信和计算带来沉重的压力,从而导致总执行时间的急剧增加,无法满足实时性的应用场景。目前,国内外一些基于片上网络的神经网络加速器的研究主要集中在近似通信领域,这些工作基于对应用质量的约束,通过将数据有损压缩的形式降低片上网络中的通信负载从而降低网络的平均延迟来满足实时性的需求。但是这些工作并没有考虑到应用本身如数据分布的性质,从而没有有效地增加压缩数据包比例;同时也没有在计算上与近似通信协同优化,因此限制了总执行时间的进一步减少。
[0004] 近似通信被定义为近似技术在并行系统中的应用,其目的是减少PE之间的通信量。现有的基于NoC的近似通信方案可分为两类,近似flits中的整个数据和近似flits中数据的最低几位。近似flits中的整个数据常常采用在源节点使用固定间隔将flit进行丢弃,在目的节点采用线性插值的方法将其恢复,这样的近似和恢复方案限制了总的数据压缩率不会超过50%,同时由于采用固定间隔进行丢弃,可能会导致对神经网络推理结果影响较大的激活值被丢弃,从而降低模型精度。近似flit数据中的低位常常采用模式压缩和恢复的方式实现,然而如今神经网络加速器常采用低bit量化,通过截掉数据低位会引入较大的误差,在质量约束的限制下,其可截断位宽有限,导致数据压缩率不高,无法缓解通信拥塞。
[0005] 在卷积神经网络推理时,存在大量并发的乘累加操作,乘累加单元的功耗和延迟成为了限制神经网络加速器性能提升的瓶颈之一。卷积神经网络的可容错特性使其在推理时采用近似计算成为可能,在神经网络质量损失可以接受的前提下,通过引入近似乘法器、近似加法器等近似单元可以降低神经网络加速器的功耗和延迟。在卷积神经网络的计算功耗中,乘法器的功耗占计算功耗的90%,因此针对乘法器引入近似,可以有效的减小神经网络加速器计算功耗,提高加速器性能。现有的近似乘法器的设计主要分为两类,一类是不改变乘法器的逻辑,通过电压的缩小,减小乘法器的功耗。另一类通过简化精确乘法器某些电路单元引入近似,实现功耗和延迟的优化。采用电压缩小减小乘法器功耗的操作会导致电路关键路径延时增加,无法满足实时性要求;而通过简化精确乘法器的电路逻辑引入近似并没有考虑神经网络的数据分布特征,容易导致近似不足或近似过度,近似不足是没有充分利用神经网络的可容错特性,近似过度会导致质量损失过大,推理精度难以接受。此外,目前针对神经网络加速的近似乘法器设计没有和通信进行有机的结合。
[0006] 如公开号为CN117411561A的中国专利公开了一种基于近似计算的光片上网络通信方法及光片上网络,该光片上网络通信方法,将近似计算技术应用到光片上网络中,结合功率控制来实现可靠的低功率通信。与传统的通信相比,该方法合理地利用了应用程序固有的鲁棒性,通过近似计算技术减少通信过程中数据的移动,并为通信设置所需的功率,在满足可靠性要求的同时避免了功率浪费,提高了光片上网络的功率效率和执行速度。
[0007] 如授权公告号为CN109547263B的中国专利公开了一种基于近似计算的片上网络优化方法,其包括数据裁剪器、数据恢复器、流量预测器、全局控制器和局部控制器;数据裁剪器在数据包注入网口前对数据进行剪裁,缩短数据包长度;数据恢复器在接收到裁剪过的数据包后对丢失的数据进行恢复;流量预测器根据过去的节点通讯情况预测下一个调控间隔内的数据流量;全局控制器用于在全局视角下基于全局信息和用户的质量要求计算出每个节点近似计算的最优配置,并将控制信息发送到各个节点;局部控制器根据接收到的控制信息,对每个等待注入网络的数据包进行数据丢失率的配置。该方法能够用较低的代价,在不违反用户对输出质量的要求的前提下,对片上网络的性能、功耗进行优化。
[0008] 以上专利存在本背景技术提出的问题:上述两个专利没有解决如何将利用卷积神经网络层间数据进行有效的压缩数据,也没有将神经网络加速的近似计算模块与通信进行有机结合的问题。为解决这一问题,本发明提出一种面向卷积神经网络加速的高实时性近似片上网络。
具体实施方式
[0053] 为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合说明书附图对本发明的具体实施方式做详细的说明。
[0054] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是本发明还能够采用其他不同于在此描述的其它方式来实施,本领域技术人员能够在不违背本发明内涵的情况下做类似推广,因此本发明不受下面公开的具体实施例的限制。
[0055] 其次,此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
[0056] 实施例
[0057] 如图1所示,一种面向卷积神经网络加速的高实时性近似片上网络包括一个在中心节点的全局阈值动态控制器和在每个节点中的本地控制器。
[0058] 全局阈值动态控制器用于监视网络中的拥塞情况并根据拥塞情况调整每层节点的近似阈值;
[0059] 本地控制器包括近似模块和恢复模块,近似模块按照全局阈值近似数据包,恢复模块根据数据包中头flit中的近似信息恢复数据包;
[0060] 每个节点中的近似乘累加单元均采用与恢复数据包中分布特征相匹配的近似计算模块,近似计算模块包括稀疏重排模块、移位乘累加模块和近似乘累加模块;
[0061] 稀疏重排模块预取多个有效激活,然后检测激活为零值的位置并对数据进行清洗;移位乘累加模块通过识别恢复后的非零值,通过移位的方式实现乘法;近似乘累加模块使用改进后的Drum乘法器对近似通信过程中未被近似的激活数据进行计算;最后将两个乘累加模块的结果合并成最后结果,进行下一级的传输。
[0062] 现有的研究表明,在不同的卷积神经网络结构以及不同的数据集中,卷积神经网络的每一层权重数据和激活数据大多呈现类高斯分布或截断高斯分布的特征,这种分布特性主要是由于神经网络在每一层中加入了归一化层,该层将各层的激活数据和权重数据的分布调整为关于零轴对称的状态。
[0063] 与此同时,卷积层后通常会接入ReLU激活函数,而该激活函数将所有负值截断为零,从而使得激活数据呈现截断高斯分布的特性,且会导致大量零值的出现,使得输出数据变得高度稀疏,受神经网络剪枝原理的启发,研究表明,当接近零值的权重或激活值被直接置为零时,对网络的推理精度影响非常有限。
[0064] 因此,我们提出了一种基于激活数据幅值的分级压缩与分段恢复方案,通过对激活数据按幅值进行不同等级的压缩处理,实现数据高效压缩,并通过分段的恢复方式在保证网络精度的前提下,最大程度地降低通信开销。
[0065] 在介绍该数据压缩和恢复方案的原理之前,首先需要介绍片上网络(NoC)中处理单元(PE)之间通信时数据包的组成,一个数据包通常由三个部分构成:头flit、体flit和尾flit。头flit包含了数据包的关键信息,包括flit的类型标记、源节点坐标、目的节点坐标、虚通道序号、路由算法以及神经元索引等,用于指导数据包的传输和处理;体flit则承载了主要的数据负载,包括flit的类型、序号以及具体的数据信息;尾flit则可以为空,或者与体flit中的数据信息保持一致,用于标识数据包的结束。
[0066] 通常,一个完整的数据包由一个头flit和一个尾flit组成,中间则包含N个体flit,承载实际的数据信息。对头flit的信息进行了拓展设计,增加了记录近似数据在数据包中的位置以及该数据的近似等级,这种改进使得在目的节点能够根据这些附加信息,对接收到的近似数据进行有效的恢复处理。
[0067] 以神经网络某一层的激活输出为例,提出了基于数据分级压缩和分段恢复的具体方案。该方案的原理是:首先设置一系列近似阈值T0~Tn,对于该层的激活数据,如果激活数据小于T0,则将其近似等级设定为0;如果激活数据位于T0与T1之间,则将其近似等级设定为1,依此类推,对于大于Tn‑1但小于Tn的激活数据,设置其近似等级为n‑1。
[0068] 被近似的体flit的位置以及相应的近似等级会被记录在头flit中,而被近似的激活数据则会从数据包中删除,后续的flit会前移,从而缩短数据包的长度,提高传输效率;对于幅值超出近似阈值区间的激活数据,即大于Tn的激活数据,将不进行近似处理,保留其原始精度。
[0069] 在数据包传输至目的节点后,恢复模块会提取头flit中的近似信息,根据这些近似信息进行数据的分段恢复。具体恢复过程是依据近似等级,将激活数据恢复为该分段内左边界的阈值。例如,近似等级为0的激活数据将被恢复为0,近似等级为1的激活数据恢复为T0,依次类推,从而完成近似数据的重建。在这一过程中,保证了激活数据的压缩效率与恢复精度之间的平衡,最大化压缩率的同时,尽量减少对网络推理精度的影响。
[0070] 为了实现上述基于数据分级压缩和恢复方案的近似通信,提出了一种质量模型,用于为网络的每一层快速确定满足质量损失约束的近似阈值,该过程在GPU上执行并生成一个称为“配置表”的阈值信息。
[0071] 具体流程如下:首先执行一遍完整的推理过程,然后对每一层的激活数据进行排序,提取该层激活数据分布中位于前20%、前40%、前60%和前80%位置的数据值,之所以选择这几个比例,是因为实验结果表明,在数据分级压缩和恢复方案下,大多数神经网络的某一层最多可以近似处理80%的数据,划分四个等级便于在网络运行时进行拥塞感知和动态调控。
[0072] 接着,找到距离这些数据值最近的能够用2^m+2^n+2^k形式表示的数据值作为该层的近似阈值,选择这些近似阈值有助于加速计算并提高能效。神经网络的质量损失与数据的近似率密切相关,当某一层发生拥塞时,选择更大的近似阈值,意味着该层的数据压缩率(即近似率)将更高,然而,为了满足整体的质量损失约束,需要降低其他层的数据近似率,即减小这些层的近似阈值。
[0073] 然后,在完成每一层的近似阈值选择后,考虑到并非所有阈值组合都能满足质量损失约束,因此需要遍历所有可能的近似阈值组合来找到最优解。为了减小这种遍历带来的计算开销,通过将占用节点较少的网络层合并,减少了近似阈值的搜索空间。例如,当一个网络有19层时,理论上需要遍历4^18种可能的组合(最后一层不进行近似处理,因此仅有18层需要选择近似阈值),这会导致极大的时间开销。然而,将占用节点较少的层合并后,搜索空间会显著缩小,此外,这种层的绑定操作还能在动态调控过程中使每次调整的节点数量更加均匀,从而在NoC上推理时使网络的负载分布更加平衡。
[0074] 具体应用中,设置神经网络质量损失阈值为2%,遍历得到近似阈值配置后,进一步将近似通信和近似计算相结合,在C++平台上推理神经网络,并使用发明提出的近似近似乘累加单元替换精确近似乘累加单元进行推理,保存num个计算与通信结合下满足质量损失约束的阈值配置。
[0075] 在将神经网络部署在NoC上进行推理时,网络每层的流量会随着时间动态变化,为了有效缓解通信拥塞,提出了一种基于拥塞感知的阈值动态调整方案。该方案通过在全局控制节点中内嵌一个全局动态阈值控制器,实时感知每层节点的拥塞情况,并根据这些情况动态调整每层节点的近似阈值,从而缓解系统运行过程中可能出现的拥塞问题。
[0076] 该控制器首先会初始化每个节点的编号,并记录不同节点对应的网络层编号以及每层网络的节点数量;随后,控制器会获取每个本地节点的拥塞状态,本地节点的拥塞情况通过本地缓冲区的空闲槽占有率来衡量,如果某个节点出现拥塞,系统会将该节点的congest标志设置为1,并统计每层出现拥塞的节点数量,例如,第一层出现了3个拥塞节点,第二层有2个节点发生拥塞;接着,控制器计算每一层拥塞节点数量占该层总节点数的比例,以此评估哪一层是最拥塞的;然后使用贪婪算法,如果出现最拥塞层有多个配置的阈值是一样的情况,则找出次拥塞层,并通过该层的不同配置的阈值决定最后所选取的配置信息,以此类推。
[0077] 该基于拥塞感知的动态阈值调整方案能够根据不同层的相对拥塞情况,在网络运行时实时调整各层的近似阈值,显著缓解不同应用和映射场景下的拥塞问题,从而提高系统的运行速度,缩短神经网络推理的总执行时间。一旦得到优化后的阈值配置,全局控制节点会将其发送至各个本地节点。本地节点中的近似模块和恢复模块在接收到新的近似阈值后,会根据更新后的阈值信息执行数据的分级近似和分段恢复操作,以确保网络运行的高效性。
[0078] 传统的近似神经网络加速器通常仅仅考虑近似通信或近似计算中的单一方面,未能将二者有机结合,从而未能进一步减少神经网络推理的总执行时间。针对这一局限,利用近似通信后的数据分布特性,设计出了一种具有低延迟、低功耗特性的近似计算模块,可与近似通信有机结合,实现计算加速。正如前述,卷积神经网络的层间激活数据通常呈现类高斯分布或类截断高斯分布(如图2所示),而通过提出的分级压缩和分段恢复方案处理后,近似通信在目的节点恢复的激活数据则表现出阈值以下为离散分布、阈值以上为连续分布的特征(如图3所示)。
[0079] 此外,由于恢复后的激活数据中0值的占比显著增加,基于这一特点,本发明提出的近似计算模块由三个核心子部件组成:稀疏重排模块、移位乘累加模块和近似乘累加模块。
[0080] 稀疏重排模块的主要功能是对输入数据进行零值稀疏化处理,并对非零数据进行重排,以提高计算效率;移位乘累加模块则负责处理在近似通信中已被近似处理的数据,而近似乘累加模块则使用改进的Drum乘法器来计算在近似通信过程中未经近似处理的数据,以进一步减少计算功耗;稀疏重排模块(如图4所示)在一个周期预取出一批激活数据,通过比较器过滤掉其中的零值,然后将经过近似恢复的数据和未经近似处理的数据分别通过两条路径输出到对应的近似计算模块完成计算。
[0081] 移位乘累加模块(如图5所示)由三个位置寄存器、三个权重寄存器、加法器和移位器组成。该模块在工作时接收来自稀疏重排模块的小于近似阈值的输出作为输入。首先,对该输入的特定比特位进行判断,由于设定的近似阈值是符合2^m+2^n+2^k的形式,因此只需判断m、n、k位是否为1;如果为1,则相应的权重寄存器会将该数据对应的权重进行累加。当移位乘累加模块接收到数据稀疏重排模块发出的完成信号时,三个权重寄存器中的值会被移位后累加,最终输出结果。
[0082] 对于未被近似的激活数据,这些数往往较大,在二进制乘法运算中,输入数据的高位对最终计算结果的精度具有决定性影响,他们的重要性远超过数据的低位,因此借鉴DRUM乘法器的设计理念设计了近似乘累加模块(如图6所示)以实现这部分数据的计算,此模块仅将激活数据的包含首位1的高K比特送入近似计算模块,且通过实验发现,对于大部分网络,每一层阈值的最小值往往都大于256,因此近似乘累加模块在检测激活值的首位1时,仅检测高8位即可,且在K固定为6时,近似片上网络用于加速大多数卷积神经网络时推理精度损失在2%以内;同时近似计算模块不仅能跳过0值运算,还能两路并行计算近似通信过程中的近似值和非近似值,且以较小的额外开销实现了显著的计算加速。
[0083] 图7为本地节点中的近似模块,该模块包括了数据FIFO、近似数据FIFO、近似阈值寄存器、比较器、近似等级编码器等。首先我们通过数据FIFO将存储模块(Buffer)中的数据进行缓存,只要FIFO不为空就对FIFO进行读操作,并且将读出来的数据与近似阈值寄存器中的4个阈值进行比较;然后对比较的结果进行近似等级的编码(组合),编码后的近似等级便存入近似等级寄存器中,同时我们将近似等级按位或后控制数据选择器,该数据选择器可以将近似数据进行丢弃或保存至近似数据FIFO中;未被近似的体flit中的数据由近似数据FIFO中的有效数据打包组成。
[0084] 图8为本地节点中的恢复模块。该模块包括了flit解码器,近似等级寄存器,近似阈值寄存器和数据FIFO。flit解码器将头flit中的近似信息进行提取并存入近似等级寄存器中对应的位置;然后数据选择器根据近似等级信息选择不同的数据存入数据FIFO中。
[0085] 本发明在实际仿真中的有益效果:
[0086] 为了验证本发明提出的架构在缩短神经网络加速器推理总执行时间的效果,在CNN‑Noxim平台上进行了仿真。我们设置NoC为8*8的2D‑mesh结构,每个数据包包含8个flits,每个flit为36bits,神经网络在NoC上的映射采用随机映射,路由算法为XY路由;采用的benchmark为基于CIFAR10的卷积神经网络包括AlexNet,VGG11,VGG13,VGG16,ResNet8,所有网络采用16bit量化,精度损失不超过2%;同最先进的近似通信框架包括ACDC_ABDTR、ACDC_APPROX、Neu_NoC进行了比较,也和稀疏计算的神经网络加速器进行了比较,提出的框架为FAS‑NoC。
[0087] 比较维度包括总执行时间、以及数据压缩率(近似率)(如图9和图10所示)。其中不同架构总执行时间对不采用近似技术的NO_APPROX进行归一化处理;数据压缩率越高代表近似通信过程中被近似丢弃的flit的数量越多,通信延迟也就越低。从结果可以看出,提出的FAS‑NoC在总执行时间的降低和数据压缩率的提升上有显著效果,这是由于APPROX_NoC的近似方式为截断近似,并采用了模式匹配机制压缩高位数据,而在进行神经网络推理时采用16bit量化权重和激活,这就导致在数据精度损失小于2%的情况下可截断的位宽较小,同时导致数据高比特位压缩受限,数据近似率低。
[0088] ACDC_ABDTR方案对传输数据的值不进行监测,按照固定间隔丢弃flit,从而导致可能会丢弃掉一些关键的大值。在2%的质量损失的约束下,可丢弃的包极其有限。稀疏计算方案不考虑通信的优化,导致其执行时间的优化有限。
[0089] 此外,为了证明发明在通信延迟和计算延迟的优化,分别统计了VGG16的前几层卷积层的通信和计算时间。图11和图12展示了这一结果,可见提出的FAS‑NoC不仅缓解了通信延迟,也实现了计算加速,其中,与稀疏计算的加速器做对比,在计算延迟上进一步降低,这是由于将一部分处于0‑T0的激活近似为0,进一步增加了网络的稀疏性,从而节省更多的计算时间。
[0090] 本发明将近似通信和近似计算的有机结合显著降低了神经网络推理的总执行时间。
[0091] 应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,能够对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。