Advertisement

综述:Pruning and Quantization for Deep Neural Network Acceleration: A Survey

阅读量:

模型量化综述

  • 一、章节介绍
    • 5. Summary(总结)
      • 5.1. Pruning(剪枝)
      • 5.2. Quantization(量化)

6. Discussion Section

  • 3. 剪枝

    • 3.1. 静态剪枝
      • 3.1.1. 剪枝标准
      • 3.1.2. 结合调参或再训练的剪枝策略
  • 3.2 动态剪枝策略

    • 3.2.1 条件计算模块

    • 3.2.2 强化学习自适应网络

    • 3.2.3 可微分自适应网络模块

      • 3.3. Comparisons(比较)
  • 4. 量化(Quantization)

    • 4.1. 量化理论(Quantization Theory)
      • 4.1.1. 低数值精度(Low-Precision Arithmetic)
    • 4.2. 量化方法(Methods of Quantization)
      • 4.2.1. 对数量化(Logarithmic Quantization)
      • 4.2.2. 对称量化范围(Symmetric Quantization Range)
      • 4.2.3. 其他量化方法(Alternative Techniques in Quantization)
      • 4.2.4. 量化感知训练(Training with Quantization-Awareness)
  • 4.3. 量化部署策略(Quantization Deployment)

    • 4.3.1. 高效内核设计(Efficient Kernels)

    • 4.3.2. 硬件平台支持(Hardware Platforms)

    • 4.3.3. 深度神经网络编译器优化(DNN Compilers)

      • 4.4. Quantization Reduces Over-fitting(量化减少了过拟合)
  • 一、图1概述了可能导致过参数化的三个关键因素:(1) 网络架构设计、(2) 网络优化策略以及(3) 硬件加速器的性能考量。

  • 二、本文主要探讨卷积神经网络(CNN)的网络优化问题。其结构安排如下:

    • 卷积神经网络(CNN)
    • 第一部分 概述
      • 第一阶段 模型训练与推理过程分为两个阶段完成:模型训练与推理过程。
      • 第二部分 卷积操作

一、章节介绍

5. Summary(总结)

5.1. Pruning(剪枝)

第3节揭示了剪枝作为压缩神经网络的关键技术之一。本节我们将重点探讨两大类重要的剪枝方法:一是静态剪切法二是动态调参法。其中传统的静态调参曾是研究的重点方向近年来动态调参被视为一项新兴趋势其之所以受到关注主要是因为动态调参能够在现有静态调参性能基础上进一步提升性能。
在pruning(即减支)的方法部分我们主要探讨了几种典型实现策略并基于实验分析得出了相关结论。

基于元素级别的剪枝是一种有效的量化方法。该方法通过元素级别剪枝显著地提升了权重压缩效率并优化了存储空间。

  1. 基于通道和形状的剪枝策略
    借助专业的硬件计算资源及相应的软件开发工具,可以加快基于通道和形状的剪枝过程。

分别按照过滤方式和分层方式进行剪枝(Filter-wise and layer-wise pruning)可以通过这种方式显著降低计算复杂度。

分别按照过滤方式和分层方式进行剪枝(Filter-wise and layer-wise pruning)可以通过这种方式显著降低了计算复杂度。

5.2. Quantization(量化)

第4节总结了量化技术。它描述了二值化量化神经网络 ,降低精度网络,以及它们的训练方法 。我们描述了低位数据集验证技术和结果。我们还列出了流行的量化框架的准确性,并在第4.3节中描述了硬件实现。
由于信息的损失,量化通常会造成精度差距,特别是在紧凑的网络上。大多数早期的低位量化方法只在相对较小的数据集(如MNIST和CIFAR-10)[55,88,146,190,225,258]上呈现SOTA性能。然而,有观察表明,量化的网络可以优于第4.4节中讨论的原始网络。此外,

非均匀分布数据可能会导致量化性能[264]的进一步恶化。有时,这可以通过微调[162]中的归一化或非线性量化来改善,例如,对数表示[165]。

