【开发】模型部署笔记

目录

    • 模型量化

模型量化

1、模型量化优点

  • 低精度模型表示模型权重数值格式为FP16(半精度浮点)或者INT8(8位定点整数),但是目前低精度往往就指代INT8。
  • 常规精度模型则一般表示模型权重数值格式为FP32(32位浮点,单精度)。
  • 混合精度则在模型中同时使用FP32和FP16的权重数值格式。FP16减少了一半的内存大小,但有些参数或操作符必须采用FP32格式才能保持准确度。

2、模型量化方案

  • data free:不适用校准集,直接将浮点数转化成量化数。高通的DFQ不使用校准集也得到了很高的精度。
  • calibration:基于校准集方案,通过输入少量真实数据进行统计分析。
  • finetune:基于训练微调的方案,将量化误差在训练时仿真建模,调整权重使其更适合量化。好处是能带来更大的精度提升,缺点是要修改模型训练代码,开发周期较长。

在这里插入图片描述
FP32转Int8量化参考这篇博客:
Int8量化介绍

3、PTQ
训练后量化(Post Training Quantizationi),也叫做离线量化,根据量化零点 x z e r o _ p o i n t x_{zero\_point} xzero_point是否为0,训练后量化分为对称量化和非对称量化;根据数据通道顺序NHWC这一维度区分,训练后量化分为逐层量化和逐通道量化。目前TensorRT使用逐层量化的方法,每一层采用同一个阈值进行量化。逐通道量化对每一层每个通道都有各自的阈值,对精度可以有一个很好的提升。

4、QAT
在线量化,即在模型训练时加入伪量化节点,用于模拟模型量化时引起的误差。伪量化节点就是模仿quantization-dequantization的过程。
在这里插入图片描述
论文中一般在activation后和conv weight之前加入伪量化节点。

4、量化的分类

  • 二值化
  • 线性量化:采用均匀分布的聚类中心,原始浮点数据和量化后的定点数据存在一个简单的线性变换关系,因为卷积、全连接等网络层本身只是简单的线性计算,因此线性量化中可以直接用量化后的数据直接计算。
  • 对数量化:一种比较特殊的量化方法。两个同底的幂指数进行相乘,那么等价于其指数相加,降低了计算强度。同时加法也被转变为索引计算。

5、对称量化和非对称量化
根据偏移量Z是否为0,可以将浮点数的线性量化分为两类:对称量化和非对称量化。

在这里插入图片描述
对称量化的浮点值和 8 位定点值的映射关系如下图,从图中可以看出,对称量化就是将一个tensor中的[-max(|x|), max(|x|)]内的FP32值分别映射到8bit数据的[-128, 127]的范围内,中间值按照线性关系进行映射,称这种映射关系是对称量化。可以看出,对称量化的浮点值和量化值范围都是相对于0对称。
在这里插入图片描述
非对称量化就是偏移量不为0,此时INT8的值域为[0, 255]。

权重量化浮点值可以分为两个步骤:
1、通过在权重张量中找到min和max值从而确定 x s c a l e x_{scale} xscale x z e r o p o i n t x_{zero_point} xzeropoint
2、将权重张量的每个值从FP32转换为INT8。
在这里插入图片描述

6、量化方法的改进
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/705233.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS学习笔记之中级教程(二)

-.CSS学习笔记之中级教程(一) 6、CSS 布局 - display: inline-block 与 display: inline 相比,主要区别在于 display: inline-block 允许在元素上设置宽度和高度。 同样,如果设置了 display: inline-block,将保留上下…

【C语言】通讯录系统实现

目录 1、通讯录系统介绍 2、代码分装 3、代码实现步骤 3.1制作菜单函数以及游戏运行逻辑流程 3.2、封装人的信息PeoInfo以及通讯录Contact结构体类型 3.3、初始化通讯录InitContact函数 3.4、增加联系人AddContact函数 3.5、显示所有联系人ShowContact函数 3.6、删除联系人D…

libsndfile读取wav文件基本属性

