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 | ||
| • 프루닝 | 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에서 직접 가져온 것으로, 추가 기능은 추측되지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트