这些先进的量化技术显著提升了精度。(Asymmetric quantization)不对称量化[114]除了利用规则尺度参数以外,在这一过程中采用了零点以保留更高的动态范围。为了减少零点引入的成本和开销,在整个系统中采用了流水线处理模块进行优化。基于校准的技术去除了零点,并采用了从校准数据集中获取的精确尺度替代原来的零点。

量化感知训练可以进一步提高量化精度。

8位量化技术作为一种折中方案,在平衡精度与压缩效果方面展现出显著优势,并已广泛应用于实际场景中

为了更好地维护准确性,我们在量化部署中有以下点: Value
1、 利用非对称量化。它为表达式范围保留了更多的灵活性,但引入了更多的开销[114]
2、 将权重量化为更低的位,而不是激活。激活对数值精度[70]更为敏感。
3、 High precision bias [108], first and last layers [190,261] could be reserved to maintain network accuracy.(高精度偏差,第一层和最后一层应该被用作维持网络精度)
4、量化通道大小中的核 信道量化显著提高了分层量化[123]的精度。
5、对量化模型进行微调 微调减少了量化模型与实值模型[235]之间的精度差距。
6、在实值模型中训练 在实值模型中训练, 有时,低位量化模型很难从头开始训练,特别是在大规模数据集[261]上的紧凑模型。
7、 量化的灵敏度被排序为梯度,激活,然后权重[261]。
8、 梯度的随机量化是必要的[83,261]。

6. Discussion(讨论)

DNN的成功引起了极大的关注,它在边缘设备上的应用成为了性能的瓶颈。因此,大量的压缩方案在不破坏网络精度的情况下提高了网络效率。本文对剪枝和量化技术进行了总结。剪枝会删除不影响结果的冗余或计算。量化通过降低数据类型的精度来减少计算量。
剪枝技术考虑到网络的一部分对最终结果没有贡献,并删除它们。需要一些评估标准,3.1节中的静态剪枝或3.2节中的动态剪枝,3.1.1节中检测无用部分的测量,以及3.1.2节中的训练算法。在第3.3节中讨论了一些不相容的研究。我们在第5.1节中总结了我们的观察结果
化化通过降低数值精度来降低冗余度,从而加快了网络的计算速度。量化还需要一些仔细的设计来实现这样的目标。例如,在 反向传播过程中,低比特精度对梯度是缓慢的,解决方案在第4.2.5节中描述 。一些极低的比特量子化方案具有处理效率的自然优势,可以在第4.2.2节和第4.2.3节中找到,以显著加速推断。我们还在第4.3.1节中介绍了支持量化网络的框架,并在第4.3.3节中介绍了一个关于DNN编译器的简短介绍,这将随着各种高效硬件的开发而得到更多的关注。第4.4节讨论了量化提高网络精度的情况 ,第5.2节给出了应用量化时的一些tips(建议)
正如我们描述的许多加速cnn的技术 ,它们肯定可以结合起来以追求进一步的效率[86]。此外,由于一些剪枝和量化需要额外的校准集,以实现良好的功能,因此可以重用中间校准数据。另一种压缩技术是自动剪枝和量化 ,由于它们都挤压了网络信息,剪枝可以看作是零位量化,因此,有时量化技术可以应用于 不能剪枝的神经元或层 。剪枝也可以充分利用来自量化校准集的统计信息。

1. Introduction

2. Convolutional Neural Network

2.1. Preliminary

2.2. Training and Inference

2.3. Convolution Operations

2.4. Efficient Structure

2.5. Batch Normalization

2.6. Pooling

2.7. Parameter

3. Pruning

3.1. Static Pruning

3.1.1. Pruning Criteria(标准)
3.1.2. Pruning combined with Tuning or Retraining

3.2. Dynamic Pruning

3.2.1. Conditional Computing(条件计算)
3.2.2. Reinforcement Learning Adaptive Networks
3.2.3. Differentiable Adaptive Networks(可微分的自适应网络)

3.3. Comparisons(比较)

4. Quantization

量子化是指用一组离散的符号或整数值来逼近一个连续的信号的过程 。聚类和参数共享也属于这个定义[86]。部分量化使用k-means等聚类算法来量化权重状态 ,然后将参数存储到压缩文件中。这些权重可以使用查找表或线性变换来解压。这通常会在运行时推理期间执行。该方案只降低了一个模型的存储成本。这一点在第4.2.4节中进行了讨论。在本节中,我们将重点关注数值低位量化
通过降低精度值来压缩cnn之前已经被提出过。**将浮点参数转换为低数值精度的数据类型来量化神经网络,早在20世纪90年代的[63,14]中就被提出了。**从2010年代开始,人们对该技术的兴趣重新燃起,因为INT8被证明可以加速推理,而[223]的准确性没有显著下降。

历史上,大多数网络都是用FP32数字(32位浮点数)[215]进行训练的。对于许多网络,FP32表示具有比需要的更高的精度。将FP32参数转换为下限表示可以显著减少带宽能量和片上面积
图12显示了量化的路线图。在一开始,量化只压缩了权重。通过量化、集群(聚类)和共享权重,存储需求可以减少近4个×。Han[86]结合了这些技术,将权重存储需求从27MB减少到6.9MB。训练后的量化包括取 一个训练过的模型,量化权重,然后重新优化模型,生成一个尺度量化模型[16]。Quantize-aware training量化感知训练 包括对稳定的全精度模型进行微调或对量化模型进行再训练。

re-training the quantized model:对量化模型进行再训练. 问:re-training有什么技巧?可以达到什么样的性能呢?--待解决

在这一过程中,实值权重通常被转换为整数值-通常是8位[114]. 饱和量化常用于通过校准算法和校准集生成特征尺度. 量化激活的分布与先前的实值数据[163]具有相似性. 主要采用库贝克-莱布勒散度(也称为KL散度或相对熵散度),对于许多知名模型[163]而言,在不损失精度的情况下可以加速网络性能,并且这种策略还可以用于微调网络而不影响精度。

问题:什么是饱和量化?

KL散度衡量了两个概率分布在空间上的差异程度。根据方程11可知,在信息论中我们有如下公式:D_{KL}(P||Q) = \sum_{x} P(x) \log\left(\frac{P(x)}{Q(x)}\right) 其中PQ被视为同一概率空间内的离散型概率分布。具体而言,在实际应用中我们通常将P视为来自多个箱子的原始数据(以浮点数形式)的概率分布模式,而Q则对应于量化后的数据直方图表现形式。

在这里插入图片描述

根据处理器和执行环境的不同,根据处理器和执行环境的不同,量化参数 通常可以加速神经网络的推理。量化研究可分为两个重点领域
1)量化感知训练(QAT)
2)训练后量化(PTQ)。
这种差异取决于在训练期间是否考虑了训练进度。或者,我们也可以根据数据分组的地方对量化进行分类
1)按分层分组
2)按通道分组。
此外,在评估参数宽度时,我们可以根据长度进一步分类: N-bit
quantization(n位量化)。

降低精度的技术并不总是能达到预期的加速速度。例如,在量化与去量化等额外操作的影响下,INT8推理的效果难以达到与32位浮点相比例4倍以上的提升[217]。

4.1. Quantization Algebra(量化代数)

在这里插入图片描述

存在多种方法用于量化给定的网络结构。这些方法通常表示为方程12的形式,在这种情况下变量s可以通过多种方法计算得到。其中函数g(·)用于对浮点值Xr进行阈值限定,在某些非对称量化策略中变量Z用于调节实际零点的位置。本节将介绍如何利用方程12所建立的数学模型来进行量化过程。

4.2. Quantization Methodology(量化方法)

