面向无人装备的智能边缘计算软技术分析
2023-10-07张凯歌卢志刚聂天常李志伟郭宇强
张凯歌, 卢志刚, 聂天常, 李志伟, 郭宇强
(北方自动控制技术研究所, 山西 太原 030006)
0 引言
神经网络在计算机视觉[1]、自然语言处理[2]、强化学习[3]等方面的应用逐渐走向成熟。尤其是计算机视觉方面,深度神经网络已经成为目标检测、目标识别、图像降噪等问题的主要解决方案。这得益于深度神经网络模型在网络结构上的不断完善。具体来说,残差网络的出现使得神经网络的深度不再受到梯度爆炸和梯度消失的限制[4];CSPNet的出现解决了梯度信息重复导致的计算量庞大的问题[5];注意力机制的出现提升了神经网络对关键信息的敏锐度[6];自注意力和transformer的引入使得深度神经网络模型的特征提取功能扩大到范围更广的局部-全局特征间的联系[7]。模型结构复杂度的提升往往伴随着更大的算力需求,使得深度神经网络模型的部署被局限在TPU或GPU。例如,在TPU或GPU上训练一个ResNet典型目标识别网络只需不到10 min,推理可以实现实时处理[8],而这对于嵌入式设备来说几乎无法实现。在这种情况下,一系列对计算和内存资源要求不高的方法成为研究热点[9-10]。这种在边缘端实现智能技术的方法称为智能边缘计算。
随着智能化、无人化装备技术的发展,智能技术在无人装备上的应用成为实现无人装备战斗力生成的关键。然而,受到体积、质量、能耗等的约束,无人机、无人车、巡飞弹等无人化装备采用的硬件算力受到极大限制,使得大规模深度学习模型的应用成为挑战。而无人装备智能化的发展却日益迫切,对智能化计算技术提出了部署在低功耗、小体积的嵌入式平台等资源受限条件下运用的需求,主要有:模型计算量要小,便于实现实时处理;模型参数量要少,便于在边缘端部署;模型性能要优,在满足轻量化的条件下易于训练。鉴于上述原因,智能边缘计算软技术得到了广泛关注,分析其实现方法和计算性能,对深度学习模型在智能无人化装备的应用具有重要意义。
本文的主要贡献有:
目前边缘计算方面的绝大多数文献包括技术类和综述类文献,对智能化算法的研究往往侧重某项或者某类技术,缺乏面向应用的系统性分析。本文对近年来智能边缘计算相关技术进行整理分析,提出一种从模型设计、训练,再到部署的全栈式智能边缘计算应用框架,即通过模型压缩方法来设计轻量化的神经网络模型,通过引入知识蒸馏的方法对轻量化模型进行有效训练,通过参数量化来加速模型推理时间。
目前大多数边缘计算综述性文献介绍过于宏观,或者过于偏向某单项技术,且对近两年来该方向的工作介绍分析不足。本文在分析得出上述框架基础上增加了对近两年相关技术的整理,从定性和定量角度对各类方法的优缺点进行了总结,并从实际应用的角度开展了分析研究。
1 智能边缘计算软技术
近年来,实现智能边缘计算的软方法有多种,如卷积核分解法,使用1×N和N×1卷积核代替N×N卷积核;深度压缩方法,包括模型剪枝、参数量化、哈弗曼编码等;还有奇异值分解、低精度浮点数保存等方法。智能边缘计算软技术主要利用模型设计、压缩和加速计算理念,从模型算法层面实现深度神经网络在边缘设备上轻量化设计与部署的目标,本文主要采用的方法有模型剪枝[11]、知识蒸馏[12]、参数量化[13]等技术。图1对本文重点介绍的智能边缘计算软技术进行了汇总。所涉及的技术有:OBD[14]、Greg[15]、OBS[14]、DepGraph[16]、RMP[17]、ASS[18]、Hrank[19]、CRD[20]、HSAKD[21]、Attention transfer[22]、RCO[23]、semantic calibration[24]、FSP[25]、IRG[26]、Feature embedding[27]、在线蒸馏[28]、自蒸馏[29]、无标签蒸馏[30]、robust quantization[31]、BRECQ[32]、Adaround[33]、EIAOI[34]、STE[35]、QFT[36]、quantization noise[37]。表1对25类智能边缘计算软技术的优点和缺点进行了概括总结。
表1 常见模型压缩方法的优点和缺点
图1 智能边缘计算技术汇总
1.1 采用模型剪枝的轻量化神经网络构建方法
模型剪枝旨在减少网络模型的参数数量和计算复杂度。通常的手段是将特定数量的参数置为零实现,根据置零参数的分布可分为结构剪枝[38]和非结构剪枝[39]。非结构化剪枝的特点是颗粒度较细,但多为随机权重剪枝,图2为非结构化剪枝的示意图,剪枝掉了与神经元A相关的权重。剪枝后的权重是一个稀疏矩阵,因此可编码为数组格式来减少存储空间。常见的编码格式有绝对位置编码和相对位置编码。绝对位置编码由3个数组构成,分别表示非零权重的值、权重的绝对列位置和权重的列索引。相对位置编码由两个数组组成,分别存储非零权重的值和相对位置。
图2 权重剪枝原理图
如何选取需要被剪枝的权重是非结构化剪枝的核心。最先提出的非结构化剪枝方法是LeCun提出的最优神经损失(OBD)[14]。该方法用海森矩阵来表示优化目标。随着“早停(Early Stop)”等优化方法的出现,参数的梯度不再以零结束。针对这个问题,Laurent等提出了针对早停模型的剪枝方法,将优化参数控制在一个较小的浮动范围,并通过多步优化法和正则项来控制参数变化幅度[40]。
非结构化剪枝的方法由于稀疏的特征往往需要额外的软件包和硬件支持,而结构化剪枝多为粗粒度剪枝,不需要这些额外的支持[11]。最典型的结构化剪枝方法为基于通道的剪枝[41],如图3所示,其中B为需要被剪枝的特征图矩阵,A为B的上一层特征矩阵,Q为需要被剪枝的卷积核矩阵,C为B经过卷积层Q后输出的矩阵,虚线部分和Q、B中的间隙代表被剪枝的部分。假如将特征图B中间的两个通道移除,卷积滤波器Q对应的卷积通道将被移除,再将生成特征图B的卷积核对应的通道移除,这样卷积神经网络的参数量将显著减少。这体现在图3中神经网络的空洞部分。该算法的目的是减少特征图矩阵B的通道数量,从而减少计算量,同时保证特征层C的输出在剪枝前后的表征意义没有太大差别。这种技术通过删除不重要的通道来实现模型压缩和加速计算的效果。
图3 通道剪枝原理图
结构化剪枝的关键在于确定需要被剪枝的通道和稀疏度,Li等提出了一种确认稀疏度的方法,采用马尔可夫过程建模从较小剪枝稀疏度向较多剪枝稀疏度转移的过程,在每次优化的过程中更新马尔可夫过程的参数,从而确定需要保留的通道数[42]。Lin等利用人工蜂群算法,通过比较剪枝前后的网络性能确认各层通道剪枝比例的离散值,最终确认各层需要被剪枝的通道数量[18]。采用以上方法确认稀疏度后,需要确认哪些通道可以被剪枝。Lin等根据图像输入神经网络后各通道特征图的秩确认需要被剪枝的通道,特征图的秩越大代表该通道越重要[19]。Fang等针对剪枝CNN、RNN、GNN等不同网络结构提出了通用的剪枝技术,构建依赖图来确定不同层之间的依赖关系,再根据该图来完成剪枝[16]。Shibu等利用进化算法优化随机生成的向量,再将该向量送入两层全连接层来生成通道剪枝后网络的权重[17]。
1.2 基于知识蒸馏的轻量化模型训练方法
在当前预训练模型越做越大的时代,通过知识蒸馏的方法对剪枝的模型进行训练,能够得到性能更优的模型。迁移学习是机器学习的一个分支,就是把已经训练好的模型参数(可理解为模型学到的知识)迁移到新的模型来帮助新模型训练,从而加快并优化模型的学习效率,使新模型不用从零学习。教师-学生网络是迁移学习的一种。学生网络的结构简单,便于部署在边缘设备上。教师网络的学习泛化能力强,可以有效提取所需要的特征。知识蒸馏就是在模型精度不大幅减小的情况下,设计一个小的学生网络,通过学习实现大型教师网络的功能。大型网络相对于简单网络来说通常有比较直观的精度优势。然而这种优势不一定是两种网络间的架构差距造成的,而是训练难度之间的差距造成的[43]。这是知识蒸馏能将大型网络压缩成一个小型网络的前提。知识蒸馏使用特定的轻量级网络来模仿训练好的教师网络,通过提取教师网络激活层的软输出来获取模型的暗能量,从而有效提升模型的性能[44]。根据迁移的激活层位置,可以将知识蒸馏分为基于反应的知识蒸馏、基于特征的知识蒸馏以及基于关系的知识蒸馏。根据蒸馏发生的阶段可以划分为在线蒸馏、离线蒸馏和自蒸馏。
1.2.1 基于反应的蒸馏
基于反应的蒸馏是指学生网络根据教师网络最后一个激活层的输出来学习的技术[44]。传统神经网络经过softmax的输出更接近one-hot编码,即输出的分布为硬分布。最后一个激活层的输出由于还没有经过softmax层,分布为软分布,携带着更多有价值的信息,更有利于学生网络的训练。获得激活层的输出后,可给softmax函数引入一个温度T来控制分布的软化程度,改进后的函数为
(1)
式中:qi为软化后的softmax层在第i个维度的输出;zi为输入softmax层第i个维度的logits。
学生网络的损失函数通常由两部分组成,学生网络软分布与教师网络软分布的交叉熵损失,以及学生网络的输出与真实值之间的交叉熵损失。训练过程中使用引入T的softmax函数来更新参数,推理过程则使用传统的softmax函数来使分布z接近one-hot编码。这种基于反应的知识蒸馏方法的缺点是过于注重最后一层激活层的输出,略过了对中间层的学习,因此往往受限于教师网络的特征提取过程[45]。基于反应的知识蒸馏方法主要有Dilip等提出的CRD,该方法针对知识蒸馏后学生网络丢失部分特性的问题,根据图片旋转后的特征差异训练学生网络,有效避免了特征的丢失[20]。
1.2.2 基于特征的知识蒸馏
不同于基于反应的方法,基于特征的蒸馏方法不仅关注最后一个激活层的输出,也关注教师网络中间线索层的输出[46]。通过建立学生网络中间层和教师网络线索层之间的关系,使学生网络更加接近于教师网络。需要注意的是,学生网络被选取的中间层数过多往往会导致精度下降。学生网络被指导层向教师网络线索层学习的损失函数为
(2)
式中:L(Wg,Wr)为基于特征知识蒸馏需要最小化的损失函数值,Wg为教师网络输入到需要被蒸馏的线索层的所有神经网络参数,Wr为教师网络与学生网络之间维度转换的网络结构参数;Wh为学生网络输入到被指导层的神经网络参数;uh和vg分别为教师网络在输入为x、参数为Wh时在线索层的激活值,以及学生网络在输入为x、参数为Wg时在被指导层的激活值;r为vg经过添加的参数为Wr的卷积层或全连接层的输出。由于被指导层和线索层的大小不一定相同,需要在被指导层之后临时添加一个全连接层或是卷积层来将被指导层的大小转变为线索层的大小(见图4)。
图4 基于特征知识蒸馏的示意图
基于特征的知识蒸馏需要先定义好匹配的线索层和被指导层,通过梯度下降法来更新学生网络的参数,再对最后一个激活层的输出做基于反应的知识蒸馏,来更新其他网络层的参数。Zagoruyko等在式(2)基础上添加了线索层和被指导层注意力特征图之间的L2损失,将注意力机制应用到知识蒸馏[22]。Jin等提出了基于路径约束线索的知识蒸馏方法[23]。
Chen等提出了跨层知识蒸馏方法,通过注意力分配机制自适应地给学生网络分配教师网络特征[24]。尽管基于特征的知识蒸馏在训练过程中展现出了良好的性能,但如何高效地选择相对应的线索层和被指导层仍然需要进一步研究[46]。Yang等提出了HSAKD方法,将网络的输出特征对图像的不同旋转角度进行区分,再逐层进行差异学习,加深了模型对知识的理解[21]。
1.2.3 基于关系的知识蒸馏
基于关系的知识蒸馏将教师网络内部不同激活层之间的联系考虑在内,学生网络通过模仿这种层间关系来提升精度[25]。将层级联系转化为特征矩阵的方法为计算求解过程流(FSP)矩阵:
(3)
LFSP(Ws,Wt)=
(4)
式中:N为输出样本x的个数;LFSP(Ws,Wt)为基于FSP矩阵的知识蒸馏损失函数,Ws为学生网络权重,Wt为教师网络权重;λi为自定义的权重。训练的流程为首先训练好教师网络,根据式(3)计算出学生网络和教师网络的FSP矩阵,再根据式(4)优化学生网络,最后做参数微调。
除了用FSP来表示特征层之间的关系,Liu等在2019年提出用个例关系图的方法表示个例特征、个例特征之间的联系以及特征空间在层与层之间的转换[26]。Chen等提出基于流形学习的知识蒸馏方法[27]。Passalis等用概率分布来表示不同层间的关系[47]。
1.2.4 知识蒸馏的其他算法
在线蒸馏是指教师网络和学生网络同时进行训练,其优势在于可以同时训练多个学生网络组成学生集体,结果往往优于离线蒸馏[28]。在线蒸馏教师网络和学生网络的损失函数都为真实值与预测值之间的交叉熵损失加上教师网络和学生网络softmax值之间的Kullback-Leibler divergence(KL散度)。自蒸馏是一种特殊的在线蒸馏,学生网络被选取为教师网络的一部分。自蒸馏将复杂教师网络分成若干块,每一块作为一个学生网络训练[29]。程祥鸣等提出了一种无需标签数据即可完成知识蒸馏的方法,学生网络通过混合样本数据增强直接学习教师网络表征信息,训练的学生网络比一些大型网络的识别效果要好[30]。除了用于模型压缩,知识蒸馏也可以用来对跨类别特征的模型进行迁移学习[48]。最近知识蒸馏已经被用于常见的YOLOv3[49]和YOLOv4[50]目标检测算法并取得了良好的效果。
1.3 基于参数量化的模型运算加速方法
参数量化旨在通过将浮点型数据整型化来简化运算的时间和空间复杂度。参数量化根据量化发生的阶段可以分为训练中量化(QAT)[51]和训练后量化(PTQ)[52]。QAT参数量化发生在训练阶段和推理阶段,PTQ只发生在推理阶段。PTQ方法最常见的是将float32的数据转化为int8的数据来进行模型的正向运算。这里以全连接层的正向运算为例子,说明参数量化的过程。参数的量化满足式(5):
r=S(q-Z)
(5)
式中:r为数据的浮点型表示;S相当于浮点型空间与整型空间的尺度比,是一个与r同类型的浮点型数据;q为数据量化后的整型数据;Z为整型空间的一个偏移量。对于两个相乘的特征图和权重矩阵,整个前向过程可用式(6)表示:
(6)
计算两个int8相乘后的结果需要用int32的整型数据来表示,因此需要一个将该数据仿射到int8数据类型。整个量化的过程如图6所示。
图6 深度学习网络参数量化前后数据流对比
QAT量化的代表方法是直通估计器(STE),该算法将参数量化需要的比例和偏置项加入到模型的训练过程,由于量化函数的反向传播梯度为0,需要对量化函数进行近似。STE将量化函数的梯度近似为1,有效解决了训练时梯度消失的问题[35]。
除了以上量化方法外,Jacob等使用量化的权重和激活值实现了只使用整数的前向运算,并且以STE为基础估计的梯度进行反向传播运算[34]。Fan等在此基础上提出了基于噪声的模型压缩方法,把压缩的精度进一步提升[37]。针对不同的量化数据类型,Chmiel等提出了robust quantization方法,该量化方法对不同量化步长不敏感,引入Kurtosis损失函数项来使训练的模型鲁棒性更强[31]。Nagel等提出了一种不同于以往量化为最近整数的策略,使用AdaRound方法自适应于数据和任务损失[33]。Li首次提出了一种基于int2的PTQ方法,该方法通过重建神经网络单元以及混合精度的方法,使量化的精度和速度进一步提高[32]。针对目前大多数PAT量化技术只能优化一种参数如步长、偏置等,Finkelstein等提出了QFT,这是一种可以同时优化多种参数的PAT方法,该方法能在误差不大幅降低的情况下有效加速前向计算的时间[36]。
2 轻量化神经网络模型性能计算分析
自动目标识别是无人装备智能化的一个显著特征和重要功能。以目标识别为例,采用本文讨化的智能边缘计算方法对当前主流神经网络模型进行轻量化模型剪枝、知识蒸馏、参数量化处理,对各模型大小、计算效率以及性能进行分析。首先,以VGG-16为初始网络,采用各种剪枝方法进行剪枝,在数据集CIFAR和ImageNet上测试,计算各模型剪枝技术的精度、速度以及参数量的平均值(见表2)。
表2 模型剪枝方法性能对比
由表2可以看出,各模型剪枝方法均有较明显的加速效果。其中,L1-GAP、APoZ-GAP、ThiNet和ThiNet-T方法在减少参数数量上都有良好的表现,参数减少到十分之一仍然能够保持良好的性能。但是,通过对ThiNet和ThiNet-T方法的对比也可以看出,模型压缩到一定程度后,如果继续压缩,则会导致明显的性能下降,如ThiNet和ThiNet-T方法的Top-1和Top-5的误差增加率分别从1%和0.52%跃升至9%和6.47%。TE方法采用卷积核裁剪的方法显著提高了计算效率,但是参数量减小上不是很明显。这是因为卷积采用共享卷积核方式并行处理,并进行滑窗滤波,卷积核本身所占资源并不大,而TE方法裁剪的卷积部分在整个网络参数中占比较小,但相比全连接网络的固定计算量,卷积并行处理的计算资源需求大,因此计算效率仍然有较明显的提升。Greg提出了一种生长正则化(growing regularization)的自动模型参数剪枝方法,从流程角度对剪枝进行了优化,取得了突出的加速效果[15]。之后,EarlyCroP将结构化剪枝方法与非结构化剪枝相结合,最终精度有所提升,但加速倍速较Greg略有下降。DepGraph考虑了各权重之间的依赖关系,利用依赖图的方式综合考虑剪枝对模型的影响,有效减少了剪枝后精度丢失的问题,取得了较好的综合效果,参数数量减少了一个数量级,在减少算法空间复杂度上有良好的体现,误差率的增加也较小[16]。进一步分析Greg和EarlyCroP结果和剪枝所用的技术可以看出,模型剪枝的结果和产生的效果与采用的参数重要性衡量方法密切,良好的参数剪枝技术的设计能够从应用角度出发,综合考虑精度、压缩比和计算效率,从而给出最优的模型应用设计方案。
表3为各模型压缩后在CIFAR100数据集上的性能。其中:FT方法使用一种基于无监督学习的自动编码器方法,实现了教师网络和学生网络之间的知识迁移,在模型大小只有教师网络约三分之一的情况下实现了与教师网络(72.34%)相近的精度(69.84%);NST方法通过对损失函数的设计实现对不同数据分布间差异(distribution discrepancy)的衡量,通过减小数据分布之间的差异实现知识的迁移;AB方法通过对激活函数的激活边界进行分析,设计了基于激活函数输出值的知识迁移方法,取得了较好的性能;CRD也是一种根据数据分布差异性而进行知识迁移的方法,不同于经典的数据分布度量距离KL差异性距离(KL-Diversity),该方法使用对比学习(contrastive learning)来保留更多结构信息对知识迁移的帮助,取得了更优的迁移效果,精度由教师网络的72.34%到学生网络的71.16%;最近的工作HSAKD在训练时使用了额外的辅助分类任务对原有分类任务进行加强学习,并对中间层和最后层的网络都进行对比学习的方法,大幅度减少了从教师网络到学生网络之间的特征丢失,进一步减少了模型蒸馏后的精度损失,取得了比教师网络更加优秀的性能(教师网络72.3%,学生网络73.62%)。综合上述分析可以看出,知识蒸馏技术减少的参数数量和时间取决于教师网络和学生网络的结构以及相应的训练方法,在不大幅降低精度的情况下基本能够实现对小模型的有效训练/知识迁移。而且,通过对训练方法的合理涉及,部分学生网络模型的性能甚至能够优于教师模型。
表3 知识蒸馏方法性能比较
表4列举了参数量化方法的加速效果以及对模型精度的影响。其中:BWN方法仅将模型中的滤波器核进行二值化的参数量化处理,得到了2倍加速,误差也有所增加;XNOR-Net方法同时对输入参数和滤波器核进行了参数量化,显著提高了加速效果,提高了58倍,同时也带来了额外的精度下降,16%的Top-5误差率增加;DQ方法针对图像不同的输入信息评估输入信息的冗余程度,确定量化精度,从而建立了一种与输入相关的神经网络动态量化方法,在显著提高加速倍数的同时将误差率增加保持在较小的范围,如表4中Top-5误差增加率为2.8%;IntraQ方法针对合成图像中的类间异质性问题设计了距离约束条件进行零输入样本网络量化,取得了显著的加速效果以及较低的误差增加。BRECQ方法使用训练后量化(Post-training Quantization)方法,第1次将模型量化的位宽(Bitwidth)降至INT2类型,显著提升了加速倍数(加速29倍),同时保持了非常好的模型精度,如表4所示Top-5误差增加率为1.06%。综上可以看出,模型量化可以从模型本身和输入数据两方面着手,量化能够直接有效提高计算速度,但也在一定程度上带来误差的增加,并且误差增加因具体量化方法和实际问题而不同。
表4 参数量化方法对精度的影响
综上分析,在实际中可以结合上述方法以及实际应用的需求,采用DepGraph等模型剪枝方法进行轻量化模型设计,采用HSAKD等知识蒸馏方法对模型进行有效训练,减少剪枝方法对模型精度的影响,最后选择BRECQ等合适的参数量化方法进一步加速计算,可在误差率增加较少的情况下实现显著的加速效果。
3 未来展望
无人化智能化技术的发展正在对未来战场形态和兵器装备产生着重要影响。其中,作战指挥样式由原来的集中式、中心化朝着分布式、无中心转变,这种改变对武器装备的端系统提出了更高的计算要求,也对智能边缘计算技术的应用提出了更强的需求。未来,智能边缘计算技术将在武器装备智能化无人化发展的浪潮中持续受到关注,沿着多种技术途径的方向持续发展。一是随着对深度网络可解释性研究的深入,未来轻量化网络可以不通过基于经典网络的模型剪枝,而是直接进行轻量网络的设计、训练与部署,这是更有效便捷的方法;二是随着软技术中轻量化模型设计技术的不断发展与成熟,研究基于异构资源的智能计算系统的优化将是提高边缘计算性能的重要手段,其不仅需要软件层面的系统优化,更要有软件和硬件的协同设计;三是目前轻量化模型设计方法多基于传统经典网络的设计,对面向边缘计算的新构型网络的设计与研究还不足,是该领域的重要方向;四是知识蒸馏算法目前的学生网络都是采用现有的轻量级网络,还没有能生成适合于特定教师网络的学生网络的方法,未来使用搜索算法等方法生成适合于本教师网络的学生网络是研究方向之一。图7为未来研究趋势的示意图。
图7 智能边缘计算发展方向与趋势
4 结论
本文对模型压缩、知识蒸馏、参数量化等智能边缘计算软技术进行了系统分析,提出了一种从模型设计、训练再到部署的智能边缘计算应用框架,为基于深度学习的智能化技术在边缘端的部署应用提供了一种可行的参考技术路线。
虽然利用目前的边缘智能计算硬件(如Nvidia NX、华为Altlas200、寒武纪等)和本文提到的模型压缩与加速方法能够在一定程度上实现模型的部署,但是对于某些实时处理应用问题仍然存在一定的困难。例如,在嵌入式边缘端实现多任务处理(目标检测+识别+跟踪)仍然比较困难,利用目前单一的嵌入式板卡很难实现。未来,将注重软件硬件的协同加速设计,研究直接进行轻量化模型的设计与高效的加速方法,同时注重与底层硬件协同的算法优化,如并行处理、多线程资源分配、多处理器系统集成设计等,从软件算法和硬件适应性相结合的角度加强算法在实际应用中的加速效能。
除此以外,目前大多数智能边缘计算技术的性能测试工作只针对目标识别等问题和相关数据做了验证,对其他诸多军事领域的边缘智能计算的应用问题研究不够,如边缘指挥计算架构等,下一步将进一步结合实际业务对边缘计算在边缘指挥、智能火控等相关领域的加速计算架构进行探索研究。