【pocketflow系列一】整体介绍

官网地址:https://pocketflow.github.io/

 

1、Pocketflow介绍

深度学习模型压缩和加速的开源模型框架

易使用:开发者只需要指定需要的压缩和加速率,然后pocketflow会自动选择合适的超参数来生成压缩模型。

 

2、框架组成

由两部分组成:学习模块和超参数优化模块。

初始模型,经过学习模块后,使用一些随机选择的超参数来产生候选的压缩模型。候选模型的精度和计算效率作为超参数优化模块的输入,来决定下一次学习模块的超参数选择。

经过多次上述迭代,最优的候选模型作为最终输出的压缩模型。

 

(1)学习模块

学习模块是指一些模型压缩方法。pocketflow目前支持的模型压缩算法如下:

剪枝、权重稀疏和量化,通过剪枝mask或者量化函数实现。生成的模型可以通过小数据集进行部分迭代即可快速finetune。也可以通过完整的训练集进行finetune,这样精度更高,但耗时更长。

整体总结如下:

压缩方法

描述

通道剪枝(2种)

2017/2018

权重稀疏

2018

权重量化(3种)

2018/TF/2016

网络蒸馏

为进一步降低精度损失,将压缩前模型的输出作为参考,来指导压缩模型的训练。

多GPU训练

加快训练速度

 

(2)超参数优化模块

压缩算法的超参数很难人工设定,尤其是对于不熟悉算法细节的开发者。Google的Cloud AutoML可以实现很好人工干预的算法训练。2018年的AMC提出一种用于通道剪枝和finetune剪枝的自动模型压缩方法。

Pocketflow介绍一种迭代获取最优超参数的方法。首先提供一些基于GP/TPE/DDPG等模型的超参数优化器,然后通过迭代的方式进行超参数优化。

每一个迭代:

    超参数优化模块选择一些超参数的组合

    学习模块通过快速tune的方式产生一个候选的压缩模型

    候选模型被用来评估当前超参数的选择,超参数模块更新模型,产生更好的超参数

多个迭代后,选出最优模型。

这个模型可以通过使用全部的训练数据训练,从而降低损失。

 

3、表现

列举了剪枝和权重稀疏前后的精度对比,没有说速度。

如下是权重量化的对比结果:

看小模型mobilenet表现,8bit量化前后,精度不仅无损失还有所提高;同时速度提升2倍多。

我这里要做的是对keras的xception进行优化。因此,第一步采用8bit量化。如果能有2倍提升,已经可以初步满足要求了。如果还需要提升速度,再来考虑剪枝和权值稀疏。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值