本文的目的是提供一种方法读取wav文件的基本属性&#xff1a;音频帧数&#xff0c;格式、通道数和采样率信息。 代码如下所示&#xff1a; #include <iostream> #include <QDebug> #include "sndfile.h"using namespace std;int main() {// 初始化 ALS…

全网最全的基于电机控制的38类simulink仿真全家桶----新手大礼包

整理了基于电机的38种simulink仿真全家桶&#xff0c;包含多种资料&#xff0c;类型齐全十分适合新手学习使用。包括但是不局限于以下&#xff1a; 1、基于多电平逆变器的无刷直流电机驱动simulink仿真 2、基于负载转矩的感应电机速度控制simulink仿真 3、基于滑膜观测器的永…

【35分钟掌握金融风控策略29】贷中模型调额调价策略

目录 贷中客户风险管理和客户运营体系 用信审批策略 用信审批策略决策流与策略类型 贷中预警策略 对存量客户进行风险评级 基于客户的风险评级为客户匹配相应的风险缓释措施和建议 调额策略 基于定额策略的调额策略 基于客户在贷中的风险表现的调额策略 调价策略 存…

python接口测试之tokensession的处理

使用python语言来进行实现&#xff0c;在这里我们使用第三方的库requests&#xff0c;需要单独的安装下&#xff0c;安装的命令是&#xff1a; pip install -U requests 见安装的截图&#xff1a; 安装成功后&#xff0c;如果可以在正常的导入&#xff0c;说明安装OK&#xf…

Java码农的福音:再也不怕乱码了

即便是Java这样成熟的语言&#xff0c;开发者们也常常会遇到一个恼人的问题——乱码。 本文将深入探讨乱码的根本原因&#xff0c;并针对Java开发中的乱码场景提出有效的解决方案&#xff0c;辅以实战代码&#xff0c;让Java程序员从此告别乱码困扰。 一&#xff0c;字符集的…

SVDD(Singing Voice Deepfake Detection,歌声深度伪造检测)挑战2024

随着AI生成的歌声快速进步&#xff0c;现在能够逼真地模仿自然人类的歌声并与乐谱无缝对接&#xff0c;这引起了艺术家和音乐产业的高度关注。歌声与说话声不同&#xff0c;由于其音乐性质和强烈的背景音乐存在&#xff0c;检测伪造的歌声成为了一个特殊的领域。 SVDD挑战是首个…

机器学习笔记 KAN网络架构简述(Kolmogorov-Arnold Networks)

一、简述 在最近的研究中,出现了号称传统多层感知器 (MLP) 的突破性替代方案,重塑了人工神经网络 (ANN) 的格局。这种创新架构被称为柯尔莫哥洛夫-阿诺德网络 (KAN),它提出了一种受柯尔莫哥洛夫-阿诺德表示定理启发的函数逼近的方法。 与 MLP 不同,MLP 依赖于各个节…

vs2019 c++里用 typeid() . name () 与 typeid() . raw_name () 测试数据类型的区别

&#xff08;1&#xff09; 都知道&#xff0c;在 vs2019 里用 typeid 打印的类型不大准&#xff0c;会主动去掉一些修饰符&#xff0c; const 和引用 修饰符会被去掉。但也可以给咱们验证学到的代码知识提供一些参考。那么今天发现其还有 raw_name 成员函数&#xff0c;这个函…

MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】

前言 做数仓开发离不开 SQL &#xff0c;写了很多 HQL 回头再看 MySQL 才发现&#xff0c;很多东西并不是 HQL 所独创的&#xff0c;而是几乎都来自于关系型数据库通用的 SQL&#xff1b;想到以后需要每天和数仓打交道&#xff0c;那么不管是 MySQL 还是 Oracle &#xff0c;都…

uniapp + vue3 设置 axios proxy 代理,并重写路径

uniapp vue2 设置代理如下&#xff1a; 已生成的项目架构里面找到manifest.json文件&#xff0c;通过源码视图的方式打开文件&#xff0c;在文件中添加一下代码即可完成代理&#xff1a; "h5": {"devServer": {"disableHostCheck": true, //禁…