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;未推斷任何額外功能。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案