行为分析(七):模型部署部分(一):了解模型加速

今天来聊聊模型加速的那些事

模型加速如果发生在模型的训练阶段一般指的是模型的结构优化模型剪枝

模型加速如果发生在模型的推理阶段一般就意味着我们已经训练好的一个模型,并获得了它的权重门之后要做的是针对这个模型的模型量化或者模型蒸馏

1.模型结构优化

简单理解就是自己发明一种或者引入(或将网络一部分替换为)当前比较流行的轻型卷积结构。

总览各种深度学习模型,可以发现它们都是由一个个小组件组装而成,只是初期先把模型做大做强,后期落地遇到问题时,再瘦身优化。具体的优化方法依赖于具体的模型和业务,需要研究员因地制宜。上述这些优化操作都依赖于人工经验,费时费力,组合优化这种事情更适合让机器来做,于是神经网络结构搜索(NAS)技术就应运而生。

比如说ShuffleNetv2针对硬件MAC问题提出了四种解决方向以及相应的提出的改进结构,得到了一个推理速度有效提升的模型。如果想了解ShuffleNetv2的结构可以参考我之前写博客:https://blog.csdn.net/qq_37662375/article/details/119898375

2.模型剪枝

模型剪枝的初衷就是解决深度学习模型的过度参数化问题,说白了就是你的模型太胖了,跑不动,需要减肥。根据模型剪枝的方法可以分为两大类:一类是结构化剪枝,另一类是非结构化剪枝。

所谓结构化剪枝是对参数矩阵做有规律的裁剪,比如按行或列裁剪,使得裁剪后的参数矩阵仍然是一个规则的的矩阵。结构化裁剪主流的方法有Channel-level、Vector-level、Group-level、Filter-level级别的裁剪。

非结构化剪枝是将原本稠密的参数矩阵裁剪为稀疏的参数矩阵,一般矩阵大小不变,其效果类似于参数正则化。因为目前大部分计算平台不支持稀疏矩阵的计算,只有结构化剪枝才能真正减少计算量。

3.模型量化(我想重点聊聊关于量化的部分)

3.1基础知识

模型量化是通过减少表示每个权重参数所需的比特数来压缩原始网络,从而实现计算加速。

半浮点精度(FP16)和混合精度是一种常见的做法,不过需要底层计算框架支持,否则无法实现计算加速。另一种是INT8量化,即将模型的权重参数从 FP32 转换为 INT8,以及使用 INT8 进行推理。量化的加速主要得益于定点运算比浮点运算快,但从FP32量化为INT8会损失模型精度。

神经网络模型的权重参数一般都是位于0附近的很小的数值,权重参数的分布大概如下图所示。而量化不会改变权重参数的分布,只是将权重参数从一个值域映射到另一个值域,过程类似于数值的归一化。整个量化的思想很简单,后续的研究都是围绕如何提高量化后的模型的准确度。

图:深度神经网络权重参数分布示例图

采用普通量化方法时,靠近零的浮点值在量化时没有精确地用定点值表示。因此,量化后的模型预测准确度会显著下降,如均一量化,会将具有动态值密度的浮点映射成具有恒定值密度的定点。其中一种的做法是在量化过程中做值域调整。

值域调整的目标是学习能在量化后更准确地运行网络的超参数 min/max,即归一化参数。根据调整的时机,可以进一步划分为训练后量化和训练时量化,代表分别为 Nvidia Calibration 和 TensorFlow Quantization-aware Training。

除了上述常规量化操作,还有一些比较特殊的量化网络,如二进制神经网络、三元权重网络、XNOR网络。这些神经网络以更少的位数来表示权重参数,比如二进制神经网络是具有二进制权重和激活的神经网络,即网络权重只有1和-1,和量化不一样的地方在于这二值权重参数是通过训练时候的梯度优化得到,而不是从FP32量化得到。

小结:量化技术适用场景较广,加速效果明显。此外,对于精度敏感的模型,还可以通过精度补偿的操作来进一步优化量化模型的效果。

3.2模型量化方式

包含公式直接转化和量化训练两种

详见参考链接2

4.知识蒸馏

模型蒸馏本质上和迁移学习类似,只是它还多了一个模型压缩的目的,即通过模型蒸馏,将大模型压缩为小模型,使小模型可以跑得又快又好。所以,最基本的想法就是将大模型学习得到的知识作为先验,将先验知识传递到小规模的神经网络中,并在实际应用中部署小规模的神经网络。在实际研究中,我们将大模型称为Teacher,小模型称为Student,模型蒸馏的过程就是让Student去学习Teacher的知识。目前大部分模型蒸馏框架都是基于Teacher-Student的模式,只是有些方法会请多几个Teacher或者配个Assistant。模型蒸馏的依据主要有三点:
(1)Teacher可以从大量数据中学习数据结构间的相似性
(2)Student可以利用Teacher学习到的知识作为先验,加速模型的收敛
(3)Softmax函数随着温度变量(temperature)的升高分布更均匀

参考

链接1:https://www.cnblogs.com/lyp1010/p/13377074.html
链接2:https://zhuanlan.zhihu.com/p/79744430
链接3:https://mp.weixin.qq.com/s?__biz=MzA4MjY4NTk0NQ==&mid=2247494638&idx=1&sn=de8199ed90aece35e7bd256b7883ea15&chksm=9f835178a8f4d86e0e3a06faed6c9ca7d79e59610a58fe11b03315c70f6a5205f1651378fb86&scene=21#wechat_redirect
链接4:https://mp.weixin.qq.com/s/IS1PCMOQycdJoW86IACfFg

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白 AI 日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值