当前位置: 首页 > news >正文

宁波营销网站建设鄂州市城市建设档案馆网站

宁波营销网站建设,鄂州市城市建设档案馆网站,企业备案 网站名称,搭建网站运行环境1#xff0c;模型量化概述 1.1#xff0c;模型量化优点1.2#xff0c;模型量化的方案 1.2.1#xff0c;PTQ 理解 1.3#xff0c;量化的分类 1.3.1#xff0c;线性量化概述 2#xff0c;量化算术 2.1#xff0c;定点和浮点2.2#xff0c;量化浮点2.2#xff0c;量化算… 1模型量化概述 1.1模型量化优点1.2模型量化的方案 1.2.1PTQ 理解 1.3量化的分类 1.3.1线性量化概述 2量化算术 2.1定点和浮点2.2量化浮点2.2量化算术 3量化方法的改进 3.1浮点数动态范围选择3.2最大最小值MinMax3.3滑动平均最大最小值(MovingAverageMinMax)3.4KL 距离采样方法(Kullback–Leibler divergence)3.5总结 4量化实战经验参考资料 本文为对目前线性量化优点、原理、方法和实战内容的总结主要参考 神经网络量化简介 并加以自己的理解和总结适合初学者阅读和自身复习用。 1模型量化概述 1.1模型量化优点 模型量化是指将神经网络的浮点算法转换为定点。量化有一些相似的术语低精度Low precision可能是常见的。 低精度模型表示模型权重数值格式为 FP16半精度浮点或者 INT88位的定点整数但是目前低精度往往就指代 INT8。常规精度模型则一般表示模型权重数值格式为 FP3232位浮点单精度。混合精度Mixed precision则在模型中同时使用 FP32 和 FP16 的权重数值格式。 FP16 减少了一半的内存大小但有些参数或操作符必须采用 FP32 格式才能保持准确度。 模型量化有以下好处 参考 TensorFlow 模型优化模型量化-张益新 减小模型大小如 int8 量化可减少 75% 的模型大小int8 量化模型大小一般为 32 位浮点模型大小的 1/4 减少存储空间在端侧存储空间不足时更具备意义。减少内存占用更小的模型当然就意味着不需要更多的内存空间。减少设备功耗内存耗用少了推理速度快了自然减少了设备功耗 加快推理速度访问一次 32 位浮点型可以访问四次 int8 整型整型运算比浮点型运算更快CPU 用 int8 计算的速度更快某些硬件加速器如 DSP/NPU 只支持 int8。比如有些微处理器属于 8 位的低功耗运行浮点运算速度慢需要进行 8bit 量化。 总结模型量化主要意义就是加快模型端侧的推理速度并降低设备功耗和减少存储空间 工业界一般只使用 INT8 量化模型如 NCNN、TNN 等移动端模型推理框架都支持模型的 INT8 量化和量化模型的推理功能。 通常可以根据 FP32 和 INT8 的转换机制对量化模型推理方案进行分类。一些框架简单地引入了 Quantize 和 Dequantize 层当从卷积或全链接层送入或取出时它将 FP32 转换为 INT8 或相反。在这种情况下如下图的上半部分所示模型本身和输入/输出采用 FP32 格式。深度学习推理框架加载模型时重写网络以插入 Quantize 和 Dequantize 层并将权重转换为 INT8 格式。 注意之所以要插入反量化层Dequantize是因为量化技术的早期只有卷积算子支持量化但实际网络中还包含其他算子而其他算子又只支持 FP32 计算因此需要把 INT8 转换成 FP32。但随着技术的迭代后期估计会逐步改善乃至消除 Dequantize 操作达成全网络的量化运行而不是部分算子量化运行。 图四混合 FP32/INT8 和纯 INT8 推理。红色为 FP32绿色为 INT8 或量化。 其他一些框架将网络整体转换为 INT8 格式因此在推理期间没有格式转换如上图的下半部分。该方法要求算子Operator都支持量化因为运算符之间的数据流是 INT8。对于尚未支持的那些它可能会回落到 Quantize/Dequantize 方案。 1.2模型量化的方案 在实践中将浮点模型转为量化模型的方法有以下三种方法 data free不使用校准集传统的方法直接将浮点参数转化成量化数使用上非常简单但是一般会带来很大的精度损失但是高通最新的论文 DFQ 不使用校准集也得到了很高的精度。calibration基于校准集方案通过输入少量真实数据进行统计分析。很多芯片厂商都提供这样的功能如 tensorRT、高通、海思、地平线、寒武纪finetune基于训练 finetune 的方案将量化误差在训练时仿真建模调整权重使其更适合量化。好处是能带来更大的精度提升缺点是要修改模型训练代码开发周期较长。 TensorFlow 框架按照量化阶段的不同其模型量化功能分为以下两种 Post-training quantization PTQ训练后量化、离线量化Quantization-aware training QAT训练时量化伪量化在线量化。 1.2.1PTQ 理解 PTQ Post Training Quantization 是训练后量化也叫做离线量化根据量化零点 xzero_point 是否为 0训练后量化分为对称量化和非对称量化根据数据通道顺序 NHWC(TensorFlow) 这一维度区分训练后量化又分为逐层量化和逐通道量化。目前 nvidia 的 TensorRT 框架中使用了逐层量化的方法每一层采用同一个阈值来进行量化。逐通道量化就是对每一层每个通道都有各自的阈值对精度可以有一个很好的提升。 1.3量化的分类 目前已知的加快推理速度概率较大的量化方法主要有 二值化其可以用简单的位运算来同时计算大量的数。对比从 nvdia gpu 到 x86 平台1bit 计算分别有 5 到128倍的理论性能提升。且其只会引入一个额外的量化操作该操作可以享受到 SIMD单指令多数据流的加速收益。线性量化(最常见)又可细分为非对称对称和 ristretto 几种。在 nvdia gpux86、arm 和 部分 AI 芯片平台上均支持 8bit 的计算效率提升从 1 倍到 16 倍不等其中 tensor core 甚至支持 4bit计算这也是非常有潜力的方向。线性量化引入的额外量化/反量化计算都是标准的向量操作因此也可以使用 SIMD 进行加速带来的额外计算耗时不大。对数量化一种比较特殊的量化方法。两个同底的幂指数进行相乘那么等价于其指数相加降低了计算强度。同时加法也被转变为索引计算。目前 nvdia gpux86、arm 三大平台上没有实现对数量化的加速库但是目前已知海思 351X 系列芯片上使用了对数量化。 1.3.1线性量化概述 与非线性量化不同线性量化采用均匀分布的聚类中心原始浮点数据和量化后的定点数据存在一个简单的线性变换关系因为卷积、全连接等网络层本身只是简单的线性计算因此线性量化中可以直接用量化后的数据进行直接计算。 2量化算术 模型量化过程可以分为两部分将模型从 FP32 转换为 INT8以及使用 INT8 进行推理。本节说明这两部分背后的算术原理。如果不了解基础算术原理在考虑量化细节时通常会感到困惑。 2.1定点和浮点 定点和浮点都是数值的表示representation它们区别在于将整数integer部分和小数fractional部分分开的点点在哪里。定点保留特定位数整数和小数而浮点保留特定位数的有效数字significand和指数exponent。 绝大多数现代的计算机系统采纳了浮点数表示方式这种表达方式利用科学计数法来表达实数。即用一个尾数(Mantissa尾数有时也称为有效数字它实际上是有效数字的非正式说法)一个基数(Base)一个指数(Exponent)以及一个表示正负的符号来表达实数。具体组成如下 第一部分为 sign 符号位 s占 1 bit用来表示正负号第二部分为 exponent 指数偏移值 k占 8 bits用来表示其是 2 的多少次幂第三部分是 fraction 分数值有效数字 M占 23 bits用来表示该浮点数的数值大小。 基于上述表示浮点数的值可以用以下公式计算 (−1)s×M×2k 值得注意是上述公式隐藏了一些细节如指数偏移值 k 使用的时候需要加上一个固定的偏移值。 比如 123.45 用十进制科学计数法可以表示为 1.2345×102其中 1.2345 为尾数10 为基数2 为指数。 单精度浮点类型 float 占用 32bit所以也称作 FP32双精度浮点类型 double 占用 64bit。 图五定点和浮点的格式和示例。 2.2量化浮点 32-bit 浮点数和 8-bit 定点数的表示范围如下表所示 数据类型最小值最大值FP32-3.4e383.4e38int8-128128uint80255 神经网络的推理由浮点运算构成。FP32 和 INT8 的值域是 [(2−223)×2127,(223−2)×2127] 和 [−128,127]而取值数量大约分别为 232 和 28 。FP32 取值范围非常广因此将网络从 FP32 转换为 INT8 并不像数据类型转换截断那样简单。但是一般神经网络权重的值分布范围很窄非常接近零。图八给出了 MobileNetV1 中十层拥有最多值的层的权重分布。 图八十层 MobileNetV1 的权重分布。 根据偏移量 Z 是否为 0可以将浮点数的线性量化分为两类-对称量化和非对称量化。 当浮点值域落在 (−1,1) 之间权重浮点数据的量化运算可使用下式的方法将 FP32 映射到 INT8这是对称量化。其中 xfloat 表示 FP32 权重 xquantized 表示量化的 INT8 权重xscale 是缩放因子映射因子、量化尺度范围/ float32 的缩放因子。 xfloatxscale×xquantized 对称量化的浮点值和 8 位定点值的映射关系如下图从图中可以看出对称量化就是将一个 tensor 中的 [−max(|x|),max(|x|)] 内的 FP32 值分别映射到 8 bit 数据的 [-128, 127] 的范围内中间值按照线性关系进行映射称这种映射关系是对称量化。可以看出对称量化的浮点值和量化值范围都是相对于零对称的。 因为对称量化的缩放方法可能会将 FP32 零映射到 INT8 零但我们不希望这种情况出现于是出现了数字信号处理中的均一量化即非对称量化。数学表达式如下所示其中 xzero_point 表示量化零点量化偏移。 xfloatxscale×(xquantized−xzero_point) 大多数情况下量化是选用无符号整数即 INT8 的值域就为 [0,255] 这种情况显然要用非对称量化。非对称量化的浮点值和 8 位定点值的映射关系如下图 总的来说权重量化浮点值可以分为两个步骤 通过在权重张量Tensor中找到 min 和 max 值从而确定 xscale 和xzero_point。将权重张量的每个值从 FP32 转换为 INT8 。 (1)xfloat∈[xfloatmin,xfloatmax](2)xscalexfloatmax−xfloatminxquantizedmax−xquantizedmin(3)xzero_pointxquantizedmax−xfloatmax÷xscale(4)xquantizedxfloat÷xscalexzero_point 注意当浮点运算结果不等于整数时需要额外的舍入步骤。例如将 FP32 值域 [−1,1] 映射到 INT8 值域 [0,255]有 xscale2255而xzero_point255−2552≈127。 注意量化过程中存在误差是不可避免的就像数字信号处理中量化一样。非对称算法一般能够较好地处理数据分布不均匀的情况。 2.2量化算术 量化的一个重要议题是用量化算术表示非量化算术即量化神经网络中的 INT8 计算是描述常规神经网络的 FP32 计算对应的就是反量化过程也就是如何将 INT8 的定点数据反量化成 FP32 的浮点数据。 下面的等式 5-10 是反量化乘法 xfloat⋅yfloat 的过程。对于给定神经网络输入 x、权重 y 和输出 z 的缩放因子肯定是已知的因此等式 14 的 Multiplierx,y,zxscaleyscalezscale 也是已知的在反量化过程之前可预先计算。因此除了 Multiplierx,y,z 和 (xquantized−xzero_point)⋅(yquantized−yzero_point) 之间的乘法外等式 16 中的运算都是整数运算。 (5)zfloatxfloat⋅yfloat(6)zscale⋅(zquantized−zzero_point)(xscale⋅(xquantized−xzero_point))⋅(yscale⋅(yquantized−yzero_point))(7)zquantized−zzero_pointxscale⋅yscalezscale⋅(xquantized−xzero_point)⋅(yquantized−yzero_point)(8)zquantizedxscale⋅yscalezscale⋅(xquantized−xzero_point)⋅(yquantized−yzero_point)zzero_point(9)Multiplierx,y,zxscale⋅yscalezscale(10)zquantizedMultiplierx,y,z⋅(xquantized−xzero_point)⋅(yquantized−yzero_point)zzero_point 等式反量化算术过程。 对于等式 10 可以应用的大多数情况quantized 和 zero_point 变量 (x,y) 都是 INT8 类型scale 是 FP32。实际上两个 INT8 之间的算术运算会累加到 INT16 或 INT32这时 INT8 的值域可能无法保存运算结果。例如对于 xquantized20、xzero_point50 的情况有
http://www.dnsts.com.cn/news/154889.html

