모델 추론 성능 최적화 - 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 |
작성 시 포함되어야 할 항목
- 기존 모델 성능 지표 (지연 시간, 처리량, 자원)
- 병목 원인 식별 및 분석
- 적용 기법과 그 이유 (서비스 환경 맥락과 함께)
- 최적화 전후 수치 비교 및 개선 정도