DEEP COMPRESSION: COMPRESSING DEEP NEURAL NETWORKS WITH PRUNING, TRAINED QUANTIZATION AND HUFFMAN

深度压缩:采用修剪,量子化训练和霍夫曼编码来压缩深度神经网络

学习模型压缩知识,记录此论文(ICLR2016 的 best paper)学习过程。
论文链接: https://arxiv.org/abs/1510.00149
论文Pytorch实现GitHub链接: https://github.com/mightydeveloper/Deep-Compression-PyTorch

ABSTRACT

DNN是计算密集型和内存密集型的模型,使得他们很难应用在硬件资源受限的嵌入式系统中。因此作者提出了采用修剪、量子训练,霍夫曼编码技术进行模型压缩,过程如下:

  • 1.通过网络修剪,只留下重要连接的模型;
  • 2.通过量化权重增加共享权重
  • 3.霍夫曼编码

在1,2步骤之后,我们对网络进行重新训练,以便对剩余的连接和量化的中心点进行微调;修剪减少了9到13倍的连接数,量化减少了连接比特数,从32减少到5。在ImageNet数据集中,AlexNet模型减小了35倍,从240MB减少到6.9MB,精度不损;VGG-16减小了49倍,从552MB减少到11.3MB,精度不损。这允许将模型拟合到片内SRAM缓存而不是片外DRAM内存中。
作者实验表明,深度压缩的三个阶段:剪枝,量化和霍夫曼编码。
剪枝使权值减少了10×,量化进一步提高了压缩率:在27×~ 31×之间。哈夫曼编码提供了更多的压缩:在35×和49×之间。压缩率已经包含用于稀疏表示的元数据。压缩方案不会造成任何精度损失。

1 INTRODUCTION

模型权重等参数消耗了大量内存、带宽要大等弊端,应用在嵌入式设备上,导致的问题:

  • 1.app store限制了APP大小;
  • 2.模型消耗能量大

能量消耗主要由内存访问决定。在45nm CMOS技术下,32位浮点数加法使用0:9pJ, 32位SRAM缓存访问使用5pJ, 32位DRAM内存访问使用640pJ,这是加法操作的3个数量级。大型网络不适合芯片存储,因此需要更昂贵的DRAM访问。例如,运行一个10亿个连接神经网络,速度为20fps,仅DRAM访问就需要(20Hz)(1G)(640pJ) = 12:8W——远远超出了典型移动设备的功率包线

下面开始具体介绍 网络修剪、量化训练和共享权重,霍夫曼编码技术

2 NETWORK PRUNING

网络修剪:

genty
从上图的左边的pruning阶段可以看出,其过程是:

  • 1.从正常训练出的网络中学习连接
  • 2.修剪权重小的连接,小于阈值的都被删掉;
  • 3 重新训练网络,其参数从剩余的稀疏连接中获取;

具体修剪可以参考作者2015的另外一篇论文,后续作者也会拜读论文
效果:

  • Alexnet和VGG-16的参数减少了9-13倍;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值