根源:百度飞桨

主动模子压缩与架构搜寻,这是飞桨PaddleSlim最全的解读

剪枝、量化到轻量级神经收集架构搜寻与主动模子压缩,越来越强大的飞桨 PaddleSlim 曾经模子瘦身供应了一系列高效东西。

近年来,深度进修技能许众偏向都取得了庞大的成功,但因为深度神经收集盘算繁杂度高,模子参数量大,限制了其少许场景和配备上举行安排,特别是挪动嵌入式配备的安排。于是,模子小型化技能成为近来几年学术界和工业界研讨的热门,模子小型化技能也葱☆开端的收集剪枝、常识蒸馏、参数量化等开展为最新的神经收集架构搜寻(NAS)和主动模子压缩等技能。

飞桨中心框架 Paddle Fluid v1.5 版本,PaddleSlim 也发布了最新升级,新增支撑基于模拟退火的主动剪切计谋和轻量级模子构造主动搜寻功用(Light-NAS)。

PaddleSlim 简介

PaddleSlim 是百度飞桨 (PaddlePaddle) 联合视觉技能部发布的模子压缩东西库,除了支撑古板的收集剪枝参数量化和常识蒸馏等方法外,还支撑最新的神经收集构造搜寻和主动模子压缩技能。

PaddleSlim 东西库的特性

接口简单

  • 以配备文献方法汇合办理可配参数,便当实行办理

  • 一般模子教练脚本上,添加极少代码即可完毕模子压缩

效果好

  • 关于冗余新闻较少的 MobileNetV1 和 MobileNetV2 模子,卷积核剪切东西和主动收集构造搜寻东西仍然可缩减模子大小,并保持尽量少的精度耗损。

  • 蒸馏压缩计谋可分明晋升原始模子的精度。

  • 量化教练与蒸馏的组合运用,可同时做到缩减模子大小和晋升模子精度。

  • 收集构造搜寻东西比较于古板 RL 方法提速几十倍。

功用更强更灵敏

  • 剪切压缩进程主动化

  • 剪切压缩计谋支撑更众收集构造

  • 蒸馏支撑众种方法,用户可自定义组合 loss

  • 支撑疾速配备众种压缩计谋组合运用

PaddleSlim 东西库的功用列外

模子剪裁

  • 支撑通道平均模子剪裁(uniform pruning)、基于敏锐度的模子剪裁、基于进化算法的主动模子剪裁三种方法

  • 支撑 VGG、ResNet、MobileNet 等各品种型的收集

  • 支撑用户自定义剪裁范围

量化教练

  • 支撑动态和静态两种量化教练方法


    • 动态计谋: 推理进程中,动态统计激活的量化参数

    • 静态计谋: 推理进程中,对差别的输入,采用相同的从教练数据中统计取得的量化参数

  • 支撑对权重全部量化和 Channel-Wise 量化

  • 支撑以兼容 Paddle Mobile 的样式保管模子

蒸馏

  • 支撑 teacher 收集和 student 收集恣意层添夹¢合 loss


    • 支撑 FSP loss

    • 支撑 L2 loss

    • 支撑 softmax with cross-entropy loss

轻量级神经收集构造主动搜寻

  • 支撑百度自研的基于模拟退火的轻量模子构造主动搜寻 Light-NAS

主动模子压缩

  • 支撑基于模拟退火主动收集剪枝

其它功用

  • 支撑配备文献办理压缩义务超参数

  • 支撑众种压缩计谋组合运用

PaddleSlim 运用效果

经典压缩 Benchmark

Light-NAS Benchmark

Light-NAS 百度营业运用效果

轻量级模子搜寻详解

1、主动收集构造搜寻

收集构造的优劣对最终模子的效果有十分主要的影响,高效的收集构造可以可以用较少的盘算量取得较高的精度收益,比如 MobileNet,ShuffleNet 等,但手工计划收集需求十分丰厚的体验和浩繁实验,而且浩繁的超参数和收集构造参数会发生爆炸性的组合,常规的 random search 确实不可行,于是近来几年神经收集架构搜寻技能(Neural Architecture Search)成为研讨热门。

区别于古板 NAS,我们笃志搜寻精度高而且速率速的模子构造,我们将该功用统称为 Light-NAS。收集构造搜寻要害的几个因素一般包罗搜寻计谋、搜寻目标评估方法、搜寻空间定义和搜寻速率优化。

  • 搜寻计谋

