openvinotoolkit/nncf
Neural Network Compression Framework for enhanced OpenVINO™ inference
神经网络压缩框架(NNCF)
是什么 – NNCF 是一个 Python 库,为神经网络添加模型尺寸缩减和推理加速技术。它支持使用 PyTorch、TorchFX、ONNX 和 OpenVINO 构建的模型,仅需几行代码即可应用 事后 或 训练时 的压缩。
核心功能
| 类别 | 算法(如 README 所列) | 支持的后端 |
|---|---|---|
| 事后 | • 8 位量化 | |
| • 权重压缩 | ||
| • 激活稀疏性(实验性) | OpenVINO、PyTorch、TorchFX(实验性)、ONNX | |
| 训练时 | • 量化感知训练(QAT) | |
| • 仅权重 QAT(支持 LoRA/NLS) | ||
| • 剪枝 | 仅支持 PyTorch | |
| 其他功能 | • 自动图变换, | |
| • GPU 加速层用于微调, | ||
| • 分布式训练支持, | ||
| • HuggingFace-Transformers 的集成补丁, | ||
| • 导出为 ONNX、SavedModel 或冻结图以供 OpenVINO 运行时使用 |
典型应用场景
- 在内存和延迟受限的边缘设备上部署 PyTorch 或 ONNX 模型。
- 在保持可接受精度的前提下,减小大型语言模型(如 BERT、LLM)的尺寸。
- 为 OpenVINO 推理引擎准备模型,尤其适用于 CPU、GPU 或 VPU。
- 希望在不编写底层代码的情况下,实验剪枝或量化感知训练的研究人员。
快速入门
# 从 PyPI 安装(需要 Python 3.10+)
pip install nncf
如需最新开发版本,也可从源码构建。
基本工作流程(事后量化示例)
import nncf, torch, openvino as ov
from torchvision import datasets, transforms
# 1️⃣ 加载模型(OpenVINO、PyTorch、TorchFX 或 ONNX)
model = ov.Core().read_model("/model_path") # OpenVINO 示例
# 2️⃣ 准备一个小的校准数据集(约 300 个样本)
val_ds = datasets.ImageFolder("/path", transform=transforms.Compose([transforms.ToTensor()]))
loader = torch.utils.data.DataLoader(val_ds, batch_size=1)
# 3️⃣ 将加载器包装为 NNCF Dataset
calib = nncf.Dataset(loader, lambda d: d[0])
# 4️⃣ 运行量化流程
quantized = nncf.quantize(model, calib)
该模式适用于 PyTorch、TorchFX 和 ONNX 后端;README 提供了每种后端的具体代码片段。
学习资源
- 官方文档 – https://docs.openvino.ai/nncf(完整用户指南、API 参考和算法详情)。
- 模型库 – 经过压缩并报告结果的模型列表:
docs/ModelZoo.md。 - Jupyter 笔记本 – 可运行的教程,涵盖 BERT 量化、分割模型、YOLOv11、LLM 权重压缩等(详见 Demos, Tutorials and Samples 部分链接)。
- API 参考 – https://openvinotoolkit.github.io/nncf/autoapi/nncf/(自动生成的类和函数文档)。
谁应该考虑使用 NNCF?
- 在资源受限硬件(边缘、IoT、移动设备)上部署 AI 的工程师。
- 使用 OpenVINO 工具包并需要在推理前无缝缩小模型的团队。
- 希望在 PyTorch 中探索量化感知训练或剪枝的研究人员。
以上所有信息均直接来自仓库的 README;未推断任何额外功能。
相关
- 项目
- 项目
- 项目
- 项目
- 项目