基本原理
参考论文:https://arxiv.org/abs/1804.03294
GitHub:https://github.com/microsoft/nni/blob/master/nni/algorithms/compression/pytorch/pruning/admm_pruner.py
组合优化问题



交替方向优化求解




- 完成稀疏训练之后,执行Hard prune,再通过Fine-tuning恢复精度;稀疏训练与Fine-tuning过程,约束条件与Loss变化基本如下:

压缩流程控制
- 参考PAI模型压缩工具的使用;
- 在指定训练步数的after_run中,执行压缩action:

实验效果
模型 | 稀疏度 | 方式 | mnn模型容量 (排除MatMul分类层) | 实际压缩比 | FP32精度 | 量化后精度 | ConvDFSMN | - | 原FP32 | 22.375MB | - | WER=10.54 | - | ConvDFSMN | - | 量化 | 5.695MB | 3.929 | WER=10.54 | WER=10.62 | ConvDFSMN | 35% | 稀疏+量化 | 4.886MB | 4.581 | WER=10.84 | WER=10.94 | ConvDFSMN | 50% | 稀疏+量化 | 4.067MB | 5.505 | - | - | ConvDFSMN | 60% | 稀疏+量化 | 3.392MB | 6.601 | WER=11.50 | WER=11.65 |
|