因为我们在量化方法的归类过程中考虑到了反向传播机制的影响因素,在这一分类框架下又进一步依据位宽参数对量化技术进行了细分。随后,在本章的后续小节中我们将详细阐述各类量化方法的主要特点及其适用场景。在第4.2.1节中我们将重点探讨二进制权重量化技术的基本原理与实现细节;而在第4.2.2至4.2.3节期间则深入分析了位宽受限条件下的特殊化处理方案;至于第4.2.5节则重点研究了这一过程中的挑战性问题;最后部分专门探讨了量化的替代方案及其效果评估问题。

4.2.1. Lower Numerical Precision(低数值精度)
4.2.2. Logarithmic Quantization(对数量化)
4.2.3. Plus-minus Quantization(加减量化)

对于卷积运算中的加法操作部分,则可以通过以下步骤进行实现:首先计算两个输入向量对应元素的乘积累加结果;接着统计每一位上的置位数目;最后利用这些中间结果结合门电路完成最终的加法运算[262]。”

在这里插入图片描述
4.2.4. Other Approaches to Quantization(其他可进行量化的方法)

通过向量量化来共享权重也可以被认为是一种量化。为了压缩参数以减少内存空间的使用,参数可以被集群和共享。K-means是一种广泛使用的聚类算法,已成功应用于ILSVRC-2012数据集[71,234]上,精度损失为[71,234,134]-16-24倍,精度损失为1%。
HashNet[37]使用散列来聚类权重 。每个哈希组都被替换为一个浮点权值。这只适用于FCL和浅层CNN模型。他们发现,在MNIST和他们评估的其他7个数据集上,64个×的压缩因子优于同等大小的网络。
2016年,韩应用霍夫曼编码。权重共享、剪枝和霍夫曼编码的组合在VGG-16上实现了49×的压缩,且没有损失精度,这在当时是SOTA。
Hessian方法用于测量网络参数的重要性,因此改进了权重量化[44]。他们将平均Hessian加权量化误差降至最小,以获得聚类参数。他们发现,在AlexNet上的压缩比为40.65,在ILSVRC-2012上的精度损失为0.94%。权值正则化可以通过惩罚大幅度[205]的权值来略微提高量化网络的精度,实验表明,L2正则化使ILSVRC-2012上8位量化MobileNet网络top-1的精度提高了0.23%。
BN已被证明有许多优点,包括解决内部协变量移位问题[113]。它也可以被认为是一种量化的类型。然而,用BN进行的量化可能具有数值不稳定性。BN层具有非线性的平方根运算和平方根运算。当使用非线性操作时,低位表示可能会有问题。为了解决这个问题,L1-normBN[236]在正向和反向训练中都只有线性运算。它提供了1.5×的加速,只有FPGA平台上的功率需求的一半,可以用于训练和推理。

4.2.5. Quantization-aware Training(量化感知训练)

主流数量化方法倾向于采用全局量化与分层量化相结合的方式,并将其应用于全精度模型的简化过程。这种简化策略可能导致无法忽视的精度下降问题。在量化技术中存在一个主要缺陷即是无法恢复的信息丢失现象[50]。具体而言,在二元网络与浅层网络中这一问题表现得尤为明显:对ResNet-34或GoogLeNet模型施以二进制权值与激活操作,则分别带来了29.10%与24.20%的性能 drop[50]。有趣的是,在文献[161]中提到过这样一种观点:经过反向传播微调训练(即针对retrains进行优化),量化网络能够部分恢复由于量化过程而产生的信息丢失问题。值得注意的是,在这种情况下,“再训练”的弹性使得即使面对二值化信息所带来的形态扭曲也能表现得较为稳健。因此,在实际应用中选择合适的训练算法对于维持量化网络的整体性能至关重要。在本节中我们将重点介绍两种主要的技术路径:基于反向传播微调的方法以及经过再训练优化的方案。

