首页 > 其他分享 >转载:【AI系统】训练后量化与部署

转载:【AI系统】训练后量化与部署

时间:2024-12-13 17:21:41浏览次数:2  
标签:scale FP32 AI text cdot offset 量化 转载

本文将会重点介绍训练后量化技术的两种方式:动态和静态方法,将模型权重和激活从浮点数转换为整数,以减少模型大小和加速推理。并以 KL 散度作为例子讲解校准方法和量化粒度控制来平衡模型精度和性能。

训练后量化的方式

训练后量化的方式主要分为动态和静态两种。

动态离线量化

动态离线量化(Post Training Quantization Dynamic, PTQ Dynamic)仅将模型中特定算子的权重从 FP32 类型映射成 INT8/16 类型,主要可以减小模型大小,对特定加载权重费时的模型可以起到一定加速效果。但是对于不同输入值,其缩放因子是动态计算。动态量化的权重是离线转换阶段量化,而激活是在运行阶段才进行量化。因此动态量化是几种量化方法中性能最差的。

不同的精度下的动态量化对模型的影响:

  • 权重量化成 INT16 类型,模型精度不受影响,模型大小为原始的 1/2;
  • 权重量化成 INT8 类型,模型精度会受到影响,模型大小为原始的 1/4。

image

动态离线量化将模型中特定算子的权重从 FP32 类型量化成 INT8 等类型,该方式的量化有两种预测方式:

  1. 反量化推理方式,即是首先将 INT8/FP16 类型的权重反量化成 FP32 类型,然后再使用 FP32 浮运算运算进行推理;

  2. 量化推理方式,即是推理中动态计算量化算子输入的量化信息,基于量化的输入和权重进行 INT8 整形运算。

静态离线量化

静态离线量化(Post Training Quantization Static, PTQ Static)同时也称为校正量化或者数据集量化,使用少量无标签校准数据。其核心是计算量化比例因子,使用静态量化后的模型进行预测,在此过程中量化模型的缩放因子会根据输入数据的分布进行调整。相比量化训练,静态离线量化不需要重新训练,可以快速得到量化模型。

\[uint8 = round(float/scale) - offset \]

静态离线量化的目标是求取量化比例因子,主要通过对称量化、非对称量化方式来求,而找最大值或者阈值的方法又有 MinMax、KL 散度、ADMM、EQ,MSE 等方法。

静态离线量化的步骤如下:

  1. 加载预训练的 FP32 模型,配置用于校准的数据加载器;
  2. 读取小批量样本数据,执行模型的前向推理,保存更新待量化算子的量化 scale 等信息;
  3. 将 FP32 模型转成 INT8 模型,进行保存。

image

一些常用的计算量化 scale 的方法:

量化方法 方法详解
\(abs_{max}\) 选取所有激活值的绝对值的最大值作为截断值α。此方法的计算最为简单,但是容易受到某些绝对值较大的极端值的影响,适用于几乎不存在极端值的情况。
\(KL\) 使用参数在量化前后的 KL 散度作为量化损失的衡量指标。此方法是 TensorRT 所使用的方法。在大多数情况下,使用 KL 方法校准的表现要优于 \(abs_{max}\) 方法。
$avg $ 选取所有样本的激活值的绝对值最大值的平均数作为截断值α。此方法计算较为简单,可以在一定程度上消除不同数据样本的激活值的差异,抵消一些极端值影响,总体上优于 \(abs_{max}\) 方法。

量化粒度

量化参数可以针对层的整个权重张量计算,也可以针对每个通道分别计算。在逐张量量化中,同一剪切范围将应用于层中的所有通道。在模型量化过程中分为权重量化和激活量化:

  • 权重量化:即需要对网络中的权重执行量化操作。可以选择逐张量(per-tensor)或者逐通道(per-channel)的量化粒度,也就是说每个通道选取一个量化 scale。对于卷积神经网络,per- channel 通常对应通道轴。在任何一种情况下,量化因子的精度都是 FP32。per-channel 的量化粒度比 per-tensor 的更细粒度,模型效果更好,但带来的是推理过程中的计算复杂度增加。需要注意的是部分部署硬件有可能不支持 per-channel 量化推理。

  • 激活量化:即对网络中不含权重的激活类算子进行量化。一般采用逐张量(per-tensor)的粒度,也可以选择逐 token(per-token)的量化粒度。

image

KL 散度校准法

下面以静态离线量化中的 KL 散度作为例子,看看静态离线量化的具体步骤。

KL 散度原理

