openvinotoolkit/nncf
Neural Network Compression Framework for enhanced OpenVINO™ inference
Neural Network Compression Framework (NNCF)
何であるか – NNCF は、ニューラルネットワークのモデルサイズ削減および推論速度向上を実現する Python ライブラリです。PyTorch、TorchFX、ONNX、OpenVINO で構築されたモデルと連携でき、わずか数行のコードで 事後 または 学習時 の圧縮を適用できます。
主な機能
| カテゴリ | アルゴリズム(README に記載) | 対応バックエンド |
|---|---|---|
| 事後 | • 8ビット量子化 | |
| • 重み圧縮 | ||
| • 活性化スパース性(実験的) | OpenVINO、PyTorch、TorchFX(実験的)、ONNX | |
| 学習時 | • 量子化に配慮した学習(QAT) | |
| • LoRA/NLS を用いた重みのみ QAT | ||
| • 削減(Pruning) | PyTorch のみ | |
| その他の機能 | • 自動グラフ変換、 | |
| • GPU加速層によるファインチューニング、 | ||
| • 分散学習サポート、 | ||
| • HuggingFace-Transformers 用の統合パッチ、 | ||
| • OpenVINO ランタイム用に ONNX、SavedModel、またはフローズングラフへエクスポート |
一般的な利用シーン
- メモリとレイテンシが制限されたエッジデバイスに 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 から直接取得しており、追加機能は推測されていません。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト