模型推理谈谈非线性激活函数的量化方式(代码片段)

极智视界 极智视界     2023-01-15     365

关键词:

欢迎关注我的公众号 [极智视界],获取我的更多笔记分享

O_o>_<o_OO_o~_~o_O

  本文主要聊一聊深度学习模型量化中对激活函数的处理方式。

  之前已经写过几篇关于模型量化的文章:《【模型推理】谈谈几种量化策略:MinMax、KLD、ADMM、EQ》、《【模型推理】谈谈模型量化组织方式》,里面对一些常用的量化算法及量化的组织方式进行了一些介绍,有兴趣的同学可以查阅。这里主要说一下模型中的激活函数特别是非线性激活函数的量化方式。

  RELU 函数比较特殊,在 Conv 后跟着 RELU 后,一般会进行融合量化,其中 RELU 这种分段线性函数可以用 clip 函数截断处理进行量化,但是有许多激活函数是非线性的,无法进行截断处理,那么非线性激活函数该如何量化呢?其实非线性激活函数在很多框架中是不会进行量化的,若非要量化,可以采用查表法、泰勒展开法。

1、查表法

  查表法的思路在运算性能低或者没有专门的非线性函数指令的单板机上常常被使用。对于神经网络中非线性激活函数的量化中查表法该如何使用呢?

  任何一个非线性激活函数在进行量化时,都可以用如下数学表达式进行等效:

  上述式子中,很多情况下 f() 这个函数是无法彻底用整型运算代替的,而查表法的思想是基于输入 qx 在被量化后为 int8 类型,其值域为有限集合[-2^7, 2^7-1],因此,用查表代替运算时,我们可以预先算好任何 qx 所对应的量化值:

  实际推理过程中,我们预先计算好的表其长度为 256,假设表的第 128 位数的指针为 Y128,那么取出经过非线性函数的量化值是个很简单的取址操作,如下所示:

  以下分别是 sigmoid 和 mish 激活函数经过模拟出来的浮点数,其输入分布为在 [-4, 4] 的平均分布时使用 KL 散度量化算法进行量化后的曲线图:


2、泰勒展开

  对可导函数在某点 x0 进行泰勒展开,该函数在该点必须是无限可导的。那么其展开式如下:


  将量化公式代入上述式子,可得到如下的量化等效式:

  这样就实现了使用泰勒展开方法对非线性激活函数进行量化,但是可想而知,这种通过这样方法来进行量化的方法缺陷很多,其中最为严重就是量化精度误差与运算耗时,所以这种量化方式不一定适合实际的部署。


  以上聊了一下深度学习模型中的非线性激活函数的量化方法,有问题欢迎讨论。


 【公众号传送】

《【模型推理】谈谈非线性激活函数的量化方式》



扫描下方二维码即可关注我的微信公众号【极智视界】,获取更多AI经验分享,让我们用极致+极客的心态来迎接AI !