BNN训练对于具有二进值权值的二值化网络,由于导数较小,使用梯度体面的方法更新权值是不有效的。早期的量化网络是用一种叫做期望回归传播(EBP)[210,40]的贝叶斯推理来训练的。这种方法分配有限的参数精度(例如,二值化)的权重和激活。EBP通过更新权值上的后验分布来推断具有量化权值的网络。通过微分反向传播的参数来更新后验分布。
二元连接[49]采用了EBP的概率思想,但BC没有优化权值的后验分布,而是保留了浮点权值进行更新,然后将其量化为二进制值。实值权值更新使用反向传播的错误,通过简单地忽略更新中的二值化。
一个二值化的网络只有1位的参数-±1从一个符号函数量化。单个位参数是不可微的,因此不可能计算参数更新[198]所需的梯度。SGD算法已经被证明需要6到8位才能成为有效的[170]。为了解决这些限制,我们采用了Hinton[96]之前引入的直通式估计器(Ste),通过离散化[106]来传播梯度。式28表示符号二值化的Ste,其中c表示目标函数,Wr表示实值权值,Wb表示符号函数产生的二值化权值。Ste绕过二值化函数来直接计算实值梯度。然后使用SGD等方法更新浮点权值。为了避免实值权重接近于无穷大,bnn通常会将浮点权重夹紧到所需的±1范围[106],

在这里插入图片描述

与DoReFa方法不同,在梯度阶段中使用随机量化生成低位梯度的方法最初由[83,260]提出,并取得了一定的效果;然而,在DoReFa提出后不久,研究者发现该方法在边缘设备上的训练速度显著加快(比BNN快),但对网络精度的影响较小。尽管这种低位宽梯度方案在加速边缘设备训练方面表现突出(推理加速效果最佳),但其对网络精度的影响却较为有限。相比之下,在DoReFa提出的背景下(即权值、特征和梯度均采用多级量化策略),他们展示了该方法在ImageNet上的优越性:实验结果表明,在ImageNet上采用1位权重、2位激活和6位渐变量化策略可实现46.1%的Top-1准确率(较全精度下降9.8%)。式29具体描述了权重量化方法:W代表权值(与式28相同),极限函数用于将权值限制在[0,1]范围内;quantize_k则表示将权值量化为k级;特征则采用f=quantize_k进行量化处理。

在这里插入图片描述

函数进行。

在这里插入图片描述
在这里插入图片描述

就像在深度前馈网络中一样,爆炸性的梯度问题可能会导致BNN无法训练。为了解决这个问题Hou[98]将二值化对净损失的影响表述为一个优化问题,由一种具有对角Hessian近似的近似牛顿算法,该算法可直接最小化关于二进制权重。该优化发现,与BNN相比,MNIST数据集提高了0.09%。
Alpha混合(AB)[152]可以作为Ste的替代品。由于Ste直接将量化函数梯度设置为1,因此我们假设Ste调谐的网络可能会遭受精度损失。图14显示,AB引入了一个额外的尺度系数훼。实值权值和量化权值均被保留。在训练期间,α逐渐提高到1,直到实现一个完全量化的网络。

低数值精度训练是指在同时进行正向传播和反向传播的过程中使用了低数值精度值,并且始终保持全 precision 累积结果。
混合型态 [16b,51] 训练则采用了浮点数 16 位(FP16)或定点整数 INT16 作为权重数据类型。
如图所示,
梯度更新过程中使用的权值参数全部采用了 full precision 表示,
而其他参与运算的操作数则采用了 half precision 形式。
由于所有计算中涉及的小于 2 的量
通常会因为计算范围限制而丢失信息,
因此应用了损失缩放技术,
以防止极小幅度的梯度扰动对后续计算造成负面影响。
为了应对可能出现的问题,
在反向传播前引入了一个定标器到损失函数中。
这个定标器的作用是将每个样本对应的损失量放大到一个合适的范围,
通常选择最佳定标因子的方法基于经验或统计信息得出。

在这里插入图片描述

图14:Ste和AB:Ste直接绕过量化器,而AB通过引入额外的系数훼来计算实值权值的梯度,这些图采用自[152]
图15:混合精度训练:FP16应用于正向和反向传递,而FP32的权值保持为更新。
图15:混合精度训练[162]:FP16应用于正向和反向传递,而FP32的权值保持为更新。

