NVIDIA NIM과 Hugging Face 통합
NVIDIA NIM은 Hugging Face의 100,000개 이상의 대형 언어 모델(LLM)을 빠르게 배포할 수 있도록 단일 통합 Docker 컨테이너를 제공하여 최적화 및 서비스 과정을 자동화합니다. 이 통합은 다양한 추론 프레임워크를 수동으로 관리해야 하는 병목 현상을 제거하고, 다양한 모델 아키텍처에서 최고의 성능을 달성하도록 합니다.
LLM 배포를 위한 통합 추론 마이크로서비스
NVIDIA NIM은 NVIDIA TensorRT-LLM, vLLM, SGLang 등 주요 추론 프레임워크를 통합한 단일 Docker 컨테이너를 제공하여 광범위한 LLM을 배포할 수 있게 합니다. 컨테이너는 모델 가중치 파일을 실행 중인 추론 서버로 전환하는 과정을 네 단계의 적응 단계로 자동화합니다:
- 모델 분석: NIM은 모델 형식을 자동으로 식별하며, Hugging Face 모델, TensorRT-LLM 체크포인트 또는 사전 구축된 TensorRT-LLM 엔진을 지원합니다.
- 아키텍처 및 양자화 감지: 시스템은 모델의 아키텍처(예: Llama, Mistral)와 양자화 형식(예: FP16, FP8, INT4)을 감지합니다.
- 백엔드 선택: NIM은 이전 분석을 기반으로 가장 적합한 추론 백엔드(TensorRT-LLM, vLLM 또는 SGLang)를 선택합니다.
- 성능 설정: 컨테이너는 선택된 모델 및 백엔드에 대한 사전 구성된 설정을 적용하여 수동 튜닝 없이 추론 서버를 시작합니다.
지원되는 모델 가중치 형식
넓은 호환성을 위해 NIM 컨테이너는 여러 일반적인 가중치 형식을 지원합니다:
- Hugging Face Transformers 체크포인트:
.safetensors파일을 사용하여 저장소에서 직접 배포합니다. - GGUF 체크포인트: Hugging Face 또는 로컬 저장소에서 제공되는 양자화된 GGUF 체크포인트를 지원합니다.
- TensorRT-LLM 체크포인트:
trtllm_ckpt디렉터리에 패키징된 모델입니다. - TensorRT-LLM 엔진: 최대 GPU 성능을 위해
trtllm_engine디렉터리에서 사전 구축된 엔진을 사용합니다.
배포 워크플로우 및 구성
NIM을 통해 모델을 배포하려면 CUDA 12.1+ 드라이버가 설치된 NVIDIA GPU, Docker, NVIDIA NGC 계정, 그리고 인증된 모델을 위한 Hugging Face API 토큰이 필요합니다.
모델 배포 예시
사용자는 NIM_MODEL_NAME 환경 변수를 사용하여 Hugging Face에서 직접 모델을 배포할 수 있습니다. 예를 들어, Codestral-22B를 배포하려면 모델 URI hf://mistralai/Codestral-22B-v0.1와 함께 NIM Docker 이미지를 실행하면 됩니다.
로컬에 저장된 모델의 경우, NIM_MODEL_NAME은 로컬 디렉터리 경로를 가리키며, 해당 디렉터리는 Docker 컨테이너에 마운트되어야 합니다.
백엔드 사용자 정의 및 양자화
NIM이 백엔드 선택을 자동화하지만, 사용자는 list-model-profiles 명령을 사용해 호환 가능한 프로파일을 확인한 뒤 NIM_MODEL_PROFILE 환경 변수를 설정하여 백엔드를 수동으로 지정할 수 있습니다.
NIM은 양자화된 모델(AWQ 또는 GGUF 등)의 배포도 간소화합니다. 시스템은 양자화 형식을 자동으로 감지하고 전체 정밀도 모델에 사용되는 동일한 표준 배포 명령을 통해 해당 백엔드를 선택합니다.
고급 성능 튜닝
엔터프라이즈 수준 배포를 위해, NIM은 미세 조정을 위한 환경 변수를 제공합니다:
NIM_MAX_MODEL_LEN: 컨텍스트 길이를 조정합니다.NIM_TENSOR_PARALLEL_SIZE: 대형 모델에 대한 다중 GPU 배포를 활성화합니다. 이를 위해 Docker에--shm-size플래그를 전달하여 다중 GPU 통신을 지원해야 합니다.