模型量化知识

什么是模型量化

在CV、DL的语境下:
模型:特指卷积神经网络(用于提取图像/视频视觉特征)
量化:将信号的连续取值近似为有限多个离散值的过程。

模型量化有什么好处

  • 压缩参数
  • 提升速度
  • 降低内存占用

模型量化对速度的影响

许多量化算法都无法提升速度。

理论峰值性能:单位时钟周期内能完成的计算个数 * 芯片频率

什么样的量化方法可以带来潜在的、可落地的速度提升:

  • 该量化数的计算在系统上峰值性能更高
  • 引入的额外计算少

目前已知提速概率较大的量化方法:

  • 二值化
  1. xnor + popcount理论峰值比float32高
  2. 引入额外的quantizer,可用SIMD方式加速
  • 线性量化(对称、非对称、Ristretto)
  1. arm/x86/nvGPU均支持高效的8-bit计算,TensorCore支持4bit计算
  2. 引入额外的quantizer/de-quantizer,可用SIMD方式加速
  • 对数量化
    可将乘法转变为加法,加法转变为索引

模型量化降低运行时内存

许多量化算法都无法降低内存占用

降低运行时内存占用比降低参数量更重要

  • 降低访存量 --> 继续提升速度
  • 处理更多图像/视频路数
  • 训练更大模型

内存占用构成:

  • 少部分是参数(weight)
  • 大部分是激活值(activation)
  • 绝大部分量化算法只关注卷积

如何用量化降低内存占用:

  • 将尽可能多的layer的激活值都进行量化
  • Fully Quantized Network for Object Detection, Li Rundong, CVPR2019
  • 可能引入更大的精度损失

量化模型的生产方式

如何将浮点模型转变为量化模型

  1. data free,直接将浮点参数根据某种手工规则转成量化
  2. calibration,通过少量输入数据进行统计分析
  3. finetune,将量化误差在训练时仿真建模,调整权重使其更适合量化

量化模型精度实用性

是什么阻碍了量化模型的落地

精度挑战大:

  • 线性量化对分布的描述不精确
  • 8bit to 1bit:比特数越低,精度损失越大
  • 分类 to 检测 to 识别:任务越难,精度损失越大
  • 大模型 to 小模型:通常认为模型越小,精度损失越大
  • Depthwise对量化不友好
  • Merge BN,Fully Quantized

软硬件支持程度:

  • 不同硬件高效支持的低比特指令不一样
  • 不同软件库提供的量化方案不一样
  • 不同软件库对于不同layer的量化位置不一样
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值