高效神经网络推理量化方法综述
立即解锁
发布时间: 2025-08-30 01:54:21 阅读量: 4 订阅数: 18 AIGC 

# 高效神经网络推理量化方法综述
## 1. 知识蒸馏
知识蒸馏是一种利用高精度大模型作为教师模型来辅助紧凑学生模型训练的方法。在学生模型训练过程中,它不仅使用真实类别标签,还利用教师模型产生的软概率,这些软概率可能包含输入的更多信息。整体损失函数结合了学生损失和蒸馏损失,公式如下:
\[L = \alpha H(y, \sigma(z_s)) + \beta H(\sigma(z_t, T), \sigma(z_s, T))\]
其中,\(\alpha\)和\(\beta\)是调整学生模型损失和蒸馏损失的加权系数,\(y\)是真实类别标签,\(H\)是交叉熵损失函数,\(z_s\)和\(z_t\)分别是学生模型和教师模型生成的对数几率,\(\sigma\)是softmax函数,\(T\)是温度,其定义为:
\[p_i = \frac{\exp(\frac{z_i}{T})}{\sum_j \exp(\frac{z_j}{T})}\]
以往的知识蒸馏方法主要关注探索不同的知识源。有的使用对数几率(软概率)作为知识源,有的则尝试利用中间层的知识。在教师模型的选择方面,也有很多研究,例如使用多个教师模型共同监督学生模型,或者应用无额外教师模型的自蒸馏。
## 2. 极端量化
### 2.1 极端量化概述
二值化是最极端的量化方法,它将量化值限制为1位表示,可将内存需求大幅降低32倍。除了内存优势,二进制(1位)和三进制(2位)运算通常可以通过位运算高效计算,相比FP32和INT8等更高精度能实现显著加速。例如,NVIDIA V100 GPU上的峰值二进制运算速度比INT8高8倍。然而,简单的二值化方法会导致显著的精度下降。
### 2.2 极端量化方法
- **BinaryConnect**:将权重限制为+1或 -1。在这种方法中,权重保持为实数值,仅在正向和反向传播时进行二值化以模拟二值化效果。在正向传播时,根据符号函数将实值权重转换为+1或 -1,然后可以使用带STE的标准训练方法通过不可微的符号函数传播梯度。
- **Binarized NN (BNN)**:扩展了BinaryConnect的思想,不仅对权重进行二值化,还对激活值进行二值化。联合二值化权重和激活值可以进一步提高延迟,因为昂贵的浮点矩阵乘法可以被轻量级的XNOR运算和位计数操作取代。
- **Binary Weight Network (BWN) 和 XNOR - Net**:通过在权重中引入缩放因子,使用+\(\alpha\)或 -\(\alpha\)代替+1或 -1,以实现更高的精度。这里,\(\alpha\)是选择的缩放因子,用于最小化实值权重和二值化权重之间的距离。即实值权重矩阵\(W\)可以表示为\(W \approx \alpha B\),其中\(B\)是满足以下优化问题的二进制权重矩阵:
\[\alpha, B = \arg\min \|W - \alpha B\|^2\]
- **三值化**:受许多学习到的权重接近零的观察启发,有人尝试通过将权重/激活值限制为三值(如+1、0和 -1)来对网络进行三值化,从而明确允许量化值为零。三值化也像二值化一样,通过消除昂贵的矩阵乘法大幅降低推理延迟。后来,Ternary - Binary Network (TBN) 表明,结合二进制网络权重和三值激活值可以在精度和计算效率之间实现最佳平衡。
### 2.3 减少极端量化精度下降的解决方案
由于简单的二值化和三值化方法通常会导致严重的精度下降,特别是对于像ImageNet分类这样的复杂任务,因此提出了许多解决方案来减少极端量化中的精度下降。这些解决方案大致可分为以下三个分支:
- **量化误差最小化**:旨在最小化量化误差,即实值和量化值之间的差距。例如,HORQ和ABC - Net使用多个二进制矩阵的线性组合来表示实值权重/激活值,以减少量化误差。此外,对更宽的网络进行二值化可以在精度和模型大小之间实现良好的平衡。
- **改进损失函数**:关注损失函数的选择。例如,损失感知的二值化和三值化直接最小化关于二值化/三值化权重的损失,这与仅近似权重而不考虑最终损失的其他方法不同。从全精度教师模型进行知识蒸馏也是恢复二值化/三值化后精度下降的一种有前途的方法。
- **改进训练方法**:致力于为二进制/三值模型寻找更好的训练方法。例如,BNN +引入了符号函数导数的连续近似,而一些方法用平滑、可微的函数代替符号函数,这些函数逐渐变尖锐并接近符号函数。Bi - Real
0
0
复制全文
相关推荐










