首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何更有效的将深度学习算法部署在计算资源有限的设备?

神经?络量化是降低推理过程中神经?络的能量和延迟要求的最有效?法之?。这就是QAT的关键,即使?STE处理梯度?法计算的问题,从?使量化神经?络也可以训练,从?使模型在训练的过程,学习量化带来的损失,从?实现更?的准确率。

深度学习已成为许多机器学习应?程序不可或缺的?部分,现在可以在?数电?设备和服务中找到,从智能?机和家?电器到??机、机器?和?动驾驶汽车。随着深度学习在我们?常?活中的普及,对快速且节能的神经?络推理的需求也在增加。神经?络量化是降低推理过程中神经?络的能量和延迟要求的最有效?法之?。

包括英伟达、?通、华为、AMD在内的?家,都在神经?络加速??投?了研发?量。通过量化、裁剪和压缩来降低模型尺?。更快的推断可以通过在降低精度的前提下使??效计算平台?达到,其中包括intel MKL-DNN,ARM CMSIS,Qualcomm SNPE,Nvidia TensorRT。

??智能?直是?个备受关注的热点研究领域。到?前,以深度神经?络(deep neural networks,DNN)为代表的联结主义?法成为了??智能领域的研究热点。作为深度神经?络中应?最为?泛的类型,卷积神经?络已经在计算机视觉、语?分析、?然语?处理等各类任务中取得了许多突破性的成果。2012年,AlexNet以?于第?名近11%的分类精度的成绩取得ImageNet ILSVRC 2012?赛的冠军,引爆了深度卷积神经?络的研究热潮。随后,各类卷积?络模型如VGG、GoogLeNet、ResNet等相继出现,?次又?次地刷新ImageNet?赛的榜单。基于这些成功实践的知识和经验,卷积神经?络的应?范围进?步拓展到?标检测、语义分割、?脸识别等各类计算机视觉任务中。甚?在语?识别,?然语?处理等?视觉任务中也开始见到卷积神经?络的?影。

虽然关于深度学习的理论和技术已经取得了长?发展,但是其不?之处也依然明显。其中较为突出的有计算消耗?、容易过拟合、模型可解释性差、不耐对抗攻击等问题。计算和存储消耗问题阻碍了最先进的深度学习算法在如??车、?机、IoT设备等计算资源有限的设备上的部署。总体来说,深度学习模型?临的资源的限制主要来?三个??:

模型本?的??。运?时所需要的内存??。模型完成执?所需要的计算量。

以被?泛使?的VGG-16模型为例,该模型有多达1亿千万个可训练参数,如果以单精度浮点型存储这些参数,模型需要占据530MB的存储空间。处理?张500×500分辨率的图?,需要执?近800亿次浮点运算,并且需要460MB额外的内存空间来存储中间的计算结果,这对于低端设备来说是难以承受的负担。2012年以来深度学习?法发展如?如荼的?个重要原因是GPU提供了?CPU更多的计算能?。但是随着?络模型越来越复杂,硬件更新带来的算?增长很快就被吞没,模型算?需求的增长却没有尽头。模型的精度和计算量有直接关系。越复杂的?络模型分类效果越好,但同时也消耗更多的存储和计算资源。降低卷积神经?络的计算和存储消耗,是其?规模应?于实际场景的关键。因此,在模型效果能够基本得到保证的前提下,如何对模型进?压缩与加速,受到了学界和?业界的?量关注。

近年来,越来越多关于?络压缩和加速的?法被提出,它们从不同的角度去实现?络的压缩和加速。?络剪枝(network pruning)旨在通过不同粒度去剪除?络中的冗余参数;量化利?低?特数的权重参数来压缩原?络;低秩分解(low-rankde composition)主要通过利?多个低秩矩阵的外积去近似逼近原权重矩阵来加速?络;知识蒸馏(knowledge distilling)通过?的教师?络去监督?的学??络学习,达到压缩?络的?的;紧凑?络设计(compactnetwork design)旨在设计轻量、?效的?络结构,降低?络的参数量和计算量。

其中神经?络量化在Google发表的《Quantizationand Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference》中建?了?套更加通?的量化标准,并且在tflite中真正实现落地。

量化就是将浮点存储(运算)转换为整型存储(运算)的?种模型压缩技术。将原本?浮点数表?的神经?络通过量化,变为?定点数表?,来减?存储空间及运算速率。按照聚类中?是否均匀分布,可以把量化分为线性量化和?线性量化。

卷积神经?络模型的量化?法,是直接从数值计算层?改变神经?络模型的?法。这种?法通常是作?在数值计算中最耗时的部分,浮点数的计算中。这种?法对神经?络模型的参数值或者激活值进?量化,?较直观的?种是把原来的FP32运算变成FP16或者int18计算。当然,量化后的神经?络模型要实现加速,需要有特定设备的?持。但是最新的安培系列英伟达GPU已经可以实现FP16和int18的加速。

