分享

【杂谈】当前模型剪枝有哪些可用的开源工具?

 有三AI 2020-11-27

模型剪枝属于模型优化中的重要技术之一,经过了研究人员多年的研究,工业界也开始有一些实践,那么当前有哪些可用的模型剪枝工具呢?

作者&编辑 | 言有三

1 Tensorflow

TensorFlow Model Optimization Toolkit是谷歌官方开源的模型优化技术包,包含了模型剪枝和量化两种API,模型剪枝支持Google提出的一些算法,具体原理可以翻看我们往期文章。

https://github.com/tensorflow/model-optimization

如果想使用该工具包,需要安装tf-nightly or tf-nightly-gpu。不过会有一些环境冲突,所以体验者最好做好环境隔离工作。

2 PaddleSlim

有Google自然也少不了百度,PaddleSlim是百度推出的优化包,被包含在PaddlePaddle中,支持通道均匀模型剪裁、基于敏感度的模型剪裁、基于进化算法的自动模型剪裁三种方式。

https://github.com/PaddlePaddle/models/tree/develop/PaddleSlim

PaddlePaddle框架虽然用的人少,但是技术那是一流领先的,技术宅们不要放过。

3 第三方官方集成包

PocketFlow是腾讯开源的模型优化工具,基于Tensorflow,可以实现通道级别的模型剪枝以及动态模型剪枝。

https://github.com/Tencent/PocketFlow

distiller是Intel基于Pytorch开源的模型优化工具,支持神经元,通道级别的剪枝。

https://github.com/NervanaSystems/distiller

此外微软的NNI也集成了多种剪枝算法,并支持PyTorch,TensorFlow,MXNet,Caffe2等多个开源框架。

https://github.com/microsoft/nni

4 非官方开源的工具

keras-surgeon是一个keras的模型剪枝工具,不得不说keras的用户还是很努力的,比如之前介过的AutoML工具Auto-Keras,该项目支持神经元,通道以及网络层级别的剪枝操作。

https://github.com/BenWhetton/keras-surgeon

Pytorch用户自然也是不甘落后的,下面的工具支持正常剪枝、规整剪枝。

https://github.com/666DZY666/model-compression

5 一些论文的实现

当然还有很多是对已有的模型剪枝算法的实现,下面简单列举其中比较好的。

[1] Learning Efficient Convolutional Networks Through Network Slimming论文实现:https://github.com/yeyun11/pytorch-network-slimming

[2] ThiNet: A Filter Level Pruning Method for Deep Neural Network Compression论文实现:https://github.com/Roll920/ThiNet

6 更多理论学习

如果想要系统性学习模型剪枝相关的理论,可以移步有三AI知识星球 -> 网络结构1000变 -> 模型压缩板块 -> 模型剪枝板块,一些解读案例如下:

总结

网络的稀疏性是一个普遍存在的问题,模型剪枝正是通过不断去除冗余单元从而获得体积更小/速度更快的模型,对于嵌入式设备来说具有很重要的工程意义。

知识星球推荐

有三AI知识星球由言有三维护,内设AI知识汇总,AI书籍,网络结构,看图猜技术,数据集,项目开发,Github推荐,AI1000问八大学习板块。

【杂谈】为什么邀请大家加入硬核知识星球有三AI

转载文章请后台联系

侵权必究

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多