采用张量流-Lite框架时,在实现深度学习模型的过程中需注意以下几点:首先,在正向传递过程中需模拟量化效应;其次,在卷积操作之前对实值参数进行量化处理后其精度降至较低水平;此外,在设计网络结构时可将Batch Normalization(BN)层与卷积层相结合以优化计算效率;更多技术细节可在第4.3.1节中找到详细说明。
针对二值化网络模型设计而言,在降低计算复杂度的同时仍可采用Ste算法来进行参数优化过程;其中一种可行的设计方案是利用8位整数实现策略以减少资源占用并提高运行效率。

4.3. Quantization Deployment(量化部署)

4.3.1. Efficient Kernels(高效的内核)
4.3.2. Hardware Platforms(硬件平台)

图17显示了人工智能芯片、卡片和系统绘制的峰值操作和功率的日志比例。显示了三条标准化线-100GOPS/瓦,1TOP/瓦,和10TOPs/瓦。硬件平台分为几个维度,包括:
1)训练或推理
2)芯片、卡或系统形式因素
3)数据中心或移动设备
4)数值精度。
我们在本节中关注低精度的通用和专用硬件。
精度低于8位的可编程硬件量化网络通常在fpga中实现,但也可以在通用处理器上执行。
BNN已经在XilinxZynq异构FPGA平台[256]上实现。他们也实现了英特尔至强cpu和英特尔Arria10FPGA异构平台通过调度位操作fpga,否则cpu[168],系统共享相同的内存地址空间避免维护预算,和训练工作可以映射到cpu。FINN[221]是一个专门用于在fpga上的BNN推理的框架。它包 含二值化的完全连接层、卷积层和池化层。当部署在Zynq-7000SoC上时,FINN在MNIST数据集上实现了每秒1236万张图像,精度损失了4.17%。
在XilinxZynqfpga和ArmNEON处理器[186]上已经实现了具有3bit特征的二值化权值。网络的第一层和最后一层使用8位量 ,但所有其他层都使用二进制权值和3位激活值。在一个嵌入式平台ZynqXCZU3EG上,他们每秒执行16个图像推断。加速小YOLO推理,做了很多努力,包括
1)取代最大值修改卷积步从1到2
2)取代泄漏ReLU
3)修改隐藏层输出通道,技巧帮助提高效率FPGA从5.5到5帧每秒,精度下降1.3%。
TNN的作者[6]还在FPGA上部署了TNN,使用专门的计算单元,对三元值乘法进行了优化 ,并在合成时决定了特定的FPGA结构(维度),以提高硬件效率。在Sakura-XFPGA板上,他们实现了每秒255k的MNIST图像分类,准确率为98.14%。然后,他们在XilinxVirtex-7VC709板上探索了可伸缩的设计,该设计可以显著降低硬件资源和功耗,同时牺牲吞吐量[187],例如,在6.8瓦下每秒27kCIFAR-10图像。
降低硬件成本是对数硬件的一个关键目标。Xu[240]采用了基于√2的对数量化,分辨率为5位。这显示了50.8%的前1的精度,但消耗了四分之一的功率,使用了一半的芯片面积,而半精度部署,前1的精度为53.8%。
通用硬件除了专门的硬件外,INT8量化已经在许多通用处理器架构中被广泛采用。
ARM CPU上的CNN加速以前是通过带有ARM高级SIMD扩展名(即NEON)的SIMD流实现的。ARM在其Armv8.2 ISA扩展[8]之后开始支持半精度和8位整数矩阵乘法加法,并具有相应的CPU IP CortexA75和A55[9],以及Mali-G76 GPU IP[10]。华为、高通Snapdragon SoC、联发科Helio SoC、三星Exynos[110]已将这些核心集成到麒麟SoC中。例如,在Exynos 9825 Octa上,8位整数量化的MobileNet v2可以在Mali-G76[110]的帮助下在19ms内处理图像。英特尔使用英特尔高级矢量扩展512(AVX-512)ISA[194]将整数性能提高了约33%,这是一个SIMD ISA扩展,具有512位宽的融合乘加(FMA)核心指令。通常,支持AVX-512的英特尔至强CPU与nVidia图形卡一起部署,而不是用作主推理机。
Pascal系列gpu[174]对nVidiagpu进行了低精度计算。然后图灵架构[178]引入了专门的单元来处理INT4和INT8。这提供了在游戏中使用的人工智能算法上的实时整数性能。对于嵌入式平台,英伟达开发了Jetson平台[177]。一开始,他们使用CUDA麦克斯韦核[173],可以处理半精度的类型。对于数据中心,英伟达开发了极高性能的DGX系统[175]。DGX系统包含多个高端图形处理器,使用英伟达的专有总线nVLINK相互连接。DGX系统可以执行4位整数到32位浮点操作,这取决于所安装的GPU卡。
关于处理dnn的硬件效率的详细调查见[192]
低精度库与精度:由于库之间的实现细节不同,同一网络架构的精度下降是不同的,毫无疑问,量化感知训练将或多或少地填补这一空白。