来?MIT的韩松教授《Deep Compression:Compressing Deep Neural Networks with Pruning, Trained Quantization and HuffmanCoding(2016)》就是典型的?线性量化,作者使?K-MEANS算法对浮点权重进?量化,但因需要查表取得原始数据再进?计算,所以对计算的加速帮助不?,但可以减少模型的存储??。

聚类量化的的计算过程

线性量化则通过线性变换,将浮点数通过线性变换转换为定点数,由于神经?络对于参数的健壮性,及神经?络参数的分布特征,量化后即使有参数精度的损失,在整体计算准确率上损失也不?,且可通过量化感知训练QAT(quantization aware training)实现?络对于量化损失精度的学习,达到更?的准确率。线性量化的应?及前景都更为?阔,我们接下来将着重介绍两种线性量化?法,即后训练量化PTQ(post training quantization)训练后量化(PTQ)(quantization aware training)。

神经?络参数分布密度图

训练后量化(PTQ)

算法采?预训练的FP32?络并将其直接转换为定点?络,?不需要原始训练。转换?法可以是?数据的,或者需要?个?型校准集。因为?乎没有涉及到超参数调整、所以可以使它们可以通过单个API调??作?盒?法,这使神经?络设计者不必深?了解量化神经?络,从?允许更?泛地应?神经?络量化。PTQ过程中的?个重要步骤是为每?层找到适合的量化范围。量化通常会有准确性的损失。这也很容易理解。float32本?可以存储的取值范围?uint8的取值范围要宽,所以不能?uint8表?,肯定有很多值只能四舍五?到uint8。量化模型和全精度模型之间的误差也是由于裁剪舍?操作造成的。浮点实数使?r,量化定点整数使?q。浮点和整数之间的转换公式为:

s是表?实数和整数之间的?例关系的尺度。z是零点,表?量化后实数0对应的整数。计算?法如下:

通过这些公式,我们就可以将浮点数映射到?个我们已知s和z的整数空间内,对于计算机来说,对于定点数的计算不需要浮点数计算的移位操作,计算速度会提升很多。

PTQ整个过程使?定点算法实现。计算完全精度模型后,提前计算每个中?特征图的权重、最?值和最?值,计算尺度和零点,然后将权重量化为int8/ int16整数。整个?络量化完成后,就可以按照上?的流程进?量化推断了。

量化感知训练QAT

训练后量化技术是我们?选的量化?法。它?常有效且实施快速,因为它们不需要使?标记数据重新训练?络。但是,它们有局限性,尤其是在针对激活的低位量化时,例如4位及以下。后训练技术可能不?以减轻低?特量化带来的?量化误差。在这些情况下。我们可以使?量化感知训练(QAT)。QAT在训练期间对量化噪声源进?建模。这使得模型能够找到?训练后量化更多的最优解。然?,更?的准确性伴随着神经?络训练的通常成本,即更长的训练时间,需要标记数据和超参数搜索。

因为我们在量化的前向传递中使?了round即取整函数,round函数的梯度?乎处处为0。如果?络中存在这个函数,那么反向传播的梯度也将变为0。所以我们可以采?直通估计器(Straight Through Estimator)来来近似梯度。卷积层的梯度在伪量化之前直接传回权重。它将round函数的的梯度近似为1,即直接将上?层的梯度传到下?层。

使?STE进?量化感知训练的前向和后向计算图

这就是QAT的关键,即使?STE处理梯度?法计算的问题,从?使量化神经?络也可以训练,从?使模型在训练的过程,学习量化带来的损失,从?实现更?的准确率。

量化使我们能够从浮点表?转变为定点格式,并且与利??效定点运算的专?硬件相结合,有可能实现显着的功率增益并加速推理。然?,为了利?这些节省,我们需要能够保持?精度的稳健量化?法,同时减少权重和激活的位宽。主要介绍了两类量化算法:训练后量化(PTQ)和量化感知训练(QAT)。训练后量化技术采?预训练的FP32?络并将其转换为定点?络,??需训练。这使它们成为?种轻量级的量化?法,?程?作量和计算成本低。可以在所有?络的浮点精度降低的1%内实现权重和激活的8位量化。许多?络甚?可以量化到4位权重,?性能仅略有下降。

量化感知训练通过模拟量化操作对训练期间的量化噪声进?建模。与PTQ相?,此训练过程可以找到更好的解决?案,同时实现更有效和更积极的激活量化。QAT可加?批量归?化等?法,可以实现4位权重量化,与浮点相?,准确度仅略有下降。PTQ和QAT之间的选择取决于应?的精度和功率要求。这两种?法都是神经?络量化的重要?法。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20220411A099PR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com