量化

A White Paper on Neural Network Quantization

  • 为什么要量化

为了追求性能,神经网络模型的体量不断增大,这给在边缘设备上部署模型造成了困难。因此需要一些技术使得模型轻量化,加快模型的推理速度和功率消耗。模型量化就是一种非常有效的模型轻量化算法。它主要通过对模型内的权重和激活值参数进行类型转化(比如浮点型转低位整型,或者混合精度等)来加快模型推理速度。但是,这种粗略的量化方式会引入噪声使得模型精度有所下降。

  • 主流量化手段

​ Post-Training Quantization 训练后量化 (PTQ) :需要预训练和标注的数据,因此,它是一种轻量级的按键式的量化方法。在大多数情况下,PTQ可以达到8比特量化,同时精度接近浮点型。

​ Quantization-Aware Training 量化感知训练 (QAT):需要微调和标注数据,但是可以完成更低位的量化,取得更有竞争力的结果。

模型训练的时候,权重和激活张量通常以16或32位精度的数据类型存储,而模型量化将权重和激活的张量存储在低精度的张量中。当把权重和激活张量从32位转为8位后,存储张量的内存空间缩小4倍,同时矩阵乘法的计算消耗降低14倍。神经网络已被证实,模型量化到较为低位的带宽之后,精度所受到的影响在可接受的范围之内。除此之外,模型量化还经常和其他模型优化的方法一同使用,比如网络架构搜索,模型压缩,模型剪枝等。所以模型量化是深度学习实际落地应用的一个核心步骤。但它也有缺点:低位宽量化会引入噪声到模型中,导致精度下降。尽管一些网络对噪声具有抗干扰性,但是其他网络还需要额外的工作去最大化量化的好处。

PTQ处理的是已经训练好的网络,使用少量数据或者不需要使用数据进行量化,它需要较少的超参数进行调整,并且不用端到端的训练。这使得PTQ不需要太多工程量和计算消耗,并且可以看作一种push-button方法(按钮启动方法,我理解的是在模型训练的时候不需要考虑,模型训练好之后如果需要PTQ就设置添加PTQ,如果不需要就不用添加,类似于想用的时候只需要按一下即可)

QAT依赖于在训练pipeline中使用模拟量化重新训练神经网络。虽然这需要在训练和潜在的超参数调整方面付出更多努力,但与低位量化的 PTQ 相比,它通常会进一步缩小与全精度精度的差距。

模型量化的理论基础

硬件背景

y=ωx+b

大型矩阵之间相乘和卷积操作的基础模块。这样的硬件模块旨在通过并行计算提升神经网络的推理速度。图1中神经网络加速器的两个基本元素:

一般神经网络的训练都是用32位的浮点数表示权重和激活值。如果我们要使用32位的浮点数执行推理,乘法器和加法器必须支持浮点计算逻辑。并且我们需要将 32 位数据从内存传输到乘法器。计算流程和数据传输消耗了神经网络推理过程中花费的大部分能量。 因此,可以通过使用较低位的定点或量化表示来实现。低位定点表示(比如 INT 8)不仅降低了大量的数据传输,也降低了图1中操作的内存和能量消耗。因为数字算术的成本通常与使用的位数成二次线性关系,并且定点加法比浮点加法更快。

为了从浮点转移到高效的定点运算,我们需要一个将浮点向量转换为整数的方案。浮点向量 x 可以近似表示为标量乘以整数值向量:

Sx: 比例因子 scale factor

X_int: 整数数组integer vector

我们将向量的这个量化版本表示为 ̂x。通过量化权重和激活,我们可以写出累积方程的量化版本

均匀仿射量化(非对称量化)

由三个量化参数定义:比例因子 s、零点 z 和位宽 b。

比例因子和零点用于将浮点值映射到整数网格,其大小取决于位宽。

  • 比例因子 s 通常表示为浮点数,并指定量化器的步长;
  • 零点 z 是一个整数,可确保对实零进行无误差量化。这对于确保零填充或 ReLU 等常见操作不会引起量化误差很重要。

一旦定义了三个量化参数,我们就可以继续进行量化操作。从实值向量 x 开始,我们首先将其映射到无符号网格中,其中b是位宽。
0 , 2 b − 1 {0, 2^b - 1} 0,2b−1

[]: 是取整运算符

对称均匀量化

Symmetric uniform quantization

对称量化是不对称情况的简化版本。 对称量化器将零点限制为 0。这减少了在不对称量化中的累加操作期间处理零点偏移的计算开销。 但是偏移量的缺乏限制了整数域和浮点域之间的映射。 因此,有符号或无符号整数网格的选择很重要:

无符号对称量化非常适合单尾分布,例如 ReLU 激活(见图 3)。另一方面,可以为大致关于零对称的分布选择有符号对称量化

均匀量化的三种形式(非对称均匀量化,有符号型对称量化,无符号型对称量化)如图3所示:

资料:

  • 来自高通研究院: 论文下载地址

  • csdn翻译