相关文章:

  • 网站系统与程序的链接廊坊seo公司
  • 简单分析网站的外链 以及优化的策略.网站建设制作设计开发
  • 网站屏蔽收录学习做网站是什么专业
  • 成都都江堰网站建设蓝色扁平化企业网站
  • 网站建设 探索谷歌推广哪家公司好
  • 辽宁网站建设专业学校深圳航空公司订票电话
  • wordpress开启子站点广告设计公司需要什么资质和证书
  • 深圳做三网合一网站与网站建设有关的课程和知识点
  • 网站名称查询不更新网站如何做排名
  • 网站建设及服务招标公告长沙网站seo推广公司
  • 大连企业网站开发查企业信息怎么查
  • 品牌免费网站建设dw做网站常用标签
  • 网站粘度杭州清风室内设计学校
  • 仪征 做网站wordpress图片自动分页插件下载
  • 网站商城建设报告深圳商城网站设计推荐
  • 江苏华江建设集团网站西安外包公司排行
  • 上传网站工具app制作定制外包服务商e
  • 做医疗竞价网站四川省住房建设厅网站
  • 贵阳建站做网站排名收益
  • 企业信息管理系统平台官网白杨seo教程
  • 乾县交通建设网站c 网站开发流程
  • 外贸网站违反谷歌规则私人订制网站推荐
  • 哪个软件做网站好全国建设信息网官网
  • 好的平面设计灵感网站网站首页关键词如何优化
  • 教你做网站新手如何写公众号文章
  • 公关公司都有哪些职位seo首页网站
  • 青岐网站建设平台中国能源建设集团有限公司董事长
  • php做视频网站有哪些软件下载制作网站软件下载
  • 发卡网站建设方案wordpress判断语句
  • 电子商务网站设计的基本流程本溪兼职网站建设招聘