查看原文
其他

【综述专栏】模型量化概述

在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。

来源:知乎—会AI的铁匠

地址:https://zhuanlan.zhihu.com/p/422216007

模型量化是一种压缩网络参数的方式,它将稠密神经网络的参数(weight)、特征图等(activation)原本用浮点表示的量值换用定点(整型)表示,最后将定点数据反量化回浮点数据得到结果。模型能够加快模型推理速度,减少模型内存占用。模型量化实现建立在深度网络对噪声具有一定的容忍性上,模型量化相当于对深度网络增加了一定的噪声(量化误差),如果量化位数合适,模型量化基本不会造成较大的精度损失。工业界使用的较为成熟的量化方案有w8a8和w8a16等,这里w8指模型权重用int8的数值来表示,a16指模型的特征图用int16的数值来表示,有时也可以混用两种量化方案,即混合精度量化。
根据量化函数是否为线性,量化可以分为线性量化和非线性量化。我们这里主要讨论线性量化。在线性量化中,模型量化和反量化的公式可以简单的表示为:

其中Q表示量化后的整数值,r表示量化前的浮点值,s表示量化的scale,Z表示浮点中的0值经量化后对应的整数:

   和    通过统计得到,   和   则是整型数能表示的最大值和最小值。
根据模型量化的精度损失程度,量化方式可以分为:
L1:data free,直接将浮点参数转换成整型参数,精度较低
L2:PTQ(post training quantization),基于实际使用的数据对模型量化过程进行校准,可能伴有模型权重的缩放,精度较高
L3:QAT(quantization aware training),在量化的同时使用反向传播对模型权重进行调整,精度高
根据零点Z是否为0,即    和  是否关于Z对称,量化可以分为对称量化和非对称量化。
根据量化粒度,量化可以分为逐层量化和逐通道量化,逐层量化整个卷积层或者特征图使用一组参数进行量化,逐通道量化则每个通道使用一组参数进行量化。
目前量化的难点包括但不限于:
1、一些特殊层支持的不是很好,量化损失较大。如concat层,当两个不同分布范围差异较大的数据合并到一起后,由于使用同一套量化参数,分布范围小的数据很容易损失精度。
2、模型任务越复杂,模型越小,量化损失越大,量化越难。
3、一些特殊的数据分布难以被量化模型较好的表示。

引用:

https://zhuanlan.zhihu.com/p/149659607
https://zhuanlan.zhihu.com/p/132561405
https://blog.csdn.net/WZZ18191171661/article/details/103332338

本文目的在于学术交流,并不代表本公众号赞同其观点或对其内容真实性负责,版权归原作者所有,如有侵权请告知删除。


“综述专栏”历史文章


更多综述专栏文章,

请点击文章底部“阅读原文”查看



分享、点赞、在看,给个三连击呗!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存