神经网络定点量化

目的:

1. 加速计算(特别是移动端上)

2. 减少内存/显存占用(特别是移动端上)

3. 减少功耗(读取内存和计算都会耗电)

把某个tensor或者某个channel的这组float32, 用int8来表示,就是量化。

这组float32的上下界,可以取他们的min和max,也可以moving average,也可以去中间99%的那部分。。。越界的就用量化为0或者255。

公式:

(r实数-0) / (q整数-Z整数)= S = (r实数max-r实数min) / (q整数max-q整数min) = (r实数max-r实数min) / 255

S为缩放稀疏,Z为"Zero-Point",其实Z就是真实浮点值0映射到整数时对应的值,无论是在图像中还是NLP中都会有用0做padding值来补全的,映射到整数后,也应该有这样一个值的存在,这个值就是Z。在这里S和Z可以称为量化参数,对于每个权重矩阵和每个激活数组都有一对这样的值。

Linear层和卷积的量化:

神经网络量化入门--基本原理 - 知乎 (zhihu.com)

累加用的是INT16或者INT32:

Arithmetic in the quantized model is done using vectorized INT8 instructions. Accumulation is typically done with INT16 or INT32 to avoid overflow. This higher precision value is scaled back to INT8 if the next layer is quantized or converted to FP32 for output.

1. PyTorch的Dynamic Quantization

用户指定量化哪些层;这些层的权重全被量化成int8,activation在输入时量化成int8,计算完成后再反量化成float32; 每个batch的每层都要量化一次(所以叫做Dynamic量化);

2. PyTorch的Static Quantization

权重和activation全部被量化成int8;层与层之间不再转成float32;因此速度超快;

 模型权重中,每层的数据分布,在inference阶段是固定的,所以可以一次性统计分布并量化(先得到S和Z,再量化)

activation,每个batch都是不一样的,所以要先做calibration,即采样上千个batch,经过float32神经网络,得到每个激活tensor(或激活channel)的数据分布,最后计算好S和Z,最最后再量化;

以上两者都属于Post Training Quantization

3. Quantization Aware Training

Quantization aware training 量化背后的技术——Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference - 微笑sun - 博客园 (cnblogs.com)

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着深度学习的发展,卷积神经网络作为其重要算法被广泛应用到计算机视觉、自然语言处理及语音处理等各个领域,并取得了比传统算法更为优秀的成绩。但是,卷积神经网络结构复杂,参数量和计算量巨大,使得很多算法必须在GPU上实现,导致卷积神经网络难以应用在资源不足且实时性要求很高的移动端。为了解决上述问题,文中提出通过同时优化卷积神经网络的结构和参数来对卷积神经网络进行压缩,以使网络模型尺寸变小。首先,根据权重对网络模型结果的影响程度来对权重进行剪枝,保证在去除网络结构冗余信息的冋时保留模型的重要连接;然后通过量化感知( quanTIκaτion- awareτraining)对卷积神经网络的浮点型权重和激活值进行完全量化,将浮点运算转换成定点运算,在降低网络模型计算量的冋时减少网络模型的尺寸。文中选用 tensorflow深度学习框架,在 Ubuntu16.04操作系统中使用 Spyder编译器对所提算法进行验证实验结果表眀,该算法使结枃简单的 Lenet模型从l.64M压缩至θ.36M,压缩比达到η8%,准确率只下降了了0.016;使轻量级网络 Mobilenet模型从16.9M压缩至3.1M,压缩比达到81%,准确率下降0.03。实验数据说明,在对卷积神经网络权重剪枝与参数量化辶后,该算法可以做到在准确率损失较小的情况下,对模型进行冇α压缩,解决了卷积神经网络模型难以部署到移动端的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值