深度学习网络量化白皮书论文学习相关推荐

  1. 基于深度学习的图像处理算法论文学习

    近年来,深度学习技术得到了巨大的发展,并广泛应用于图像处理领域.相对于许多传统算法,深度学习技术从海量的训练数据中学习到的先验知识具有更强的泛化能力和更复杂的参数化表达,且无需调节算法参数以适应不同的 ...

  2. 2021-03-27 深度信念网络(DBN)学习笔记

    目录 前言 1.BM 2.RBM 二.DBN 总结 前言 仅此以记录学习过程.深度信念网络(DBN)通过采用逐层训练的方式,解决了深层次神经网络的优化问题,通过逐层训练为整个网络赋予了较好的初始权值, ...

  3. Spiking GATs(基于尖峰神经网络的学习图注意)论文学习笔记

    这一篇论文是我读研期间,本校(安徽大学)计算机学院的江波老师在2022年5月份发表的一篇论文,由于我自己学习的是图神经网络的方向,而且也是我本校的老师所发的paper,所以在此写下我对此篇论文的笔记, ...

  4. 【论文学习】graph backdoor论文学习

    摘要 本文提出了GTA攻击方法,这是在GNN上的第一个后门攻击(backdoor attack).GTA有如下几个重要的方面:1)graph-oriented:将trigger定义成一个子图,这个子图 ...

  5. Bengio、Hinton的不懈追求——深度学习算法揭示大脑如何学习

    来源:AI科技评论 编译:Don 校对:青暮 "如果我们能够揭示大脑的某些学习机制或学习方法,那么人工智能将能迎来进一步的发展,"Bengio如是说. 深度学习依赖于精妙设计的算法 ...

  6. 【论文学习笔记】《A Review of Deep Learning Based Speech Synthesis》

    基于深度学习的语音合成综述论文学习 文章目录 基于深度学习的语音合成综述论文学习 1 简介 2 语音合成概述 2.1 语音合成概念 2.2 语音合成发展历史 2.3 传统语音合成技术 2.3.1 拼接 ...

  7. 如何使用强化学习进行量化投资?

    如何使用强化学习进行量化投资? 文章目录 如何使用强化学习进行量化投资? 直观使用强化学习进行量化投资 使用强化学习进行量化投资 量化投资强化学习流程图 行为决定(买入.卖出.持有) 执行行为 批量生 ...

  8. 深度学习论文导航 | 08 ResNet:用于图像识别的深度残差网络

    写在前面:大家好!我是[AI 菌],一枚爱弹吉他的程序员.我热爱AI.热爱分享.热爱开源! 这博客是我对学习的一点总结与记录.如果您也对 深度学习.机器视觉.算法.Python.C++ 感兴趣,可以关 ...

  9. 阿里巴巴线上使用的深度学习兴趣网络 DIN (三) - 论文翻译

    总述:阿里巴巴拥有世界上数一数二的电子商务系统,每天的成交额高达数十亿,那么这样一个大规模的商务网站肯定要做好一件事情,那就是用户搜索的时候给用户最好的搜索结果,用户不搜索的时候结合用户的兴趣给用户最 ...

最新文章

  1. 推荐一个提供干货的java公众号
  2. 速卖通关键词挖掘工具_网站优化必备的关键词挖掘工具
  3. centos上用yum安装rar/unrar
  4. Android怎样保证一个线程最多仅仅能有一个Looper?
  5. CRC生成多项式应该怎样定
  6. plsql中的if判断
  7. 网址出现error.aspx?aspxerrorpath=404.htm?aspxerrorpath=的原因及解决办法转
  8. http协议报文格式原理图
  9. 使用emacs + cscope + ecb替代source insight
  10. WPS客户端更新日志留着备用
  11. 电视盒子内存测试软件,目前最强的电视盒子?当贝超级盒子B1测评考验!
  12. 【jzoj2220】【二分】愤怒的奶牛2(angry)
  13. 关于n阶线性齐次常微分的特征方程特征根相同时解的推导
  14. java 获得jtextarea_java JTextArea中获得光标所在行数
  15. java-swing-下拉列表
  16. 机器学习关键步骤(四)
  17. python3 线程 join_python 多线程 join start
  18. 配置Anaconda中Jupyter Notebook的默认启动目录
  19. Flutter自定义Widget实例 -如何创建炫酷粒子时钟效果!
  20. 计算机组装职高必背,(完整word版)职高计算机组装与维护教案.doc

热门文章

  1. Macbook Pro M1芯片Python开发环境配置
  2. 基于EV/EBITDA倍数估值法的Alpha对冲策略
  3. C++独孤九剑第八式——平沙落雁(运行时浅剖析)
  4. xamarin其是一个鸡肋么?
  5. NB-IoT省电模式:PSM、DRX、eDRX
  6. centOS下安装ettercap
  7. 因为知道自己不管做什么,哪怕是最微小、最隐秘的行为也有后果,将影响到自己和他人,所以我们会自然而然的生起责任感,不再只顾眼前,为所欲为。我们也更深切的体会到人与人、人与世界的相互影响、相互依存
  8. 红酒销售商城(mysql)-含论文
  9. online logo maker:在线制作具有专业水准的logo
  10. 伯努利分布的最大似然估计与贝叶斯估计