赞
踩
1
为什么需要压缩模型
近些年来,随着算力的提升、数据的爆炸式增长和深度神经网络技术的成熟,深度神经网络在CV、NLP等很多领域都取得了远超传统机器学习的效果,而网络的规模和参数量也在迅速增加。端边设备的算力、电量和内存虽然有提升,但并不能匹配神经网络的部署要求,为解决这个矛盾,模型压缩算法就应运而生。
图.训练模型所需算力和摩尔定律的趋势,设备算力的增长远不及模型算力需求的增长;在部署模型时同样面临着类似的困难。
(图片来源:UC Berkeley: https://medium.com/riselab/ai-and-memory-wall-2cb4265cb0b8)
2
MindSpore Golden Stick(昇思金箍棒)
MindSpore Golden Stick是华为诺亚实验室和昇思MindSpore团队基于昇思MindSpore研发的模型压缩算法集,提供丰富的模型压缩算法如剪枝、量化等,以达成缩减模型参数量等效果,降低深度神经网络部署在端边设备上的门槛;同时提供一套简单易用的算法接口,降低应用模型压缩算法的成本。
MindSpore Golden Stick的整体架构图如下:
图.MindSpore Golden Stick架构图
1 | 底层的MindSpore Rewrite模块提供修改前端网络的能力,基于此模块的接口,算法开发者可以按照特定的规则对MindSpore的前端网络做节点和拓扑关系的增删查改; |
2 | 基于MindSpore Rewrite这个基础能力,MindSpore Golden Stick会提供各种类型的算法,比如SimQAT(Simulated Quantization Aware Training,量化感知训练)算法、SLB(Searching for low-bit weights,基于权值搜索的低比特神经网络量化)量化算法、SCOP(Scientific Control for Reliable Neural Network Pruning,基于科学控制法的神经网络剪枝)剪枝算法等; |
3 | 基于一些基础的量化、剪枝等算法,MindSpore Golden Stick还规划了如多种算法组合技术、AMC(AutoML for Model Compression and Acceleration on Mobile Devices,自动模型压缩技术)、NAS(Neural architecture search,网络结构搜索)、HAQ(Hardware-Aware Automated Quantization,硬件感知的自动量化)等高阶技术; |
4 | 为了方便开发者分析调试算法,MindSpore Golden Stick规划了一些工具,如可视化工具、逐层分析工具、算法压缩效果分析工具等。 |
上述介绍的第三点和第四点能力当前正在规划中,敬请期待。
统一的算法入口
模型压缩算法种类繁多,不同算法的应用方式往往各不相同,这增加了应用算法的学习成本。
MindSpore Golden Stick对算法应用流程做了梳理和抽象,提供了一套统一的算法应用接口,最大程度缩减算法应用的学习成本,同时这也方便了在各种算法的基础上,做一些高阶技术的探索。
网络重写能力
模型压缩算法往往会针对特定的网络结构做优化,如感知量化算法往往在网络中的Conv2d或者Conv2d + BatchNorm2d结构上插入伪量化节点。
MindSpore Golden Stick提供了基于Pattern修改前端网络的能力,算法开发者可以基于此能力制定通用的改图规则去实现算法逻辑,而不需要对每个特定的网络都实现一遍算法逻辑算法,从而提升算法接入效率。
SimQAT算法
网络量化是一种将浮点计算转成低比特定点计算的技术,可以有效地降低网络计算量、参数大小和内存消耗,但往往带来一些精度损失。
量化即以较低的推理精度损失,将网络中的32位有限范围浮点型(float32)权重或激活近似为有限多个离散值(通常为int8)的过程。
换言之,它是以更少位数的数据类型来近似表示float32数据的过程,而网络的输入输出依然是浮点型,从而达到减少网络尺寸大小、减少网络部署时的内存消耗及加快网络推理速度等目标。
量化相当于给网络引入了噪声,所以量化会损失网络精度,但是神经网络一般对噪声是不太敏感的,只要控制好量化的程度,对高级任务精度影响可以做到很小。量化后的网络相较于原始网络,在网络推理时使用int8运算代替了原有的float32计算,性能能够得到极大的提升。
图.与FP32类型相比,FP16、INT8等低精度数据表达类型所占用空间更小。使用低精度数据表达类型替换高精度数据表达类型,可以大幅降低存储空间和传输时间;而低比特的计算性能也更高,INT8相对比FP32的加速比可达到3倍甚至更高,对于相同的计算,功耗上也有明显优势。
SimQAT(Simulated Quantization Aware Training)算法是一种最基础的量化感知训练算法,在训练时使用伪量化节点来模拟量化计算的损失,并通过反向传播更新网络参数,使得网络参数更好地适应量化带来的损失。具体方案可以参考文献[1]。
效果
当前SimQAT支持int8量化,常用模型的精度数据如下表。
表. 感知量化训练后模型精度
SCOP结构化剪枝,缩减模型功耗50%
原理
神经网络剪枝技术通过去除神经网络中的部分参数来减少参数量和计算量,主要分为非结构化剪枝和结构化剪枝两类。以卷积神经网络(CNN)为例,非结构化剪枝是去除卷积核中的部分权值,尽管它可以实现很高的压缩比,但实际的加速依赖于特殊的硬件设计,难以在通用的Ascend、GPU、CPU平台上获得收益。而结构化剪枝直接去除CNN中完整的卷积核,不破坏网络的拓扑结构,无需特定的软件和硬件适配即可直接实现模型的推理加速。
发现冗余的卷积核是结构化剪枝的关键一步,常用的方法可分为两种:
第一种方法不需要训练数据,通过定义一些卷积核重要性的假设,来判定不同卷积核的重要性。一个典型的假设是范数小的卷积核不重要,砍掉一些范数小的卷积核不会太多地影响网络的表现。
第二种方法是数据驱动的方法,引入训练数据来学习不同卷积核的重要性。比如通过给每个卷积核引入额外的控制系数,学习这些控制系数,来度量不同卷积核的重要性,小的控制系数对应的卷积核被认为不重要。
华为诺亚自研的剪枝方法:SCOP(基于科学控制法的神经网络剪枝)[4]是使用数据驱动的方式来发现冗余的卷积核,通过引入独立同分布的对照特征,进行对照实验来减少各种无关因素对剪枝过程的干扰,提高剪枝结果的可靠性。真实数据(Real data)和高仿数据(Knockoff data)同时输入到网络中,分别生成真实特征和高仿特征。如果一个卷积核对应的高仿特征抑制住了真实特征,则认为这个卷积核是冗余的,应当被删除。
图. 基于科学控制法的神经网络剪枝
效果
对ResNet50网络应用SCOP剪枝,并使用CIFAR-10数据集评估,实验结果如下表所示。可以发现,在当前任务中,与原始模型相比,在剪枝率45%的情况下,SCOP剪枝后的模型大幅降低了模型的参数量,精度损失在0.5%以内。
表. SCOP剪枝算法用于ResNet50的CIFAR-10数据集结果
SLB量化训练,压缩模型8-32倍
原理
传统的量化方法在计算梯度时,通常使用STE(Straight Through Estimator) [1]或者自行设计的梯度计算方式[2]。量化函数的不可微往往会导致计算出来的梯度有误差,从而提供不准确的优化方向,导致最终推理精度比较差。因此,迫切需要一种能规避这种不准确梯度估计的神经网络学习量化方法。
SLB(Searching for low-bit weights) [3]是华为诺亚自研的权重量化算法,提供了一种基于权值搜索的低比特量化算法,能避开不准确的梯度估计。
针对低比特网络量化,由于量化网络权值的有效解数量比较少,因此,对网络的量化可以通过对权值搜索实现,即将量化过程转换成权值搜索的过程。对给定量化网络预设一组量化权值,然后定义一个概率矩阵来表示不同量化权值被保留的概率,在训练阶段通过优化概率矩阵实现网络权重的量化。
图. 传统量化算法vs SLB量化算法
如上图所示,左边图是用传统量化算法做二值量化,训练时用不准确的梯度更新浮点权重,最后对浮点权重做二值化(用sigmoid函数)处理得到量化权重。右边图是用SLB量化算法做二值量化,利用连续松弛策略搜索离散权重,训练时优化离散权重的权值概率矩阵,最后根据概率挑选离散权重实现量化。左边图中红色点对应的单个值是由sigmoid函数得到,表示权重被量化为-1的概率。蓝色点对应的单个值是由sigmoid函数得到,表示权重被量化为+1的概率。传统量化算法中不准确的梯度更新会影响浮点权重的更新,从而导致这里的概率出现较大的偏差。右边图中红蓝相间的点对应的2个值是由softmax函数得到,表示权重被量化为-1或+1的概率。由于避开了不准确的梯度更新,这里的概率会更精准。
在分类任务中,softmax分布通常用于计算输出被分为各个类的概率。SLB也使用softmax分布来计算权重被量化为各个量化权值的概率,并最终根据最大概率挑选对应权值作为量化结果。
为了提高量化结果的置信度,SLB引入了温度因子,通过逐步调整温度因子,能使softmax分布逐渐变得陡峭,慢慢趋近于one-hot分布,从而最大化量化结果的置信度,缩减量化误差。
下面公式左边是标准的softmax函数,右边是SLB算法中引入了温度因子后的softmax函数。
图. 逐步调整温度因子时,softmax分布的变化过程,最右侧是one-hot分布
效果
对ResNet18网络应用SLB量化,并使用CIFAR-10数据集评估,实验结果如下图所示,可以发现,在当前任务中,与全精度模型相比,4bit权重量化后的模型top1精度没有损失,1bit权重量化的精度损失在0.6%以内。SLB量化大幅降低了模型的参数量,使得在资源受限的端侧部署模型变得更加便利。
图. SLB权重量化算法用于量化ResNet18的CIFAR-10数据集结果。W32表示全精度模型,W4,W2,W1分别对应4bit、2bit和1bit权重量化模型。
3
总结与展望
MindSpore Golden Stick是一个模型压缩算法集,同时也是一个平台,统一的算法应用接口和网络定义修改能力希望在算法应用者和算法开发者之间提供一个桥梁,让更多优秀的算法创造商用价值。
在后续版本中,MindSpore Golden Stick一方面会提供更多优秀的算法助力神经网络应用部署在端边侧设备上,如ViT场景下的后量化技术[5]、知识蒸馏技术[6,8]、GhostNet技术[7];另一方面会完善的当前的网络定义修改能力,并大力打磨网络调测能力。欢迎优秀的算法开发者来社区贡献。
MindSpore Golden Stick当前的开源在:
https://gitee.com/mindspore/golden-stick
更多详细的介绍和快速入门资料可以参考文档:
https://www.mindspore.cn/golden_stick/docs/zh-CN/r0.1/index.html
诺亚方舟实验室简介
MindSpore Golden Stick当中的核心算法为华为诺亚方舟实验室自研原创的优秀算法。华为诺亚方舟实验室是华为的AI能力研究中心,立足于人工智能基础算法研究,聚焦打造数据高效和能耗高效的AI引擎。实验室广泛分布于世界各地,在亚洲、欧洲、北美等均设有研发分部。
诺亚的使命是通过在人工智能、数据挖掘及相关领域的持续创新,为公司和社会做出重大贡献。在创新的每一个阶段,基于长期和重大项目驱动,我们追求在AI相关领域打造最先进技术,助力公司提供更好的产品和服务。
作为世界级的实验室,诺亚全力推进AI各领域的前端研发,我们勇于面对人工智能和大数据时代的挑战与机遇,秉承“把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界”这一理念,通过全流程智能化,彻底改进人们工作和生活的方式,以及公司开展业务的模式。
诺亚的研究领域集中在计算视觉、语音和自然语言处理、推荐系统和搜索引擎、决策推理、AI基础理论五大方向,自2012年创立至今,已发展成为一个在学界和业界都取得了重大成就的研究机构。
近期诺亚实验室的一些工作介绍,欢迎大家关注:
1. 业界首篇视觉Transformer综述:
https://mp.weixin.qq.com/s/5-heJB91cKa1Km20rrzN8Q
2. 对话生成模型【盘古Bot】:
https://mp.weixin.qq.com/s/VALSLd3ITz97SurJ9IJawg
3. 高性能代码生成模型【盘古Coder】:
https://mp.weixin.qq.com/s/3l31RYbk7TAIyrHfiFKI-w
4. 诺亚CVPR 2022论文集:
https://mp.weixin.qq.com/s/gpw_k8wLPXK5QScdN_tG0w
https://mp.weixin.qq.com/s/qvHtq2Fw5i9WJwT6ktoBbA
参考资料
[1] Bengio, Yoshua, Nicholas Léonard, and Aaron Courville. Estimating or propagating gradients through stochastic neurons for conditional computation. 2013.
[2] Hanxiao Liu, Karen Simonyan, and Yiming Yang. Darts: Differentiable architecture search. ICLR, 2019.
[3] Yang Z, Wang Y, Han K, et al. Searching for low-bit weights in quantized neural
networks. NIPS, 2020.
[4] Tang, Yehui, et al. "Scop: Scientific control for reliable neural network pruning." NeurIPS 2020: 10936-10947.
[5] Liu, Zhenhua, et al. "Post-training quantization for vision transformer." Advances in Neural Information Processing Systems 34 (2021): 28092-28103.
[6] Xu, Yixing, et al. "Kernel based progressive distillation for adder neural networks." Advances in Neural Information Processing Systems 33 (2020): 12322-12333.
[7] Han, Kai, et al. "Ghostnet: More features from cheap operations." Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2020.
[8] Chen, Hanting, et al. "Data-free learning of student networks." Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。