모델 추론 성능 최적화 - 100-hours-a-week/6-nemo-wiki GitHub Wiki

📘 모델 추론 성능 최적화 – 개요

성능별 최적화 페이지

목적 (Why)

모델이 아무리 정교하고 정확하더라도, 실제 서비스 환경에서 느린 응답 시간이나 높은 자원 소모는 사용자 경험을 해치고 서비스 확장에 큰 제약이 됩니다.
따라서 모델 추론 성능 최적화는 다음과 같은 이유로 필수적인 설계 요소입니다:

  • 지연(latency) 최소화 → 사용자 체감 속도 개선
  • 자원 사용 효율화 → 서버 비용 절감
  • 처리량(throughput) 증가 → 동시 사용자 확장성 확보
  • 모델 대체 및 배포 전략 설계 기반 제공

주요 개념

  • 추론 성능(Inference Performance): 하나의 요청을 처리하는 데 걸리는 시간 및 필요한 메모리/연산 자원의 효율성
  • 최적화(Optimization): 동일 모델 구조를 유지하거나, 최소한의 성능 저하로 리소스/속도를 개선하는 작업

주요 병목 요소 예시

요소 설명
모델 크기 파라미터 수가 많을수록 메모리, 연산 부하 증가
토크나이저 속도 입력을 처리하는 사전 단계에서의 병목 발생 가능
context 길이 증가 반복 추론 시 매번 전체 입력 재연산 발생
I/O 및 캐시 부재 디스크 → 메모리, GPU 이동 시 병목 발생

최적화 기법 분류

1. 모델 구조 최적화

  • LoRA / QLoRA: 파라미터 일부만 미세조정
  • Quantization (4bit, 8bit): weight/activation 정수 변환
  • Distillation: 대형 모델 지식을 소형 모델로 전이
  • Pruning: 중요도 낮은 weight 제거

2. 실행 프레임워크 최적화

  • ONNX / TensorRT / GGUF: 플랫폼별 고속 런타임
  • llama.cpp / bitsandbytes: 경량 추론용 프레임워크
  • BetterTransformer: HuggingFace 기반 가속화

3. 운영 구조 최적화

  • Batching: 여러 요청을 묶어 한 번에 처리
  • Prompt Caching / Token Preloading
  • Streaming Output: 한 토큰씩 출력하여 체감 응답 속도 향상

버전별 최적화 전략 연결

버전 추론 환경 주요 기법
V1 Gemini API Prompt 압축, 응답 캐싱
V2-V3 로컬(CPU 중심), Colab T4 실험 LoRA, 4bit 양자화, llama.cpp

작성 시 포함되어야 할 항목

  • 기존 모델 성능 지표 (지연 시간, 처리량, 자원)
  • 병목 원인 식별 및 분석
  • 적용 기법과 그 이유 (서비스 환경 맥락과 함께)
  • 최적화 전후 수치 비교 및 개선 정도