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 提供了每种后端的具体代码片段。

学习资源

谁应该考虑使用 NNCF?

  • 在资源受限硬件(边缘、IoT、移动设备)上部署 AI 的工程师。
  • 使用 OpenVINO 工具包并需要在推理前无缝缩小模型的团队。
  • 希望在 PyTorch 中探索量化感知训练或剪枝的研究人员。

以上所有信息均直接来自仓库的 README;未推断任何额外功能。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目