模型推理谈谈模型量化组织方式(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一下深度学习模型量化组织方式。 在我的这篇《【模型推理】谈谈推理引擎的推理组织流程》文章里对模型量化策略进行了一些介绍,有兴趣的同学可以翻看一下。今天这里主要... 查看详情

模型推理谈谈几种量化策略:minmaxkldadmmeq(代码片段)

...O_o >_< o_O O_o ~_~ o_O 本文主要聊一下深度学习模型量化相关策略。 模型小型化是算法部署的关键技术,模型小型化的过程通常用模型量化来描述。量化通常是高比特位到低比特位的映射过程,量化的对象既... 查看详情

模型推理量化实现分享三:详解aciq对称量化算法实现(代码片段)

...f0c;前面还有一、二,有兴趣的同学可以查阅 (1)《【模型推理】量化实现分享一:详解min-max对称量化算法实现》; (2)《【模型推理】量化实现分享二:详解KL对称量化算法实现》; ACIQ和前面的量化策略类似... 查看详情

模型推理寒武纪mluresnet50量化及离线推理流程(代码片段)

...搭建、resnet50量化、resnet50离线推理,resnet系列是标准模型,其他模型也可参考该流程执行。文章目录1、 查看详情

模型推理ncnn模型转换及量化流程(代码片段)

...规范 O_o >_< o_O O_o ~_~ o_O 本文介绍一下ncnn模型转换及量化流程,以from_darknetyolov4为例。 关于ncnn的ubuntu和windows安装方法可以参考我之前写的:《【嵌入式AI】ubuntu安装ncnn》、《【经验分享】win10qm 查看详情

模型推理量化实现分享一:详解min-max对称量化算法实现(代码片段)

 欢迎关注我的公众号[极智视界],回复001获取Google编程规范 O_o >_< o_O O_o ~_~ o_O 大家好,我是极智视界,本文剖析一下min-max对称量化算法实现,以Tengine的实现为例。 Tengine是OpenAILab开源的优秀端... 查看详情

模型推理谈谈darknetyolo的route算子(代码片段)

 欢迎关注我的公众号[极智视界],获取我的更多笔记分享 O_o >_< o_O O_o ~_~ o_O 本文聊一聊darknetyolo网络中的route算子。 yolo是目标检测算法落地常用的网络,具有速度快、精度高的优点,相信很多同学... 查看详情

模型推理谈谈caffe的bn和scale算子(代码片段)

...写过一篇关于bn的文章,有兴趣的同学可以查阅《【模型推理】从部署 查看详情

模型推理量化实现分享二:详解kl对称量化算法实现(代码片段)

...实现,以Tengine的实现为例。 前面已经写过一篇《【模型推理】量化实现分享一:详解min-max对称量化算法实现》,有兴趣的同学可以查阅。这是上一篇的续集,也是量化实现详解的第二篇。 量化背景就不多做... 查看详情

markdown使用mxnet实现生产级神经网络模型量化推理(代码片段)

查看详情

模型推理谈谈caffe的conv算子(代码片段)

 欢迎关注我的公众号[极智视界],获取我的更多笔记分享 O_o >_< o_O O_o ~_~ o_O 本文主要聊一下caffe框架中的conv算子。 caffe中的卷积主要有两种实现:一种是img2col+gemm+bias,另一种是调用cudnn_conv&#x... 查看详情

多元线性回归模型(代码片段)

...要特征缩放?特征缩放的方法问题引入多元线性回归模型多元线性回归函数转化为矩阵多元线性回归模型的代价函数多元线性回归模型梯度下降函数问题解析(含代码)导入并标准化训练集多元线性代价函数梯度计算... 查看详情

量化感知训练实践:实现精度无损的模型压缩和推理加速(代码片段)

简介:本文以近期流行的YOLOX[8]目标检测模型为例,介绍量化感知训练的原理流程,讨论如何实现精度无损的实践经验,并展示了量化后的模型能够做到精度不低于原始浮点模型,模型压缩4X、推理加速最高2.3X... 查看详情

模型推理谈谈为什么卷积加速更喜欢nhwclayout(代码片段)

 本文主要讨论一下为什么卷积加速更加喜欢NHWC的数据排布。 我目前接触过的数据排布类型(主要针对卷积)有NCHW(pytorch、caffe),NHWC(Tensorflow,也是TVMGPU和寒武纪MLUCore上更喜欢的dataLayout),CHW(TensorRT里不考虑动态batch... 查看详情

模型推理tengine模型转换及量化(代码片段)

...范 O_o >_< o_O O_o ~_~ o_O 本文介绍一下Tengine模型转换及量化流程。 Tengine同ncnn一样,也是优秀的端侧推理框架,前面写过一篇《ncnn模型转换及量化流程》,有兴趣的同学可以查阅。 下面开始。文章目... 查看详情

极智ai|谈谈昇腾cann量化(代码片段)

...谈昇腾CANN量化。昇腾CANN的量化体现在AMCT工具,也即模型压缩工具,后面再来说AMCT,这篇先聊一下昇腾CANN的量化执行流程和原理。量化是指对原始框架的模型权重weights和数据activation进行低比特化int 查看详情

模型推理比特大陆se5边缘盒子caffessd量化与转换部署模型(代码片段)

...本教程详细记录了在比特大陆SE5边缘盒子上对caffeSSD检测模型进行量化和转换部署模型的方法。文章目录1、准备ssd模型2、转换fp32bmodel2.1转fp32bmodel2.2、模型精度验证3、Int8量化与模型转换3.1模型转换fp32umodel3.2模型转换int8umodel3.2.1... 查看详情

深度学习4大激活函数(代码片段)

...层效果相当,模型的表达力仍然不够。我们决定引入非线性函数作为激励函数,这样深层神经网络才有意义(不再是输入 查看详情