KL 散度校准法也叫相对熵,其中 p 表示真实分布,q 表示非真实分布或 p 的近似分布:

\[

标签:scale,FP32,AI,text,cdot,offset,量化,转载
From: https://www.cnblogs.com/wujinwanai/p/18600969

相关文章

  • 转载:【AI系统】感知量化训练 QAT
    本文将会介绍感知量化训练(QAT)流程,这是一种在训练期间模拟量化操作的方法,用于减少将神经网络模型从FP32精度量化到INT8时的精度损失。QAT通过在模型中插入伪量化节点(FakeQuant)来模拟量化误差,并在训练过程中最小化这些误差,最终得到一个适应量化环境的模型。文中还会讨论伪量化......
  • 转载:【AI系统】模型转换基本介绍
    模型转换的主要任务是实现模型在不同框架之间的流转。随着深度学习技术的发展,训练框架和推理框架的功能逐渐分化。训练框架通常侧重于易用性和研究人员的算法设计,提供了分布式训练、自动求导、混合精度等功能,旨在让研究人员能够更快地生成高性能模型。而推理框架则更专注于针对特......
  • 基于AI的图片背景移除工具 - 无需联网+永久免费 (附下载地址)
    背景介绍​继上一篇文章发布以来(在浏览器里就可以运行的本地AI模型-一键去除图片背景AI_基于webgpu的去背景ai演示),有不少朋友反馈虽然一键去除图片背景工具很好用,但对于一些小白用户来说,自己启动本地服务器太过复杂,并且需要远程加载模型资源,导致很容易载入失败.针......
  • 转载:【AI系统】EfficientFormer 系列
    本文主要介绍一种轻量化的Transformer结构,在获得高性能的同时,能够保持一定的推理速度。以延迟为目标进行优化设计。通过延迟分析重新探讨ViT及其变体的设计原则。EfficientFormerV1模型EfficientFormerV1:基于ViT的模型中使用的网络架构和具体的算子,找到端侧低效的原因......
  • 转载:【AI系统】低比特量化原理
    计算机里面数值有很多种表示方式,如浮点表示的FP32、FP16,整数表示的INT32、INT16、INT8,量化一般是将FP32、FP16降低为INT8甚至INT4等低比特表示。模型量化则是一种将浮点值映射到低比特离散值的技术,可以有效的减少模型的参数大小、内存消耗和推理延迟,但往往带来较大的精......
  • 转载:【AI系统】MobileFormer
    在本文中,将介绍一种新的网络-MobileFormer,它实现了Transformer全局特征与CNN局部特征的融合,在较低的成本内,创造一个高效的网络。通过本文,让大家去了解如何将CNN与Transformer更好的结合起来,同时实现模型的轻量化。MobileFormerMobileFormer:一种通过双线桥将MobileNet......
  • 转载:【AI系统】MobileVit 系列
    自VisionTransformer出现之后,人们发现Transformer也可以应用在计算机视觉领域,并且效果还是非常不错的。但是基于Transformer的网络模型通常具有数十亿或数百亿个参数,这使得它们的模型文件非常大,不仅占用大量存储空间,而且在训练和部署过程中也需要更多的计算资源。所以在本......
  • CCF-CV企业交流会—走进合合信息顺利举办,打造大模型时代的可信AI
    近期,《咬文嚼字》杂志发布了2024年度十大流行语,“智能向善”位列其中,过去一年时间里,深度伪造、AI诈骗等话题屡次登上热搜,AI技术“野蛮生长”引发公众担忧。今年9月,全国网络安全标准化技术委员会发布了《人工智能安全治理框架》,指出人工智能既面临自身技术缺陷、不足带来的内生风......
  • 转载:【AI系统】模型压缩基本介绍
    随着神经网络模型的复杂性和规模不断增加,模型对存储空间和计算资源的需求越来越多,使得部署和运行成本显著上升。模型压缩的目标是通过减少模型的存储空间、减少计算量或提高模型的计算效率,从而在保持模型性能的同时,降低模型部署的成本。模型压缩的目标可以概括为以下几点:减少模......
  • H100、L4、A6000 等 9 款 GPU 横评,告诉你哪些适合模型训练,哪些适合AI 推理
    在AI领域,有两大场景对GPU的需求最大,一个是模型训练,另一个是AI推理任务。但是很多人多可能在最开始为自己的项目做GPU选型时,都很难判断哪些GPU适合做模型训练,哪些GPU更适合去做推理任务。所以我们通过这篇文章将基于GPU指标来帮助大家对比分析NVIDIA的H100、A1......