【学习笔记】量化

【一】量化的基本概念
在深度学习模型的优化中,量化(Quantization)是一种重要技术,它将浮点模型转换为低精度的整数模型,从而减少计算开销和存储需求。

  • 什么是量化

在这里插入图片描述
量化公式(quant):

其中,r为量化前数值,S为缩放因子,q为量化后数值,Z表示零点。
(tips:问题S、Z如何得到?PTQ在模型推理中得到?那QAT呢?)
反量化公式(dequant):
在这里插入图片描述

  • 对称量化和非对称量化

    • 非对称量化在这里插入图片描述
    • 对称量化
      在这里插入图片描述
      tips:clamp(min,max,in)返回min和max之间的值。
      【二】量化的方式
      量化的两种主要方法是训练后量化(Post-Training Quantization, PTQ)和量化感知训练(Quantization-Aware Training, QAT)
  • PTQ

    • 定义
      PTQ是在模型训练完成后,对模型参数和激活值进行量化的技术。由于无需修改训练过程,其实现简单且开销低。然而,PTQ会在量化过程中引入近似误差,可能导致模型精度下降。
    • 实现
      按【一】中提到的原理,将float32转换为int8(通常情况下),包括quant和dequant。

    (1)模型训练:先用标准的浮点精度训练模型,得到一个性能良好的浮点模型。
    (2)收集激活值的统计信息:使用校准数据集运行模型的前向传播,收集各层激活值的分布统计信息。
    (3)计算缩放因子和零点:根据激活值的最小值和最大值确定量化范围,并计算缩放因子(S)和零点(Z)。
    (4)量化权重和激活值:使用量化公式将浮点权重和激活值转换为定点整数
    (5)推理优化:量化后的模型直接用于推理时,所有计算都使用整数运算,可通过硬件加速器或优化库(如TensorRT、ONNX Runtime)实现高效推理。
    在这里插入图片描述

  • 优缺点

  • 优点:
    实现简单:无需重新训练模型。
    性能提升:通过定点运算显著提高推理速度。
    适用于大多数场景:当量化误差较小时,模型精度损失可忽略。

  • 缺点:
    精度下降:对于某些对精度要求高的任务,PTQ的效果可能不理想,尤其是在激活值动态范围大的情况下。

  • QAT

  • 定义
    QAT通过在训练过程中模拟量化操作,让模型逐步适应量化误差,从而在量化后仍能保持较高精度。其训练过程与标准训练类似,但在每次前向传播中引入了量化和反量化操作。

  • 实现
    前向传播中的量化模拟:插入模拟量化操作,按照PTQ的量化公式进行量化和反量化。量化感知的反向传播:针对量化的非连续性引入直通梯度估计(Straight-Through Estimator, STE),即对量化的梯度传递直接设为1。动态范围调整:量化范围((S)和(Z))可以根据权重和激活值分布的变化而动态调整。
    在这里插入图片描述

(1)准备浮点模型:使用标准方法训练一个浮点模型作为QAT的初始模型。
量化感知的前向传播:每次前向传播时,将权重和激活值模拟为量化后的整数值,对权重使用静态量化,对激活值使用动态量化
(2)误差优化:通过反向传播计算梯度并更新模型参数,量化误差会逐步被模型参数优化吸收。
(3)生成量化模型:训练完成后,生成完全量化的模型,在推理过程中使用定点运算。
参考连接

  • 优缺点
  • 优点:
    精度较高:显著减少量化带来的精度损失。
    更适用于复杂模型:对于大模型或激活值动态范围大的任务,QAT更能保证精度。
  • 缺点:
    训练开销大:需要重新训练模型,时间和计算成本较高。
    复杂性增加:需要调整训练流程,开发成本较高。
    一些模型量化的数据
    在这里插入图片描述
    在这里插入图片描述

【三】量化的对象
weight或activation?
【四】量化的实现形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值