搜寻计谋定义了运用怎样的算法可以疾速、准确找到最优的收集构造参数配备。常睹的搜寻方法包罗:深化进修、贝叶斯优化、进化算法、基于梯度的算法等。

早期的 NAS 方法中,深化进修运用的比较众。深化进修(Reinforcement learning,简称 RL)是板滞进修中的一个范畴,夸张怎样基于状况而举动,以取得最大化的预期长处。深化进修是一种十分成心思的范式,确实只消可以提炼出深化进修四因素,原题目就可以用深化进修来求解。

论文「NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING」将架构的生成看成是一个 agent 挑选 action,reward 是通过教练集上教练必定的 epochs 后的精度。精细的完成进程中,用 RNN 举措掌握器来外示计谋函数,每次通过 RNN 生成一串编码,通过一个映照函数将编码映照成收集构造,并运用 policy gradient 来优化 RNN 掌握器的参数,如图 1 所示。

图 1

深化进修计谋盘算繁杂度高、耗时长,于是 PaddleSlim 选用了经典的组合优化计谋模拟退火。模拟退火算法根源于固体退火原理,将固体加温至充沛高,再让其冉冉冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而冉冉冷却时粒子渐趋有序,每个温度都抵达均衡态,着末常温时抵达基态,内能减为最小。鉴于物理中固体物质的退火过扯蓦一般组合优化题目之间的相似性,我们将其用于收集构造的搜寻。

PaddleSlim 的 NAS 义务中,采用了百度自研的基于模拟退火的搜寻计谋,区别于 RL 每次从头生成一个完备的收集,我们将收集构造映照成一段编码,第一次随机初始化,然后每次随机改正编码中的一部分(对应于收集构造的一部分)生成一个新的编码,然后将这个编码再映照回收集构造,通过教练集上教练必定的 epochs 后的精度以及收集延时交融取得 reward,来指点退火算法的收敛,如图 2 所示。

图 2

  • 搜寻目标评估方法

比较一般的收集搜寻技能,模子小型化偏向,不光要思索模子的精度,同时要思索模子的运转服从,论文「MnasNet」同时将模子的精度以及手机上运转的时间加权盘算举措最终的 reward。

因为每次手机上运转收集取得延时操作十分繁琐而且耗时,论文「ChamNet」提出将收集构造拆解成若干可穷举的 OP,手机上运转每个 OP 取得延时并修立一个查找外 LUT,如许每次只需求通过查外并累加各个 OP 的时间就可以疾速取得模子全体的运转耗时。PaddleSlim 也正举行相关功用研发,即将开源,敬请等候。

  • 搜寻空间定义

搜寻空间定义了优化题目的变量,变量范围决议了搜寻算法的难度和搜寻时间。于是为了加速搜寻速率,定义一个合理的搜寻空间至关主要,早期的 NAS 因为没有限制搜寻空间,以致需求运用 800 块 GPU 教练一个月才干收敛。

为了加速收敛速率,论文「Learning Transferable Architectures for Scalable Image Recognition」将收集拆分为众个 Normall Cell 和 Reduction Cell,只搜寻这两个子模块中的拓扑构造,然后人工堆叠成最终的收集构造,如图 3 所示。

图 3

模子小型化偏向,为了使搜寻到的构造尽量高效,PaddleSlim 参考了 MobileNetV2 中的 Linear Bottlenecks 和 Inverted residuals 构造,搜寻每一个 Inverted residuals 中的精细参数,包罗 kernelsize、channel 扩张倍数、重复次数、channels number,如图 4 所示。

图 4

  • 搜寻速率优化

着末搜寻速率优化方面,为了淘汰采样的收集教练时间,一般采用提前终止的计谋,只教练少量 epochs 数取得其验证集上的精度举措 reward。

最新的少许作品思索运用参数共享的方案,如论文「Efficient Neural Architecture Search via Parameter Sharing」共享 OP 的参数,而举行拓扑构造的搜寻,另外论文「Darts: Differentiable architecture search」基于可微分搜寻空间的方案也能加速搜寻速率,如图 5,不过其无法搜寻 channel 数目,这关于高效的收集构造计划有比较大的限制。PaddleSlim 也正做这个偏向的探究。

图 5

2、主动模子压缩

主动模子压缩比较 NAS 而言,不是一个从无到有的进程,而是一个已有的模子(教练好的)根底上举行压缩裁剪,包管精度的同时,疾速取得一个更速、更小的模子。目前古板的剪枝、量化、蒸馏这些人工压缩方法,一方面需求运用者了解算法原理和完成细节,另一方面运用时有大宗繁琐的调参义务,特别是关于模子剪枝,差别义务的最优参数差别很大,于是,怎样用板滞替代人工,主动搜寻出最适宜的参数变得十分主要。

