问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

量化面试20问:从基本原理到应用场景详解

创作时间:
作者:
@小白创作中心

量化面试20问:从基本原理到应用场景详解

引用
CSDN
1.
https://blog.csdn.net/t765833631/article/details/137504094

量化是AI和机器学习领域中的一个重要概念,特别是在模型部署和优化中扮演着关键角色。本文将通过20个问答,深入探讨量化的基本原理、应用场景及其相关技术细节。

量化的基本公式

对称均匀量化(Symmetric Uniform Quantization)

对称量化将零点z限制为真实的0。注意对称均匀量化并不是关于零点对称。它还分为有符号和无符号。

Signed量化公式

Signed量化范围

8bit量化范围:[-128, 127]

Signed缩放系数

Signed零点计算方法

Z = 0

Unsigned量化公式

Unsigned量化范围

8bit的量化范围:[0,255]

Unsigned缩放系数计算方法

Unsigned零点计算方法

Z = 0

反量化公式

非对称量化(Asymmetric Uniform Quantization)

即均匀仿射量化(Uniform Affine Quantization)。

非对称量化公式

非堆成量化范围

  • Signed:[-128, 127]
  • Unsigned:[0, 255]

缩放系数

零点公式

Z = Qmax - round(rmax/S)

反量化公式

量化误差来源

量化误差主要来源于以下几个方面:

  1. 量化步长:量化步长越大,误差越大。
  2. 数据分布:数据分布越集中,量化误差越小。
  3. 量化方法:不同的量化方法会导致不同的误差。
  4. 硬件限制:硬件的计算精度也会影响量化误差。

业务敏感性分析

某些业务对误差不敏感,而有的又非常敏感,这主要取决于业务场景:

  1. 对误差不敏感的业务:如图像分类、目标检测等,这些场景对精度要求相对较低,量化误差的影响较小。
  2. 对误差敏感的业务:如语音识别、自然语言处理等,这些场景对精度要求较高,量化误差的影响较大。

量化信息存储方式

量化信息可以存储在Tensor或OP中,具体取决于应用场景:

  1. Tensor量化:将量化信息存储在Tensor中,适用于静态量化。
  2. OP量化:将量化信息存储在OP中,适用于动态量化。
  3. 混合存储:在某些场景下,可能需要同时使用Tensor和OP存储量化信息。

PTQ量化基本流程

PTQ(Post-Training Quantization)量化的基本流程包括:

  1. 模型训练:先训练一个浮点模型。
  2. 数据收集:收集代表性数据集。
  3. 量化参数计算:计算量化参数(如缩放系数、零点等)。
  4. 模型量化:将浮点模型转换为量化模型。

PTQ和QAT的区别

PTQ和QAT(Quantization-Aware Training)的主要区别在于:

  1. 训练方式:PTQ在训练完成后进行量化,而QAT在训练过程中就考虑量化的影响。
  2. 性能:QAT通常能获得更好的性能,因为训练过程中就考虑了量化的影响。
  3. 复杂度:QAT的训练过程更复杂,需要更多的计算资源。

Per Tensor和Per Channel的区别

对于Conv2D的Weight来说,Per Tensor和Per Channel的主要区别在于:

  1. Per Tensor:整个Tensor使用相同的量化参数。
  2. Per Channel:每个通道使用不同的量化参数,可以更好地适应不同通道的数据分布。

Fake Quant的作用

Fake Quant主要用于模拟量化过程,其主要作用包括:

  1. 训练时:在训练过程中模拟量化效果,帮助模型适应量化后的表现。
  2. 推理时:在推理时实际执行量化操作。

Conv2D的量化选择

对于Conv2D的3个输入(Input、Weight、Bias),通常采用以下量化组合:

  1. Input:通常采用对称量化。
  2. Weight:通常采用对称量化。
  3. Bias:通常采用浮点表示,以避免量化误差。

Requant的基本计算逻辑和作用

Requant主要用于调整量化参数,其基本计算逻辑包括:

  1. 计算新的缩放系数:根据当前的量化范围和目标量化范围计算新的缩放系数。
  2. 调整零点:根据新的缩放系数调整零点。

混合精度计算逻辑

混合精度计算主要通过以下步骤实现:

  1. 选择关键层:选择对精度要求较高的层使用高精度表示。
  2. 选择非关键层:选择对精度要求较低的层使用低精度表示。
  3. 调整量化参数:根据层的精度要求调整量化参数。

需要特殊处理的OP

在量化过程中,以下OP通常需要特殊处理:

  1. Conv2D:需要考虑权重和输入的量化方式。
  2. Fully Connected:需要考虑权重和输入的量化方式。
  3. BatchNorm:需要考虑与量化层的融合。

Conv2D的Multiplier和Shift

Conv2D的Multiplier和Shift通常通过以下方式推理:

  1. Multiplier:通过量化参数计算得到。
  2. Shift:通过量化参数和硬件限制计算得到。

Bias的Scale要求

对于Conv2D来说,采用Multiplier和Shift计算时,Bias的Scale通常需要满足以下要求:

  1. 与输入和权重的Scale一致:以避免额外的量化误差。

对称量化范围限制

对称量化时,统计出来的浮点范围需要限制min≤0,max≥0,主要是为了:

  1. 保持对称性:确保量化范围关于0对称。
  2. 简化计算:便于计算量化参数。

阈值搜索方法

常见的阈值搜索方法包括:

  1. Min-Max:通过统计最小值和最大值确定阈值。
  2. KL-Divergence:通过最小化KL散度确定阈值。
  3. Entropy:通过最小化熵确定阈值。

8bit量化带符号时的q_min选择

在8bit量化带符号时,选择q_min为-128和-127有以下区别:

  1. -128:可以充分利用整个量化范围,但可能会增加溢出风险。
  2. -127:可以减少溢出风险,但会牺牲部分量化精度。

中间量化误差变化

模型出现中间量化误差大,后续量化误差又减少的情况,主要是因为:

  1. 模型训练过程:模型在训练过程中逐渐适应量化误差。
  2. 量化参数调整:在训练过程中不断调整量化参数,以减小量化误差。

余弦度量在量化误差衡量中的优缺点

余弦度量在衡量量化误差时具有以下优缺点:

  1. 优点
  • 方向敏感:可以反映向量方向的相似度。
  • 尺度不变:不受向量尺度的影响。
  1. 缺点
  • 幅度不敏感:不能反映向量幅度的差异。
  • 计算复杂度:计算余弦相似度需要进行向量归一化,计算复杂度较高。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号