Neural Network Compression Framework (NNCF) 项目简介
项目概述
NNCF,即神经网络压缩框架,致力于为神经网络推理的优化提供一整套的后训练和训练时算法,是OpenVINO工具包的一部分。该框架旨在通过最小化准确率下降,优化使用OpenVINO的神经网络模型的推理能力。NNCF可以与PyTorch、TorchFX、TensorFlow、ONNX以及OpenVINO的模型兼容。
NNCF不仅可独立使用,也可以作为Python包构建使用,帮助开发者更方便地为PyTorch和TensorFlow深度学习框架添加不同的压缩算法。
关键特性
后训练压缩算法
- 后训练量化(支持OpenVINO、PyTorch、TorchFX、TensorFlow和ONNX)
- 权重压缩(支持OpenVINO和PyTorch)
- 激活稀疏性(实验性支持TorchFX)
训练时压缩算法
- 量化感知训练(支持PyTorch和TensorFlow)
- 混合精度量化(支持PyTorch)
- 稀疏性(支持PyTorch和TensorFlow)
- 过滤器剪枝(支持PyTorch和TensorFlow)
- 移动剪枝(实验性支持PyTorch)
其他亮点特性:
- 自动且可配置的模型结构转换以获得压缩后的模型。
- 提供统一的压缩接口。
- 支持GPU加速层以加速压缩模型的微调。
- 支持分布式训练。
- 提供第三方集成示例(如与huggingface-transformers的集成)。
- 能够将PyTorch压缩模型导出为ONNX格式,并将TensorFlow压缩模型导出为SavedModel或Frozen Graph格式,从而便于与OpenVINO工具包结合使用。
安装指南
NNCF可通过PyPI包管理器安装:
pip install nncf
也可以通过conda安装:
conda install -c conda-forge nncf
系统要求包括:Ubuntu 18.04或更高版本,Python 3.9或更高版本,并支持特定版本的PyTorch、TensorFlow、ONNX和OpenVINO。
使用方法
后训练量化
通过NNCF,最简单的后训练量化可在拥有300个样本的小数据集的帮助下应用于模型。OpenVINO是运行后训练量化的首选后端,PyTorch、TensorFlow和ONNX也均支持这种量化方式。
训练时量化
NNCF支持训练时的量化,该模式下模型的权重和压缩参数可被微调以达到更高的准确性。
示例与样本
NNCF提供了多个示例和演示,包括针对不同任务和领域的Jupyter Notebook教程和压缩示例。这些教程帮助快速上手使用NNCF压缩算法优化模型。不同领域如图像分类、对象检测、NLP等都有相关演示。
第三方集成
NNCF能够轻松集成到第三方的训练和评估流程中,例如OpenVINO Training Extensions及HuggingFace Optimum Intel等。
模型动物园
NNCF的开放模型动物园页面提供了各种经过压缩优化的模型以及它们的性能指标,供使用和参考。
通过NNCF,开发者能够更高效且更灵活地优化神经网络模型的性能,在不大幅降低准确度的前提下实现连接性和运行速度的双赢。