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