1、CIC中国集成电路China lntegrated Circuit设计(总第 290 期)2023 7 https:/基于魂芯五号 A 的深度学习网络模型量化训练与部署方法赵旭东,宋亮亮,黄光红,林广栋安徽芯纪元科技有限公司摘要:随着深度学习在产业界加速落地,卷积神经网络在许多工业场景的应用中取得了令人惊叹的成就。为了支撑工业生产领域的智能化改造需求,业界纷纷推出专门针对卷积计算优化的边缘计算芯片。本文将介绍基于魂芯五号 A 智能计算芯片部署针对工业色选领域的神经网络模型案例。基于深度神经网络领域的倒残差结构以及智能芯片的计算特点,本文提出适合芯片部署的深度学习网络模型,结合量化感知训练方法和
2、计算图优化方法,有效提高网络推理速度、降低精度损失。实际测试表明,在基于8-bit 非对称量化感知训练以及优化部署后,待部署模型大小仅为原模型的 30%,量化后模型准确率损失约为 0.25%,单个核心推理速度约为 3000 物料每秒。关键词:边缘计算;量化感知;计算图优化;深度学习Quantization aware training and deployment method ofdeep learning network model based on HXAI-100ZHAO Xu-dong,SONG Liang-liang,HUANG Guang-hong,LIN Guang-dongA
3、nhui Siliepoch Technology Co.,LtdAbstract:Convolutional neural networks have made amazing achievements in the application of many industrialscenarios with the acceleration landing of deep learning.Technology companies have launched edge computing chipsoptimized for convolution computing one after an
4、other in order to support the demand for intelligent transformation inthe field of industrial production.We will introduce the case of neural network model deployment on the HXAI-100intelligent computing chip for the field of color separator.Based on the inverted residual structure and the computing
5、characteristics of our intelligent chips,we propose a deep learning network model that is very suitable for chip34中国集成电路设计China lntegrated CircuitCIChttps:/(总第 290 期)2023 7 deployment.And the network can improve the inference speed and reduce the accuracy loss effectively withquantization-aware trai
6、ning and computational graph optimization methods.Practical tests have shown that based onthe 8-bit asymmetric quantization aware training and deployment optimization,the size of the model after optimizationis only 30%of the original model,the accuracy loss of the model after quantization is about 0
7、.25%,and the inferencespeed of a single core is 3000 materials per second.Keywords:edge computing;quantization aware training;computational graph optimization;deep learning0引言随着人工智能技术的日益发展,边缘智能计算芯片的开发也如火如荼,其在移动互联网、IoT、工业视觉等领域的应用也越来越广泛。但随着全球经济竞争加剧,各主要经济体纷纷通过法案,给本地芯片行业提供政策支持;比如 欧盟芯片法案 的提出,表明了芯片产业“逆全球化
8、”加速发酵,全球化布局重构在所难免1。因此我国半导体相关产业的发展面临着新的机遇与挑战,与此同时发展国产化芯片来代替进口器件的任务已迫在眉睫。魂芯五号 A 智能计算芯片是安徽芯纪元科技有限公司研制的第一代人工智能芯片。该芯片是一款高性能 SoC 芯片,包含嵌入式 CPU 主控核、人工智能算法加速核 NNA 以及多种高速外设接口、慢速外设接口。可广泛用于军用、民用等各种领域,满足无人机、弹载嵌入式平台智能识别、信号侦查、预警探测目标分类和识别等装备的智能化发展需求;也可应用于安防、交通、工业机器视觉、语音处理等广泛的民用领域,可满足相关领域的国产化需求。魂芯五号 A 智能处理器集成 8 个异构计
9、算核心,包含 4 个 CPU 核,4 个 NNA(Nerual NetworkAccelerator)核。其中,CPU 核采用开源国产高性能嵌入式 RISC-V CPU,主要负责资源管理,运行操作系统、驱动程序、通信程序及数据预处理;NNA 核采用国产深度学习处理计算架构,主要完成高密集的智能计算处理,支持 CNN、RNN 等典型算法加速。目前,业界优秀的 AI 网络模型越来越复杂,网络越来越深,存在对边缘设备算力与存储需求较大的问题,然而大多数边缘侧设备存储以及算力资源均有限,并且受到功耗限制。为了解决这一问题,业界提出了一系列针对模型边缘侧部署的网络模型量化压缩2等优化技术。所谓模型量化是
10、一种将浮点操作转为定点操作的模型压缩技术。对神经网络进行低 bit 量化操作,可以缩小神经网络所包含参数占用空间的大小,降低神经网络运行时所占用的硬件内存,使得神经网络可以以低精度的方式运行在边缘设备中;但同时也会导致神经网络精度降低,稳定性急剧下降。针对此问题,通常会在训练阶段引入伪量化算子,对神经网络进行量化感知训练,使得神经网络在训练过程中能够感知量化的同时,其稳定性相比于单纯进行量化操作能够有所提升。为了优化模型在设备上的运行时间,本文还介绍了在模型部署阶段使用的计算图优化以及算子融合相关技术。研究表明,程序运行时消耗在数据移动上的能量大于消耗在数据计算上的能量。一次 DDR数据的搬运
11、消耗的能量可能是浮点数乘法的数百倍3。而神经网络计算又会涉及到大规模的数据搬运,因此,最大化地提高数据的复用性,减少数据在计算部件、片上存储器、DDR 之间的移动,可以极大地提高神经网络计算的能效。使用计算图优化和算子融合技术可以优化网络拓扑结构,调整网络计算和访存特性,达到降低计算量和访存的目的,进而降低神经网络的推理时间和边缘设备的能量消耗。本文选择工业色选行业的的河虾分选领域,结合该场景神经网络模型在魂芯五号 A 智能计算芯片上的实际部署需求,讲解如何通过量化感知训35CIC中国集成电路China lntegrated Circuit设计(总第 290 期)2023 7 https:/练
12、以及相关优化达到解决网络低比特部署需求的目标。1量化感知训练1.1 网络模型构建虾的数据均来自实际场景采集,依据虾的完整性可分为多个类别。本文中将实验数据分为 3 类,详见图 1。目标物体共有 4234 张图片,分为头部、尾部以及完整的虾三类。结合图 1 中提供的各类数据样本可知,目标的同一类别类内特性存在较大差异,光照各异同时目标尺度变化较大,给分类任务带来了较大影响。结合边缘侧任务高帧率的要求,本文选择基于 MobilnetV24基础网络架构来建立自己的神经网络分类模型,MobilnetV2 网络是一种优秀的轻量级网络,2018 年由 google 团队提出,为减少 ReLU 层导致的信息
13、损失,引入了 Linear Bottleneck 层;采用了短连接(shortcut)同时结合深度卷积5(depthwiseconvolution)的特点,提出了倒残差(InvertedResidual)结构,如图 2 所示是 stride=2 的倒残差结构图(IRBlock)。过程是先将特征图通过起到升维作用的、卷积核大小为 11 的卷积层,扩充通道数量,再通过 1 个深度可分离卷积(Depthwise Conv)层,相比原始卷积结构可以减少大量计算,再通过 1 个降维的11 的卷积层恢复通道数量,为了更适应芯片执行,本文所采用的倒残差结构,不含原特征的相加操作。本文设计的神经网络模型,其网
14、络模型结构参数设置如表 1 所示,本文默认普通卷积层包含批量归一化处理(Batch Normalization,BN6)和激活函数。首先使用简单的卷积层初步提取特征;再使用多个IRBlock 结构堆叠深度挖掘目标特征;再使用卷积层和全局池化层进一步提取和压缩有效信息同时调整网络输出大小;增加 dropout 层,随机丢失概率为0.2,防止神经元数目过多,学习能力过强而造成过拟合;最后添加全连接层得到目标分类结果。1.2 量化算法介绍由于 float32 的精度范围是-3.4 x 1038 +3.4 x1038,而 uint8 精度范围 0 +255,量化即是从更高精度数据动态范围向低精度映射的
15、过程,其间不可避免会损失数据精度。如图 3 所示是非对称量化示意图。下面以非对称量化为例说明,介绍由浮点映射到定点的量化公式:xq=roundxfs+z(1)图 1 河虾各类别示例图 2 倒残差模块结构图表 1 网络结构参数设置36中国集成电路设计China lntegrated CircuitCIChttps:/(总第 290 期)2023 7 图 3 非对称量化示意图s=xfmax-xfminxqmax-xqmin(2)z=xqmax-roundxfmaxs蓸蔀(3)其中,xf表示真实数据的的浮点数值,xq表示量化后的数值,z 表示浮点数 0 对应的量化值,s 为量化间隔;xqmax表示量
16、化后可表示的最大值,以 8bit 非对称量化为例,该值为 255;round 表示取整操作。可以看出,通过上述公式可以得到每个浮点值对应的定点值。在实际的芯片运行中,当我们把模型和输入量化后,其计算操作也要变为定点操作才可以有效利用芯片内部的定点计算部件。如非对称量化下卷积层的定点运算过程如下,首先基本的卷积计算如下所示:yf=xf*wf蓸蔀+b(4)由于:xf=xq-z蓸蔀*s(5)可得:yq-yz蓸蔀ys=xq-xz蓸蔀xs*wq-wz蓸蔀ws+bqbs(6)其中 xf,wf,b,yf分别代表浮点卷积的输入,权值,偏置和输出。下标 q,z,s 分别代表量化值,量化零点值以及量化间隔值。由于
17、偏置值涉及到加法计算,因此会使用更高位宽定点数表示,同时设置 bs=xsws。继续整理可得:yq=xq*wq+bq蓸蔀wsxsys(7)其中:wq=wq-wz(8)bq=-xz*wq+bq+yz*yswsxs(9)由于 bq可以预先计算,因此主要关注浮点数wsxsys与其他定点操作的乘法运算,经验发现其值总是在(0,1)之间,所以可将该值表示为 2-nM,其中 n是非负整数,M 是整数,因此整体可将浮点运算转换为定点运算。1.3 量化感知训练量化感知训练算法7是谷歌官方提出的一种算法。该算法旨在解决神经网络模型在量化部署时由于计算精度的降低而导致的整体性能的下降。其算法核心是在网络训练阶段的前
18、向传播过程中模拟量化效果,在训练过程中加入伪量化操作,来记录所需量化节点的极值范围,以便后续步骤求解量化间隔。网络模型梯度的反向传播依然按照 32 位浮点类型数据正常传播。这样该算法既获得了低比特量化方法的推理速度,又保持了模型精度。针对边缘设备来说不仅可以加快推理速度还可以降低功耗,大大降低了部署难度。下图是一般卷积神经网络的卷积层增加了伪量化算子后的训练过程示意图。BN6方法是 2015 年谷歌研究员提出的一种归一化方法,其目的是为了加速模型收敛、控制过拟合,可以缩短神经网络训练时间并使网络训练更稳定,所以其得到了非常广泛的应用。在实际应用时,通常在网络设计的时候会把 BN 层放置在卷积层
19、Conv 后面,同时加上激活层(如 ReLU)。为了加速网络计算,我们通常会在训练和推理时进行 BN+Conv层的合并操作。图 4 插入伪量化节点的训练示意图37CIC中国集成电路China lntegrated Circuit设计(总第 290 期)2023 7 https:/图 6 不同操作的能量消耗(45nm 0.9V)BN+Conv 层合并的公式如下:假设卷积层的输入为 X,权重为 W,输出为 Y,偏置为 bias。则:Y=W X+bias(10)BN 层的均值和方差计算公式如下:=1mmi=1移xi(11)2=1mmi=1移xi-蓸蔀2(12)经过 BN 层后的输出为:yi=xi-2
20、+姨+(13)其中,是 BN 层的放缩系数和平移系数,由训练决定。合并之后推理阶段的权值和偏置如下:bias=+bias-蓸蔀2+姨(14)W=W 2+姨(15)其中训练时会将每个 mini-batch 计算得到的均值和方差累积下来,通过移动平均法近似得到整个样本集的均值和方差(,2)。=n=n-1+1-蓸蔀1mmi=1移xi,n(16)其中 是移动平均系数,值越大表明当前 mini-batch 产生的均值和方差越重要,2 的计算同理。融合后其计算量与融合前单个卷积层的计算量相同,其融合后的输出公式如下:Y=W X+bias(17)在卷积层和 BN 层合并的基础上增加伪量化节点首先需要计算输入
21、和权重的卷积值,根据输出计算每一个 mini-batch 的均值和方差以及移动平均后的均值和方差参数,将合并后的权值量化后与输入进行卷积操作再加上偏置值经过伪量化节点后输出,此时完成了 BN+Conv 层的合并后的量化过程。结合了 BN+Conv 层的合并同时引入伪量化算子的训练过程示意如图 5 所示。2模型优化与部署2.1 网络层优化传统的计算机采用冯 诺依曼体系结构,在这种体系结构中计算和存储功能是分离的,分别由运算器和存储器完成。运算器和存储器通过总线互连通信,运算器从存储器读出数据,完成计算,然后将结果写回存储器。随着半导体工艺的演进,数据迁移的效率却没有显著提高,导致数据迁移所消耗的
22、能量与数据计算所消耗的能量之间的功耗比越来越大。根据研究,如图6 所示,数据搬运消耗的能耗已经达到计算类操作的数百倍之多,而且随着半导体工艺的进步,虽然总体功耗下降,但是数据搬运的功耗占比越来越大。图 5 ConvBN_fold 伪量化示意图38中国集成电路设计China lntegrated CircuitCIChttps:/(总第 290 期)2023 7 在数据搬运越来越昂贵的今天最大化地提高数据的复用性,减少数据在计算部件、片上存储器、DDR 之间的移动,可以极大地提高神经网络计算的能效。自从深度学习框架 Tensorflow 采用计算图来作为神经网络的计算表示方式之后,后续大部分深度
23、学习框架内部基本都采用图的形式来表示深度学习模型。一般计算图由算子和算子之间的连接构成,算子的输入输出数据可用张量表达。除了输入输出张量外,每个算子还会有一些额外协助算子运算的参数,比如卷积操作的 stride、padding、dilation等参数。把各种不同功能的算子,通过输入输出张量有机的结合起来就能完整表述一个神经网络的计算过程。神经网络在硬件上的推理过程就是把各个算子的计算任务映射到硬件上执行的过程。在机械的执行映射计算之前可以在计算图上实现各种优化,如层融合、图分割等等。计算图优化是一个静态优化的过程,根据网络拓扑结构,调整网络计算过程,达到降低计算和访存的目标。常见的计算图优化方
24、法包括:层融合:层融合是将连续出现的若干算子操作合并成一个算子,这样可以避免对数据的重复处理,降低访存量。如上述的 Conv+BN,或者 Conv+BN+relu,或者 Matmul+BiasAdd+Relu 等。冗余删除:类似于传统编译优化中的公共子表达式删除。基于计算图的优化可以发现网络中出现的冗余计算,针对神经网络计算图拓扑结构进行重构,可以删除重复的计算节点,节省硬件计算。优化存储布局:如 concat、shuffle、reshape 等类似的网络层,算子本身没有常规的乘加计算,一般涉及特征尺寸或通道大小的调整,而这些操作会带来大量的访存开销。通过优化存储布局,重构相关算子运算形式,将
25、相关层数据合理安排,能有效减少访存开销进而增加推理速度。由于不同深度学习训练软件框架定义的算子集合以及每一个算子的功能并不完全相同,专用于边缘芯片的前向推理框架需要提供足够完备的算子转换方法来支撑各种类别的算子并能够解析众多不同前端深度学习训练框架所训练出来的模型。一般在模型解析过程中,不同的前端深度学习框架算子特性以及转换操作也会给转换后的计算图带来不同程度的冗余,需要结合硬件架构设计以及不同的算子类型来研究高效的计算图优化方法以及算子在硬件上的映射方式,以达到最高的前向推理效率。例如,将 elementwise-add 转换为等价的卷积计算,或将部分池化操作转换为相应的卷积计算就可以利用卷
26、积计算单元进行硬件加速。比如将池化窗口为 2x2 的平均池化操作改为卷积核大小为 2x2,步长为 2,四个卷积核的值为均 0.25 的卷积操作即可将平均池化转换为卷积操作。模型优化器识别需要识别各类算子的特点,并根据硬件架构的特点进行相应的转换以达到模型加速的目的。2.2 模型部署图 7 为基于魂芯五号 A 的深度学习网络模型的部署流程,首先将训练好的第三方模型导出为标准格式,如 caffe,onnx 等;选择量化标定图片进行网络推理,收集到模型运行信息后进行量化操作,本框架支持 8/16bit 位宽的量化操作,可使用的量化方法为非对称量化或者动态定点量化。经过计算图优化操作可以删除冗余节点,
27、进行算子融合等优化操作,并最终映射为硬件支持的指令操作。图 7 模型部署流程39CIC中国集成电路China lntegrated Circuit设计(总第 290 期)2023 7 https:/表 2 是上述模型实际在魂芯五号 A 智能芯片上部署后测试得到的性能表。其中,当使用文章中的量化训练方法同时对权值和激活值做训练时,8-bit非对称量化后模型损失仅为 0.254%,效果好于不做量化训练直接部署的方法。同时由于待部署模型主要参数已转为 8-bit,相对于原始 ONNX 模型,大小缩减为不到原来的三分之一;在神经网络加速器运行在主频 800MHz 的情况下,单核处理帧率也达到了 312
28、5fps。3结论综上,本文采用了基于倒残差结构的小型网络结合量化感知训练方法对分类任务进行处理后,在基于魂芯五号 A 智能计算芯片的板卡上部署时,待部署的模型所需的存储空间小,计算量低并且小型化后精度损失可忽略不计。实际测试结果表明,模型可有效支撑用户目标物料的分选需求,推理速度也可满足实际的应用需求。本文介绍的模型训练与部署流程也为后续其他领域的应用部署提供了有效参考路径。参考文献1 李丹,申胜飞.从 欧盟芯片法案 看我国半导体产业发展J.中国集成电路,2022,31(06):12-15+362 Han S,Mao H,Dally W J.Deep compression:Com-press
29、ing deep neural networks with pruning,trainedquantization and huffman codingJ.arXiv preprintarXiv:1510.00149,20153 Horowitz M.1.1 computings energy problem(andwhat we can do about it)C/2014 IEEE InternationalSolid-State Circuits Conference Digest of TechnicalPapers(ISSCC).IEEE,2014:10-144 Sandler M,
30、Howard A,Zhu M,et al.MobileNetV2:Inverted Residuals and Linear Bottlenecks C/2018IEEE/CVF Conference on Computer Vision and PatternRecognition(CVPR).IEEE,20185 He K,Zhang X,Ren S,et al.Deep Residual Learn-ing for Image RecognitionJ.IEEE,20166 Ioffe S,Szegedy C.Batch normalization:Acceleratingdeep ne
31、twork training by reducing internal covariateshift C/International conference on machine learning.PMLR,2015:448-4567 Jacob B,Kligys S,Chen B,et al.Quantization andtraining of neural networks for efficient integer-arith-metic-only inference C/Proceedings of the IEEE con-ference on computer vision and pattern recognition.2018:2704-2713作者简介赵旭东,硕士,安徽芯纪元科技有限公司助理工程师,研究方向为机器学习系统。宋亮亮,硕士,安徽芯纪元科技有限公司助理工程师,研究方向为深度学习算法。黄光红,硕士,安徽芯纪元科技有限公司高级工程师,研究为方向人工智能芯片。林广栋,博士,安徽芯纪元科技有限公司高级工程师,研究为方向人工智能芯片。表 2 模型部署测试结果40