在这里插入图片描述
在这里插入图片描述
4.3.3. DNN Compilers(编译器)

该系统旨在通过硬件加速器实现异构神经网络(Heterogeneous neural networks)在深度学习(DL)算法中的应用。然而目前仍面临诸多技术瓶颈和实现障碍。

网络理解:
技术人员在多端部署场景中采用多种技术架构来搭建神经网络模型。将训练好的神经网络模型作为下一步骤的前提条件

结构优化:
训练后的模型最初设计用于处理较为复杂的操作过程中的训练。然而,在推理阶段几乎不需要它们。因此,在优化模型时应优先借助工具包进行调整和简化(如BN折叠等),例如见第2.5节的相关技术介绍。

  1. 中间表示(IR):优化后的模型应妥善存储以便后续部署。推理引擎的不确定性要求存储的 IR 必须包含模型架构和训练权重。压缩技术可选性地应用于优化网络结构中,并特别涉及剪枝和量化等方法。
  2. 可选进一步压缩:压缩技术可选择性地应用于优化网络结构中,并特别涉及剪枝和量化等方法。
  3. 部署:应编译为目标引擎并将最终配置文件映射到该引擎中进行处理。这种处理方式既可以独立完成又可与其他系统协同工作。
    开放神经网络交换(ONNX)[180]是一个开源工具,其核心功能是从一个框架转换到另一个框架,从而促进人工智能模型在不同平台间的通用应用。
    深度学习编译器如TVM[36]、Glow[195]、OpenVINO[112]及MLIR[125]均满足上述需求,它们与传统框架不同之处在于无需预先固定硬件架构,而是能够根据具体硬件动态调整计算策略。
    TVM支持从PyTorch与TF-Lite等框架部署量化模型,并通过这一特性提升了运行效率。
    Glow支持零点量化方案,采用基于标定的方法将数据转换为8位有符号整数。
    当前阶段,MILR及OpenVINO尚未支持量化感知训练机制,但MLIR及其集成特性允许用户在精度要求不达标时进行微调.
    这些编译器均采用了与正则化量化相同的数学表达式来进行量化操作.

4.4. Quantization Reduces Over-fitting(量化减少了过拟合)

除了提升神经网络的速度之外,在特定场景下量化还表现出更高的模型性能优势

一、从图1可以看出,涉及可能导致网络过参数化的主要三个设计考量因素包括(1)网络架构的设计方案, (2)算法优化策略, (3)硬件加速模块的优化设计.

CNN加速方法:涵盖从架构构思到实际部署,在这一过程中,CNN的加速主要可分为三个关键维度:包括架构构建阶段(含生成式架构)、性能优化环节以及专用硬件支持。

在这里插入图片描述

二、本文主要研究卷积神经网络的网络优化问题。它的组织如下:

在第二部分中, 我们详细探讨了神经网络的基本概念, 尤其是卷积神经网络(CNN). 同时, 我们对卷积层中的各种优化策略进行了深入研究. 第三部分重点介绍了静态与动态剪枝技术的区别与应用. 第四部分系统阐述了量化方法及其对模型性能的影响机制. 此外, 我们还对比分析了几种主流量化框架的优势与不足. 通过实验数据, 我们得出了多种量化策略在实际应用中的表现差异. 在第五部分, 我们总结了研究发现并提供了实用的使用指南. 最终, 第六部分是对全文内容的全面回顾与未来研究方向展望.

2. Convolutional Neural Network

卷积神经网络是一种基于卷积运算从数据源提取特征的前馈型深度神经网络。在视觉相关任务方面取得了显著成效的同时,在自然语言处理[89]、语音识别[2]、推荐系统[204]、恶意软件检测[213]以及工业传感器时间序列预测[251]等领域也展现了广泛的应用潜力。本节将详细阐述其部署过程中的两个关键环节:训练与推理。我们将深入探讨卷积操作的不同类型,并重点阐述批归一化(BN)作为提升训练效率的关键技术之一;同时讨论池化层的作用机制及其在降低模型复杂度方面的贡献;最后对现代网络架构中参数规模呈指数级增长的现象进行简要说明。

2.1. 初步

为了更深入地掌握本文内容,请参考本节所列举的用于描述神经网络的专业术语。在表1中整理了神经网络相关的缩略语和缩写词信息。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

缩放因子-数值因子通过乘法作用于代数项,在卷积运算中充当滤波器的作用。
变量-神经网络层中的重要因素,通常包括权重系数和偏置值。
超参数设置—在模型训练或微调(再训练)前预先设定的关键值。

在这里插入图片描述

激活

激活函数(包括ReLu、Leaky ReLu和双曲正切函数等)的第一层在多层网络结构中通常处于高度h的位置,其宽度为w而通道数为c。

在这里插入图片描述

特征

——一层的输入数据 ,不同于输出A。通常,当前层的特性是前一层的激活。

在这里插入图片描述

2.2。训练和推理cnn被部署为两个步骤的过程:

1)训练和2)推理

2.3. Convolution Operations

在这里插入图片描述

图2展示了可分离卷积的概念:标准卷 convolution被分解为深度 convolution与点 convolution两部分操作。这种结构设计有效地降低了模型的参数规模和计算开销。在输入端接收到一张具有三个通道(如RGB)的图像时(如RGB),由于输入图像具有三个通道因此滤波器也需要相应地设计成三层结构以匹配各通道的数据特征。具体来说,在图4中展示了一个2x2x3的小型convolution核实例该核由三个独立的2x2矩阵组成每个矩阵负责处理对应的一个颜色通道数据。通过这种方式每个滤波器能够同时捕获并处理来自不同颜色通道的信息从而生成一个综合性的输出响应值。值得注意的是该过程在实际实现中采用了共享权值的方式即所有相同位置上的权重会被同一个权重矩阵所共享这不仅减少了计算量还能有效防止过拟合现象的发生。具体而言当输入图像尺寸为12x12x3时经过一次convolution操作后输出结果会变成11x11x1(假设stride步长为1且不进行填充操作)。这种结构特点使得可分离convolution在处理多通道数据时表现出更强的效率优势同时也为其在网络中的灵活应用提供了更多的可能性。此外通过引入更多类型的filter bank(即不同尺寸或参数配置的filter集合)可以在不显著增加计算复杂度的前提下显著提升网络模型的能力以更好地适应多样化的数据特征需求。

在这里插入图片描述

如图3所示,在卷积性能优化中,我们采用了从传统点平方卷积到图像列(im2col)转换的GEMM方法,并参考文献[34]提供了详细的技术细节。其中红框表示过滤方向元素,绿框则标识形状方向元素。

全部评论 (0)

还没有任何评论哟~