PTQ量化和QAT量化

news/2025/2/15 6:24:49/

目录

1--PTQ量化

2--QAT量化


1--PTQ量化

PTQ量化表示训练后量化(Post Training Quantization)。使用一批校准数据对训练好的模型进行校准,将训练好的FP32网络直接转换为定点计算的网络,过程中无需对原始模型进行任何训练,而只对几个超参数调整就可完成量化过程。(计算每一层的scale)

        TensorRT提供的PTQ算法包括:EntropyCalibratorV2、MinMaxCalibrator、EntropyCalibrator和LegacyCalibrator。

        通过上述算法进行量化时,TensorRT会在优化网络时尝试使用INT8精度。当某一层在INT8进度下速度优于默认精度,则会优先使用INT8。

        由于TensorRT是以速度为优先的,因此用户无法控制某一层的精度。

        同时TensorRT还会进行图优化,当一个OP设置为Int8精度,但其与另一个OP合并会导致速度更快时,TensorRT就会将两个OP合并,并忽略用户设置的INT8精度。

2--QAT量化

        QAT量化表示量化感知训练(Quantization Aware Training),将训练过的模型进行量化并再训练。  

        使用QAT量化时,会为权重值和激活值插入Q节点(量化节点,FP32→INT8)和DQ节点(反量化节点,INT8→FP32)来模拟量化的过程。  

        TensorRT在QAT量化时会插入FQ算子,其作用是将输入先进行量化为INT8,再反量化为FP32,在逻辑上表现为QDQ节点。

        插入QDQ节点后,QDQ节点会模拟量化和反量化的过程,并记录对应的scale和zero_point等信息。

        导出带有QDQ节点的模型为ONNX后,在TensorRT解析上述ONNX模型时,会动态调用Q节点和DQ节点的位置。

        尽管最后所有的Q节点和DQ节点会形成匹对,但不同位置的Q节点和DQ节点会造成一定的精度损失。

        此外,TensorRT还会将某些OP与插入的Q节点和DQ节点进行融合,形成对应的Q算子和DQ算子。

        TensorRT一般遵循的优化规则是: 尽可能将DQ算子推迟,推迟反量化操作和尽可能将Q算子提前,提前量化操作。即让INT8的范围尽可能大,提高推理速度。
        TensorRT在优化网络的时候会把CONV、BN、RELU算子一同合并,来加快推理速度。


http://www.ppmy.cn/news/1163839.html

相关文章

变化检测数据集制作详细版

本文记录在进行变化检测数据集制作过程中所使用的代码 首先需要准备相同地区不同时间的两幅影像,裁减成合适大小,如256*256。相同区域命名相同放在两个文件夹下。 接着使用labelme对变化区域进行标注,这里不再进行labelme安装及标注的赘述。…

【工具】利用ffmpeg将网页中的.m3u8视频文件转化为.mp4格式

目录 0.环境 1.背景 2.前提 3.详细描述 1)在网站上找到你想下载的视频的.m3u8链接 2)打开命令行,用ffmpeg命令进行转化 3)过程&结果截图 0.环境 windows64 ffmpeg 1.背景 网页上有个.m3u8格式的视频文件,…

web:[极客大挑战 2019]HardSQL

题目 打开页面显示为 查看源代码没有发现其他的提示信息,随便尝试一下 错误 题目名为hardsql,先来尝试有无sql注入存在 尝试输入单引号输入 显示页面存在注入 这里按照常规思路继续使用order by函数和union select函数进行查询,但是页面没有…

C/C++网络编程基础知识超详细讲解上部分(系统性学习day11)

目录 前言 一、网络的含义与构成 含义: 构成: 二、网络的体系结构 1>OSI七层模型 2>TCP/IP协议体系结构 3>数据经过体系结构,怎么封装? 4>端口号 5>大小端序 6>TCP/UDP传输层的协议 三、系统函数API学习框…

MySQL中如何进行表的优化和压缩?

在MySQL中,可以通过以下方式进行表的优化和压缩: 使用合适的存储引擎(Storage Engine):MySQL提供了多种存储引擎,如InnoDB、MyISAM等。不同的存储引擎在表的优化和压缩方面有不同的特点。例如,I…

从0开始编写BP,自适应学习率的BP神经网络,不使用MATLAB工具箱,纯手写matlab代码,以BP分类为例...

与上篇文章不同,仔细读了上篇文章的小伙伴应该知道,BP神经网络是有一个学习率的,而这个学习率很大程度上决定着神经网络的效果。这里采用自适应学习率,实现纯手写BP神经网络。 编程时,激活函数选择Sigmoid函数&#xf…

【Java基础面试三十一】、String a = “abc“; ,说一下这个过程会创建什么,放在哪里?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:String a “abc”; &am…

Spring Security登录表单配置(3)

1、登录表单配置 1.1、快速入门 理解了入门案例之后&#xff0c;接下来我们再来看一下登录表单的详细配置&#xff0c;首先创建一个新的Spring Boot项目&#xff0c;引入Web和Spring Security依赖&#xff0c;代码如下&#xff1a; <dependency><groupId>org.sp…