一种支持卷积神经网络稀疏计算的方法

2021-04-11 14:56中兴通讯股份有限公司余金清贺小龙
电子世界 2021年6期
关键词:表项乘法运算

中兴通讯股份有限公司 余金清 章 伟 贺小龙

本文提出一种对神经网络权重进行编排方法,根据量化的权重值的稀疏特性,通过只编排权重非0值,从而减少权重带宽;同时,提出一种硬件实现架构,结合编排好的权重,能够有效减少卷积网络的乘法运算,特别是在网络权重稀疏情况下,可以进一步减少卷积计算,从而提升神经网络处理能力。

1 背景分析

近些年来,人工智能技术在在全世界范围内得到了迅猛的发展,与此同时神经网络的规模不断增长,典型的神经网络动辄几十层甚至上百层,计算量不断的增加造成推理需要的时间也需来越长。

但实际应用中,在如此高的运算量中并不是所有的计算都是有效计算,特别是对于算法经过定点化或是稀疏化后,出现的权重为零的点,实际运行中,是不需要计算的。因此,神经网络的硬件加速器利用权重的稀疏特性减少计算量,且在此基础上进一步降低处理时间,提高效能,目前业界都在关注的重点技术问题。

2 设计思路

本设计采用两种方法来提升神经网络设计:

(1)权重编排:通过离线方式,对提前训练好的权重( weights)进行特别编排,去掉值为0的权重,完成对非0权重的编排。

(2)计算加速:卷积网络加速器,完成神经网络稀疏计算(只计算非0权重)提升网络处理能力。

2.1 权重编排

权重编排,通过编译器对每个积核中点化后的权重值重新编排,编排后的权重变为指示符表+映射表的形式。如图1所示,通过代运算将一个R*S*CH大小的卷积核切分成多个R*S*CH的卷积核(其中R为卷积核的列宽,S为卷积核的行宽,CH为子卷积核的通道数,假设层的卷积核通道数尾C,存在C<=CH),并对每个子卷积核中定点化后的权重值重新编排,编排后的权重变为指示符表+映射表的形式。

权重编排的实施方式,把相同规律的权重编排(即分类,对于8bit定点处理,如将1,2,4,8分为一类,3,6,12,24分为一类)在一起,先排正数权重,之后排负数权重。使用本文的方式,可以使原来需要R*S*C次乘加作,而编排后最多只需要R*S*C+256次加法操作和256次乘法操作同时,当卷积计算的累加和小于偏置时,可以提前停止卷积运算。

图1 权重编排流程

根据激活函数 ReLU(Rectified Linear Unit)特性,设置提前停止功能,正数权重和负数权重分开组合,正数权重类型排在向量前面,负数排在后面。

将离线编排好的权重数据,提前存储在存储单元中。

(1)对于权重为0的数据,由于其运算结果也为0,则不需要存储,包括对应索引信;后续运算直接跳过。

(2)对于特征数据,顺序存储在存储单元中。

权重0由于完成卷积运算结果还是0,在权重编排时就被丢弃,不参与计算,节省了存储资源与数据读写带宽,并提高了计算效率。

2.2 计算加速

图2为本文所述稀疏卷积神经网络实现的方法架构,其处理流程包括:

CPU根据当前处理的网络模型下发对应的指令给硬件加速器;同时,CPU会给DMA下发指令,让DMA去对应的存储单元中读出相应的权重以及特性数据。硬件解析指令,分别送给对应的控制以及输入输出缓存单元。

根据配置信息,需要将当前处理进度的权数据以及特征数据提前存放在缓存单元中。先从缓存单元中获取权重信息以及位置索引信息(权重位置信息),并根据权重对应的索引信息,去从数据缓存单元中素引对应的数据。

计算单元中的控制器,先将第一个指示符读到控制器中,之后按照顺序读取权重编排后的映射表内容,以映射表内容为地址选择条件,数据缓存中读取数据。

图2 稀疏的神经网络处理架构

图3 卷积计算结构

卷积计算,如图3所示,指示符内的映射表项读取时,在没有达到结束条件,在计算单元的分类累加单元进行计算预处理和加减操作。在计算单元的分类累加单元进行计算预处理(即移位操作,移位量取决于指示符表中的配置)和加减操作(加减取决于指示符表中的配置)。

分类累加过程,当同个指示符内的映表项读取完时即达到同一权重的结束条件时,查看分类结束标志,如果分类结束标志为未结束,则读取下一个指示符表项,继续完成累加操作。

分类切换控制,当分类结束标志为结束,则将累加后的结果,对应的权重值和分类累加计算单元编号送到分类乘加计算单元;同时,读取下一个指示符表项,并将分类累加处理器中的累加值清零,重新累加减操作,直到指示符表项中的分类结束标志指示为整个卷积操作完成。

分类乘法,分类乘加计算单元完成输入的权重和数据的乘法操作,并将乘的结果累加到部分和中。

根据该方案,配置分类乘法单元是否能提前停止运算,如果激活函数为ReLU,则使能提前停止功能,即判断当前卷积的部分和的值与偏置值的差值是否小于0,如果小于零,则反馈给计算单元的控制器,该计算完成处理。

该方法可以达到提前终卷积运算的结果目的,从而减少运算量,减少运算功耗,进而提高能效比。

总结:采用本文所述方法,与现有技术相比,通过权重转换和新计算单元相结合,提前离线对权重进行了零数据压缩,使得卷积操作的时间只非零权重的个数有关,较好的利用了权重卷积核的稀疏特性,节省了推理运行时间。与此同时,新的计算单元结构扩展性更好,可以支持计算提前中功能,即可以利用数据的稀疏特性,进一步降低运算量。

猜你喜欢
表项乘法运算
算乘法
一种改进的TCAM路由表项管理算法及实现
重视运算与推理,解决数列求和题
我们一起来学习“乘法的初步认识”
《整式的乘法与因式分解》巩固练习
有趣的运算
基于ARMA模型预测的交换机流表更新算法
把加法变成乘法
SDN数据中心网络基于流表项转换的流表调度优化
“整式的乘法与因式分解”知识归纳