浩繁的压缩加速方法中,通道剪枝曾经被标明十分有用,并实行营业中广泛运用。通道剪枝压缩后模子不光大小上有收益,而且不需求依赖特别的预测库就能加速,但因为神经收集中差别层的允余程度差别,而且差别层之间保管互相依赖联系,怎样确定每一层的压缩率变得十分艰难,论文「AMC: AutoML for Model Compression and Acceleration on Mobile Devices」提出运用深化进修搜寻每一层最优的剪枝比例。

搜寻计谋采用 actor-critic 架构的 DDPG 算法,从收集的第一层开端,Actor 收集输入每层的相关参数(input_size、kernel_size、filter_num、stride、flops 等),输出一个(0~0.8)延续值,外示这层的剪枝率,直到模子的着末一层,然后依据输出的压缩率对收集举行裁剪,并将裁剪后的模子 validation set 上测试取得裁剪后的收集精度举措 reward 来指点 ddpg 收敛,全体的流程如图 6。

图 6

PaddleSlim 基于模拟退火算法完成了相似的功用,搜素速率有分明的晋升。精细的完成方法中,我们将收集的压缩率编码成一个向量,向量中每一维外示某一层的压缩率(取值范围为 0~0.8),初始形态下,随机生成一个向量,然后用向量中的压缩率裁剪通通收集,和用深化进修相同,我们将裁剪后的收集 validation set 上测试取得裁剪后的收集精度,并运用的延时评估器获取裁剪后网道的速率,将延时和精度交融后取得最终的 reward。

每次完毕后,我们会随机改动向量中某一维(也可以是众维),取得收集一个新的裁剪率,依据这个新的向量裁剪收集并获取 reward,依据目今 reward 和前一个形态的 reward 的联系来指点退火算法收敛。

剪枝相似,参数量化偏向,论文「HAQ: Hardware-Aware Automated Quantization」搜寻出每层最优量化位宽已抵达最佳的全体量化收益。全体框架和搜寻剪枝的相似,如图 7 所示。

图 7

未来 PaddleSlim 也将支撑相似的功用。

经典模子压缩技能详解

PaddleSlim 除了支撑新增的基于模拟退火的主动剪切计谋和轻量级模子构造主动搜寻功用(Light-NAS)以外,之前的版本中曾经支撑了经典的模子压缩技能,如收集剪枝参数量化和模子蒸馏等。

一. 剪枝

收集剪枝是将教练好的模子中的允余参数去掉,抵达减小模子参数量和盘算量的目标。浩繁剪枝方法中,可以依据被裁剪的参数是否具有构造化的新闻分为细粒度剪枝和构造化剪枝两类。

1、细粒度剪枝

细粒度剪枝主要用于压缩模子的大小,比较出名的是韩松论文【Deep Compression:Compressing Deep NeuralNetworks with Pruning, Trained Quantization and Huffman Coding】中提出的方法,主要包罗剪枝、量化和哈弗曼编码三个方法。

其精细的思念是认为收集中权值越接近 0 的神经元对收集的奉献越小,剪枝的进程便是对每一层神经元的权重按照绝对值排序,按必定的比例裁剪掉最小的一部分,使得这些神经元不激活,为了包管剪枝后收集的精度耗损尽量小,每次裁剪后都会对保管的非零权重举行 fine-tuning,最终能将模子大小减小 9~13 倍。

为了进一步压缩模子大小,关于剪枝后希罕的神经元,通过量化编码,将延续的权值离散化,从而用更少比特数来存储浮点权值,如图 8 所示。着末再通过霍夫曼编码进一步压缩模子大小,最终可以不耗损精度的状况下将模子大小压缩 35 到 49 倍。

细粒度剪枝虽然能抵达较高的压缩比,但希罕的权值没有构造化的新闻,假如不依赖特定预测库或硬件的优化,模子实行运转中并不行加速,而且占用的内存也和未压缩前相同。以是细粒度的剪枝方法目前运用的比较照较少,于是 PaddleSlim 中暂未支撑。

图 8

2、构造化剪枝

