Advertisement

Quantizing deep convolutional networks for efficient inference: A whitepaper

阅读量:

本文是对当前量化方法的一个总结。

量化设计

统一仿射量化

它将浮点数量化到(0,Nlevel-1),这里Nlevel是2的bit次方。

在这里插入图片描述

对cnn来说,卷积操作变为:

在这里插入图片描述

该方法在推断过程中展现出比其他方法更快的处理速度。其原因在于其激活值总和以及权重保持不变。

统一对称量化

在这里插入图片描述

随机量化

在这里插入图片描述

random quantization is treated as an additive noise within a round operation. Many hardware fail to support random sampling, resulting in its typical non-employment during inference.

Considering that in expectation, the stochastic quantizer can be seen as effectively passing through the floating-point weights, and is capacitated to handle values beyond the specified range. Although still not entirely clear, its application in gradient computation demonstrates its significant effectiveness.

反向传播

随后作者阐述了quantization-aware训练的方法细节。具体而言,在反向传播过程中采用的是浮点型更新梯度的方式,并将其归类为STE方法。

量化参数的选择

量化粒度

一种方法是为每一层神经网络权重应用统一的scale和zero-point设置;然而,在不同通道中采用独立的设置会带来更好的效果。通常情况下,在处理激活值时为每一层分配独特的量化参数会产生较高的计算开销。

量化推断

作者这里介绍了几种常见的量化方式:

前向训练量化

只量化权重

这种方式不需要验证集,直接进行量化即可。

实验结果表明,在逐通道处理中

同时量化权重和激活值

为了量化评估激活值,在考虑其动态变化范围时,通常需要一定数量的样本数据集以估算激活值的变化区间。

在这里插入图片描述

在本研究中对激活值进行逐层量化处理,并通过实验验证这种处理方式的有效性。具体而言,在逐层量化的方法中发现,在逐层量化的方法中,在逐通道对权重参数进行量化的策略下表现最为突出。进一步地,在采用不对称化的量化策略时,在性能指标上仍能取得一定优势

该作者指出,在批归一化层中未引入缩放因子γ导致激活值动态范围受限;同时建议采用ReLU6替代其他激活函数以改善性能。

大尺寸网络由于拥有更多的网络层和参数来抵消量化带来的精度损失而具有更好的鲁棒性然而这些网络的计算效率显著提升因此在选择网络时需要综合考虑两者的平衡

量化的主要损失来自权重,所以应该探索更好的量化权重的方法。

BN层量化

在推断时,对权重和偏置做如下处理:

在这里插入图片描述

作者一开始的量化方案是:

在这里插入图片描述

然而,在训练与推理过程中,bn层的特性可能导致振荡现象的出现。一种常见的方法是在使用变化的长期均值时进行调整。这不仅会影响bn层的效果表现,并且会导致整个模型在训练阶段出现不稳定的情况。

于是作者引入了如下的解决方案:

在这里插入图片描述

作者始终使用校正因子来将权重缩放到长期统计数据:

在这里插入图片描述

在训练过程中分为两个阶段,在初始阶段避免对权重进行缩放以使其与传统BN操作保持一致

在这里插入图片描述

在经过了大量次的训练后(作者认为大约是几十万次),转而采用基于变化的长期均值计算

在这里插入图片描述

作者认为,在训练过程中实现对称量化与不对称量化的差距具有重要意义。进一步研究表明,在采用低位计算资源(例如4位)及逐层量化策略下所构建的网络架构仍能保持与高精度模型相当的性能水平。然而,在更高精度或更复杂的量化策略下(如逐通道量化),实验结果表明相关模型的表现得到了显著提升。

调参对低位网络的效果更好些。

通过量化处理导致模型性能显著下降

此外,在量化网络训练过程中,作者注意到重新训练量化模型的效果略低于微调浮点型模型的效果。

全部评论 (0)

还没有任何评论哟~