目录
一 简介
1 剪枝和量化
2 NNI
二 安装NNI
三 剪枝
四 量化
将神经网络部署在计算资源匮乏或具有严格延迟要求的设备上的时候,需要先对模型进行压缩处理。模型压缩后,模型大小会变小,在不会显著降低模型性能的情况下,能够加速模型的训练/推理。
模型压缩技术分类:剪枝(Pruning)和量化(Quantization)。
(1) 剪枝方法探索模型权重中的冗余, 并尝试删除/修剪冗余和非关键的权重。
(2) 量化是指通过减少权重表示或激活所需的比特数来压缩模型。
NNI (Neural Network Intelligence) 是一个轻量但强大的自动机器学习工具包,能帮助用户自动地进行特征工程、神经网络架构搜索、超参调优以及模型压缩。
(1)统一的接口来支持 TensorFlow 和 PyTorch。
(2)内置许多流行的剪枝和量化算法。
(3)利用最先进的策略和NNI的自动调整能力,来自动化模型剪枝和量化过程。
(4)加速模型,使其有更低的推理延迟。
(5)提供友好和易于使用的压缩工具,让用户深入到压缩过程和结果。
压缩流程:
注意:
NNI的pruner或quantizer并不能改变网络结构,只能模拟压缩的效果。 真正能够压缩模型、改变网络结构、降低推理延迟的是NNI的加速工具。
为了获得一个真正的压缩的模型,用户需要执行剪枝加速or量化加速。
PyTorch和TensorFlow的接口都是统一的。目前支持PyTorch版本。
NNI修剪模型:
NNI 依赖于 Python 3.7 或以上版本。
使用 pip 进行安装:
pip install nni
升级已安装的旧版本 NNI:
pip install --latest nni
检查nni版本:
nnictl --version
报错:bash: nnictl: command not found
解决方法: 将 pip 安装的可执行文件添加到 PATH 环境变量。
命令如下:
echo 'export PATH=${PATH}:${HOME}/.local/bin' >> ~/.bashrc
source ~/.bashrc
安装额外依赖:
安装指定 nni[算法名] 依赖,举例:
pip install nni[DNGO]
一次性安装所有可选依赖:
pip install nni[all]
注意:SMAC 算法依赖于 swig3,在 Ubuntu 系统中需要手动进行降级:
sudo apt install swig3.0
sudo rm /usr/bin/swig
sudo ln -s swig3.0 /usr/bin/swig
模型剪枝Quickstart:
https://nni.readthedocs.io/zh/stable/tutorials/pruning_quick_start_mnist.html
模型量化Quickstart:
https://nni.readthedocs.io/zh/stable/tutorials/quantization_quick_start_mnist.html
参考:https://nni.readthedocs.io/zh/stable/compression/overview.html
仅作为学习用途,如有侵权,请联系作者删除。