比较细粒度剪枝随机地裁剪掉收集中的若干的神经元,构造化剪枝以必定的构造为单位举行剪枝,如裁剪掉卷积层中若干 filter,如图 9 所示。裁剪后的模子比较原始模子,只是 channel 数目减小,不需求分外的预测库支撑就能抵达加速的目标,于是构造化剪枝是目前运用较众,也是 PaddleSlim 中支撑的剪枝方案。

图 9

剪枝的进程中,怎样确定每层的最优剪枝比例和精细要裁剪的 filter,来抵达通通模子的最优压缩比是该方法中要办理的题目,关于挑选哪些 filter 举行裁剪,常规的方案和细粒度剪枝相似,对差别 filter 的参数盘算了 l1_norm,挑选值较小的 filter 举行裁剪。

关于每层裁剪的比例,常规的方法是收集中所有层运用同样的比例,没有思索到模子中差别层参数允余程度的差别性。

论文【Pruning Filters for Efficient ConvNets】提出了一种基于敏锐度的剪枝计谋,通过差别层对剪枝的敏锐度来决议裁剪比例,每层敏锐度的盘算方法是运用差别裁剪比例对该层举行剪枝,评估剪枝后模子验证集上的精度耗损大小,关于剪枝比例越大,但精度耗损越小的层,认为其敏锐度越低,可以举行较大比例的裁剪,如图 9 所示。

因为每次剪枝完验证集上举行评估的开销比较大,该方法盘算敏锐度时每次只对此中的一层举行剪枝,没有思索赴任别层之间的相关性,以是实行的敏锐度并欠好坏常准确。

图 10

二、量化

许众嵌入式芯片中都计划有种种位宽的乘法器,将神经收集中 32 位的全精度数据处理成 8 位或 16 位的定点数,同时联合硬件指定的乘法例则,就可以完成低内存带宽、低功耗、低盘算资源占用以及低模子存储需求等。

1、8bit 量化

图 11

低精度定点数操作的硬件面积大小及能耗比高精度浮点数要少几个数目级,如图 11 所示。运用 8bit 定点量化可带来 4 倍的模子压缩、4 倍的内存带宽晋升,以及更高效的 cache 应用 (许众硬件配备,内存拜访是主要能耗)。除此除外,盘算速率也一般具有 2~3 倍的晋升。另外许众场景下,定点量化操作对精度并不会变成耗损。

目前量化方法主要分为两大类:Post Training Quantization 和 Quantization Aware Training。Post Training Quantization 是唆运用 KL 散度、滑动平均等方法确定量化参数,量化进程不需求从头教练。

Quantization Aware Training 是对量化后的模子举行 fine-tuning,通过量化模子发生的梯度更新模子参数,以恢复因为量化而变成的精度耗损,它与 Post Training Quantization 方式比较可以供应更高的预测精度。PaddleSlim 完成了 Quantization Aware Training 量化方法。

2、二值神经收集

为了进一步压缩收集的盘算量, 8bit 量化的根底上,论文「Binaryconnect: Training deep neural networks with binary weights during propagations」和「BinaryNet: Training Deep Neural Networks with Weights and Activations Constrained to +1 or −1」区分提出了二值权重收集和二值神经收集的看法。

二值权重收集是将收集的权重量化成+1、-1 两个数,对预测进程中的激活值不做量化。如许一方面权重可以用更低的比特数(1bit)来存储抵达压缩模子大小的目标,另一方面,本来收集盘算中的浮点运算可以被加法替代抵达加速的目标。

因为盘算机底层硬件完成两个 n 位宽数据的乘法运算时必需完毕 2*n 位宽度的逻辑单位处理,而同样数据施行加法时只需求 n 个位宽的逻辑单位处理,于是表面上可以取得 2 倍的加速比。

二值神经收集是二值权重收集的根底上对收集中心激活值也举行二值量化,如许收集中所有的到场运算的数据都量化成了+1、-1 两个数,权重值和激活值都举行二值化之后,本来 32 位浮点型数的乘加运算,可以通过一次异或运算和一次 popcnt(population count 统计有众少个为 1 的位) 运算办理,极大地压缩了盘算量,从而抵达加速的目标。

不过通过大宗实行外明,二值权重收集和二值神经收集的顺应性还不是很强,许众义务上都有较大的精度耗损,且对硬件和预测库的优化请求比较高,于是这些方法目前还不是很普及,以是 PaddleSlim 暂未支撑。

四、常识蒸馏

一般状况下,模子参数量越众,构造越繁杂,其功用越好,但参数也越允余,运算量和资源消耗也越大;常识蒸馏是将繁杂收集中的有用新闻提取出来,迁移到一个更小的收集中去,以抵达模子压缩的效果。

1、古板方案

常识蒸馏最早由 Hinton 2015 年提出,中心绪念是用一个或众个教练好的 teacher(大模子)指点 student(小模子)举行教练,论文「Distilling the Knowledge in a Neural Network」中,关于分类义务要进修的目标,将图片实行的种别概率新闻称为 hard target(只要实种别对应的概率为 1,其他为 0),而模子输出的种别概率新闻称为 soft target(各个种别概率都为一个大于 0 的值)。

因为种别之间具有相关性,soft target 比较 hard target 具有更高的新闻熵,比如一张猫的图片, soft target 中,其分到狗的概率一般会大于分到汽车的概率,而不是 hard target 中将它们都修立为 0,导致没有区别。

运用大模子发生 soft target 替代 hard target 能取得更众的新闻和更小的梯度方差,可以抵达更好的功用。一般模子蒸馏的流程如下,先训好一个大模子,让后让小模子去拟合大模子发生的 soft target,蒸馏完毕后,一般还会运用实的 label 新闻举行 fine-tuning,如图 12 所示。

图 12

另外,为了使 soft target 中各个种另外概率值更加腻滑,作品中还引入了一个温度系数 T 的看法,对大模子输出的概率值做一个腻滑处理,精细如下面公式。

T 一般被修立成一个大于 1 的数,值越大输出的概率值越腻滑。

2、fsp 方案

比较古板的蒸馏方法直接用小模子去拟合大模子发生的 soft target,论文「A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learning」用小模子去拟合大模子差别层特征之间的转换联系(flow of the solution procedure),其用一个 FSP 矩阵(特征的内积)来外示差别层特征之间的联系,盘算公式如下:

大模子和小模子差别层之间区分取得众个 FSP 矩阵,关于 Resnet 收集构造,每个 stage 可发生一个 FSP 矩阵,然后运用 L2 loss 让小模子的对应层 FSP 矩阵和大模子对应层的 FSP 矩阵尽量同等。

通通进程如图 13 所示。

图 13

这种方法的优势,高深的标明是,比如将蒸馏类比成 teacher(大模子)教 student(小模子)办理一个题目,古板的蒸馏是直接告诉小模子题目的谜底,让小模子进修,而进修 FSP 矩阵是让小模子进修办理题目的中心进程和方法,于是其学到的新闻更众,最终效果也更好。

  • 项目地址:https://github.com/PaddlePaddle/models/tree/v1.5/PaddleSlim?fr=jqzx

下载最新版本的Paddle Fluid v1.5,请查看以下链接:http://www.paddlepaddle.org.cn?fr=jqzx

ps:着末给大师引荐一个GPU福利-Tesla V100免费算力!配合PaddleHub能让模子原地起飞~扫码系澜二维码申请~

工程模子压缩PaddlePaddle百度大脑
1
相关数据
参数技能

数学和统计学裡,参数(英语:parameter)是运用通用变量来修立函数和变量之间联系(岛镶种联系很难用方程来阐述时)的一个数目。

剪枝技能

剪枝顾名思义,便是删去少许不主要的节点,来减小盘算或搜寻的繁杂度。剪枝许众算法中都有很好的运用,如:计划树,神经收集,搜寻算法,数据库的计划等。计划树和神经收集中,剪枝可以有用缓解过拟合题目并减小盘算繁杂度;搜寻算法中,可以减小搜寻范围,进步搜寻服从。

霍夫曼编码技能

霍夫曼编码(Huffman Coding)是一种编码方法,是一种用于无损数据压缩的熵编码(权编码)算法。 霍夫曼编码(英语:Huffman Coding),又译为哈夫曼编码、赫夫曼编码,是一种用于无损数据压缩的熵编码(权编码)算法。由大卫·霍夫曼1952年发明。 盘算机数据处理中,霍夫曼编码运用变长编码外对源符号(如文献中的一个字母)举行编码,此中变长编码外是通过一种评估根源符号呈现机率的方法取得的,呈现机率高的字母运用较短的编码,反之呈现机率低的则运用较长的编码,这便使编码之后的字符串的平均长度、希冀值低沉,从而抵达无损压缩数据的目标。

模拟退火算法技能

模拟退火是一种通用概率算法,用来固定时间内寻求一个大的征采空间内找到的最优解。模拟退火是S. Kirkpatrick, C. D. Gelatt和M. P. Vecchi1983年所发明。而V. ern1985年也独立发明此算法。

暂无评论
暂无评论~