【杂谈】当前模型剪枝有哪些可用的开源工具?
模型剪枝属于模型优化中的重要技术之一,经过了研究人员多年的研究,工业界也开始有一些实践,那么当前有哪些可用的模型剪枝工具呢?
作者&编辑 | 言有三
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问八大学习板块。
转载文章请后台联系
侵权必究