模型压缩技术:剪枝、量化和蒸馏

模型压缩大体上可以分为 5 种:

  • 模型剪枝:即移除对结果作用较小的组件
  • 模型量化:比如将 float32 降到int8
  • 知识蒸馏:将 teacher 的能力蒸馏到 student上,一般 student 会比 teacher 小。我们可以把一个大而深的网络蒸馏到一个小的网络,也可以把集成的网络蒸馏到一个小的网络上。
  • 参数共享:通过共享参数,达到减少网络参数的目的
  • 参数矩阵近似:通过矩阵的低秩分解或其他方法达到降低矩阵参数的目的

许多实验证明,神经网络模型都是过参数化的(over-parameterized),许多参数都是冗余的,恰当的删除这些参数对模型最终的结果几乎没有影响。模型剪枝(model pruning)就是一个很好的例子。神经网络中存在很多数值为零或者数值接近零的权值,合理的去除这些“贡献”很小的权值,再经过对剩余权值的重训练微调,模型可以保持相同的准确率。对于很多神经网络来说,剪枝能够将模型大小压缩10倍以上,这就意味着可以减少10倍以上的模型计算量,结合定制硬件的计算力提升,最终可能达到更高的性能提升

模型剪枝带来的的稀疏性,从计算特征上来看非常的“不规则”,这对计算设备中的数据访问和大规模并行计算非常不友好。例如对GPU来说,我们使用cuSPARSE稀疏矩阵计算库来进行实验时,90%稀疏性(甚至更高)的矩阵的运算时间和一个完全稠密的矩阵运算时间相仿。也就是说,尽管我们知道绝大部分的计算是浪费的(90%稀疏性意味着性能提升的上限是10倍),却不得不忍受“不规则”带来的机器空转和消耗。

通过给神经网络剪枝添加一个“规则”的约束,使得剪枝后的模型更加适合硬件计算,但这种方法通常会牺牲模型的准确率和压缩比。

权值剪枝是一种非常有效的对深度神经网络引入稀疏性的方法。权值剪枝一般使用预先定义好的阈值来指导对权值的剪枝,绝对值小于这个阈值的权重将会被丢弃。完成剪枝后,模型的准确率会有所下降,通过重训练和微调剩余权重可以恢复模型的准确率。这种对每一个独立权值进行剪枝的方法称为细粒度剪枝(fine-grained pruning),这种方法可以在不损失模型准确率的情况下压缩网络模型大小。但是对于硬件计算来说,细粒度剪枝的一个缺点是将权值矩阵变成了不规则的稀疏矩阵,例如图1中最左侧的权值矩阵所示(这里我们以全连接层为例)。稀疏矩阵运算虽然需要更少的绝对计算量,但是不规则的内存访问和计算模式会增加存储访问延迟,破坏计算的并行性。后续的研究工作提出了粗粒度的剪枝方法(coarse-grained pruning),这种方法以block为剪枝对象,用block的平均值或最大值来代表整个block的重要性,例如图1示例中以2,3,4位block size。粗粒度剪枝方法使得权值矩阵更加规则,更加有利于硬件加速,但难以达到和细粒度剪枝相同的模型准确率或稀疏度(即相同稀疏度时,准确率低;相同准确率时,稀疏度低)。因此对于深度神经网络中权值的稀疏性来说,存在模型准确率和硬件加速比的权衡。
图1:不同剪枝方法对应的权值矩阵

“模型优化(压缩)”在实践中非常常见,已成为标准步骤
剪枝和量化混合使用能达到最佳效果


实践中的模型训练与压缩思路

模型压缩步骤

Quantization Comparison

结论: large-sparse models to consistently outperform small-dense models and achieve up to 10x reduction in number of non-zero parameters with minimal loss in accuracy
参考文献:To prune, or not to prune: exploring the efficacy of pruning for model compression

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 深度学习使得很多计算机视觉任务的性能达到了一个前所未有的高度。不过,复杂的模型固然具有更好的性能,但是高额的存储空...
    CodePlayHu阅读 40,380评论 8 55
  • 1.研究背景 对模型预测精度无明显影响 压缩模型的参数数量、深度来降低模型空间复杂度全连接层参数多,模型大小由全连...
    爱吃西瓜的菜鸟阅读 3,188评论 0 2
  • 一、剪枝方法简介 剪枝就是通过去除网络中冗余的channels,filters, neurons, or laye...
    加油11dd23阅读 10,801评论 0 4
  • Learning both Weights and Connections for Efficient Neura...
    海海不想起床阅读 1,153评论 0 0
  • 一、首先,为什么网络模型需要模型压缩? 通常:给定一个精度级别,存在多个达到该精度级别的CNN架构。在同等精度下,...
    不懂不学不问阅读 1,301评论 0 4