NVIDIA/Model-Optimizer
A unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.
NVIDIA Model Optimizer (ModelOpt)
무엇인가요 – NVIDIA에서 제공하는 오픈소스 Python 라이브러리로, 최신 모델 최적화 기술(양자화, 프루닝, NAS, 증류, 사전 추론, 희소성)을 통합하고 Hugging Face, PyTorch, 또는 ONNX 모델에 적용할 수 있는 통합 API를 제공합니다. 출력은 NVIDIA의 배포 스택(TensorRT‑LLM, TensorRT, vLLM, SGLang 등)에서 빠른 추론이 가능한 최적화된 체크포인트입니다.
주요 기능
| 기술 | 기능 | 일반적인 이점 |
|---|---|---|
| 훈련 후 양자화 (PTQ) | 모델 크기 2~4배 감소, 메모리 대역폭과 지연 시간 감소 | 정확도 손실이 거의 없이 빠른 추론 |
| 양자화 인식 훈련 / 증류 (QAT) | 양자화된 모델을 미세 조정하여 정확도 회복 | FP8, NVFP4와 같은 강력한 저정밀도 형식을 유지하면서 품질 유지 |
| 프루닝 | 중요하지 않은 가중치나 전체 채널 제거 | 더 작은 메모리 사용량과 높은 처리량 |
| 증류 | 큰 "선생님" 모델을 모방하는 작은 "학생" 모델 훈련 | 선생님 모델의 대부분 성능을 유지한 배포 가능한 모델 |
| 사전 추론 | 미리 추가 토큰을 예측하는 드래프트 모델 훈련 | LLM의 토큰 생성 지연 시간 감소 |
| 희소성 | 0이 아닌 파라미터와 위치만 저장 | 추가적인 메모리/계산 절약 |
일반적인 워크플로우
- 입력 – Hugging Face, PyTorch, 또는 ONNX 형식의 모델 제공.
- 조합 – Python API(또는 제공된 예제)를 사용해 기술을 연결 (예: 프루닝 → 증류 → QAT → PTQ).
- 내보내기 – TensorRT‑LLM, vLLM, SGLang, 또는 NVIDIA의 Megatron‑Bridge와 같은 하위 런타임에서 직접 로드 가능한 양자화 체크포인트 생성.
설치
# PyPI에서 안정 버전 (모든 선택적 종속성 포함)
pip install -U nvidia-modelopt[all]
개발용 또는 최신 기능 사용 시:
git clone https://github.com/NVIDIA/Model-Optimizer.git
cd Model-Optimizer
pip install -e .[dev]
ModelOpt이 사전 설치된 컨테이너 이미지도 nvcr.io에서 이용 가능합니다.
문서 및 리소스
- 전체 문서: https://nvidia.github.io/Model-Optimizer
- 각 기술의 빠른 시작 튜토리얼은
examples/에 있습니다 (예:hf_ptq,pruning,speculative_decoding). - 인기 있는 LLM/VLM용 사전 양자화 체크포인트는 Hugging Face에 호스팅되어 있습니다 (README의 컬렉션 링크 참조).
- 로드맵, 벤치마크, 변경 내역은 리포지토리에서 링크되어 있습니다.
누가 사용해야 하나요
- NVIDIA GPU에서 대규모 언어 또는 비전 모델을 배포하면서 추가 처리량을 확보하거나 메모리 사용량을 줄이고 싶은 엔지니어.
- 저정밀도 형식(FP8, NVFP4)이나 모델 압축 파이프라인을 실험하는 연구자.
- 이미 NVIDIA의 추론 스택(TensorRT, TensorRT‑LLM, Megatron‑Bridge)을 사용하고 있으며, 모델 준비를 위한 단일 라이브러리를 원하는 팀.
라이선스 – Apache 2.0 (see LICENSE).
인용 – 학술용으로 바로 복사 가능한 BibTeX 항목이 제공됩니다.
위 모든 정보는 리포지토리의 README에서 직접 가져왔으며, 외부 가정은 전혀 추가하지 않았습니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- Dispatch