算子量化技术基本概念

news/发布时间2024/5/17 13:32:58

INT8量化分为非对称量化与对称量化。对称量化是非对称量化的一个特例, 通常对称量化的性能会优于非对称量化, 而精度上非对称量化更优。

非对称量化

 

如上图所示, 非对称量化其实就是把[min,max]范围内的数值定点到[-128, 127]或者[0, 255]区间。

从int8到float的量化公式表达如下:

 其中r是真实的值, float类型; q是量化后的值, INT8或者UINT8类型;

S表示scale, 是float; Z是零点, 是INT8类型;

当量化到INT8时,

 =127,

 =-128; UINT8时,

 =255,

 =0。

反过来从float到int8的量化公式如下:

 对称量化

对称量化是非对称量化Z=0时的特例, 公式表达式如下所示:

 A)threshold是阈值, 可以理解为张量的范围是[-threshold, threshold];

B)这里

 , 通常是激活函数情况;

C)对于weight, 一般

 ;

D)对于UINT8, Tensor范围是[0, threshold], 此时

 。

Scale转换

公式表达:

其中取值是一个非负数

 ,其中

 取值[0.5,1],

 是一个非负数。

换个表述来说, 就是浮点数Scale, 可以转换成乘法与rshift, 如下表达:

 举例说明:

 乘法支持的位数越高, 就越接近Scale, 但是性能会越差。一般芯片会用32位或8位的乘法。

量化推导

可以用量化公式, 对不同的OP进行量化推导, 得到其对应的INT8计算方式。

对称与非对称都用在激活函数上, 对于权重一般只用对称量化。

卷积

卷积的表达式简略为: 

 代入int8量化公式, 推导如下:

 非对称量化特别注意的是, Pad需要填入

 。 

对称量化时, Pad填入0, 上述推导中

 与

 皆为0。

在PerAxis(或称PerChannal)量化时, 会取Filter的每个OC做量化, 推导公式不变, 但是会有OC个乘法、rshift。

内积

表达式与推导方式与卷积相同

Add

加法的表达式为: 

 代入int8量化公式, 推导如下:

 加法最终如何用TPU实现, 与TPU具体的指令有关。

这里对称提供的方式是用INT16做中间缓存;

在网络中,输入A、B已经是量化后的结果

 、

 ,因此非对称是先反量化成float, 做加法后再重量化成INT8

平均池化

平均池化的表达式可以简写为: 其中

 ,其中

 代入int8量化公式, 推导如下:

 其中

 LeakyReLU

LeakyReLU(泄漏ReLU)的表达式可以简写为: 

 代入int8量化公式, 推导如下:

 对称量化时,

  , 非对称量化时,

  。通过向后校准操作后, , 此时Sx/Sy = 1。

  当为对称量化时,

 与

 均为0。

Pad填充

Pad的表达式可以简写为:

 代入int8量化公式, 推导如下:

 通过前向校准操作后,

 , 此时

 / 

 = 1。

 对称量化时,

 与

 均为0, pad填入 round(value/

 ), 非对称量化时, pad填入round(value/

 +

 )。

PReLU

PReLU的表达式可以简写为: 

 代入int8量化公式, 推导如下:

 通过向后校准操作后,

 , 此时

 /

  = 1。

 一共有多个乘法与1个rshift。当为对称量化时,

 与

 均为0。

 

参考文献链接
https://arxiv.org/pdf/1712.05877.pdf
通用 AI 编译器工具链项目,高效将模型编译生成 TPU 执行代码

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

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

相关文章

ActiveMQ

入门概述 MQ 种类和对比MQ 就是消息中间件。MQ 是一种理念,ActiveMQ 是 MQ 的落地产品。不管是哪款消息中间件,都有如下一些技术维度:MQ 消息的详细比较各类 MQ 的擅长领域MQ 种类 变成语言 擅长领域kafka scala 大数据领域的主流 MQ。rabbitmq erlang 基于 erlang 语言,不…

如何优雅的写Markdown

一,基本用法 1.引用 写法: > 第一个引用 >> 这事第二个引用 >>> 这是第三级引用效果如下:第一个引用这事第二个引用这是第三级引用2.链接 写法: [这是百度的地址](http://www.baidu.com)格式: [name](url)效果: 这是百度的地址 3.表格 表格使用|来分割不同的…

基于深度学习的海洋鱼类识别算法matlab仿真

1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a3.算法理论概述深度学习在海洋鱼类识别中常采用卷积神经网络(Convolutional Neural Networks, CNNs)。CNN由多个层级组成,包括卷积层、池化层、全连接层以及分类层。典型流程如下:训练CNN的过程涉及前向传播、损失计算…

2-44. 设置鼠标指针根据物品调整

下载好看的鼠标图片修改 Canvas 的 Tag添加 Cursor Image添加 CursorManager把 Cursor Image 放到第一个位置编辑 CursorManager让虚拟鼠标跟随鼠标移动鼠标的尖点不是虚拟鼠标的尖点,需要用 aseprite 修改图片然后将鼠标的锚点切换为下图所示的锚点坐标即可另外还可以使用 Sp…

国土空间基础信息平台:构筑智慧国土的数字化基石

国土空间是国家发展的重要基础,是支撑经济社会可持续发展的关键资源。随着信息技术的飞速发展,如何高效、科学地管理和利用国土空间资源,已成为摆在我们面前的一项重要任务。在这样的背景下,“国土空间基础信息平台”应运而生,成为构筑智慧国土的数字化基石。国土空间基础…