모델 선정 및 최적화 - 100-hours-a-week/6-nemo-wiki GitHub Wiki

Gemini api (MVP)

gemini-2.0-flash

  • 응답 속도가 매우 빠르고, 비용 효율성이 뛰어나 초기 사용자 검증에 적합
  • 프롬프트 압축: 입력 프롬프트 길이를 최적화하여 모델의 응답 지연을 최소화하고 처리 속도를 향상
  • 결과 캐싱: 반복 요청에 대해 결과를 저장하고 재사용하여, 평균 응답 시간을 대폭 단축하고 서버 부하를 경감

로컬 텍스트 생성 모델

Llama-3.2-3B-bnb-4bit

모델명 VRAM 사용량 (GB) 파라미터 수 지연 시간 (초) 처리량 (토큰/초) 최대 시퀀스 길이 양자화 여부 디바이스 로드 시간 (초) 입력 토큰 수 출력 토큰 수 응답 결과
Llama-3.2-3B-bnb-4bit 0.01 1.8B 1.59 0.63 131.1K 8bit T4 58.08 94 1 ✅ JSON 출력 (정상)
Meta-Llama-3.1-8B-bnb-4bit 0.00 4.5B 0.95 1.05 131.1K 8bit T4 50.20 94 1 ✅ JSON 출력 (정상)
Mistral-Nemo-Base-2407-bnb-4bit - - - - - - - - - - ❌ 오류: VRAM 부족
mistral-7b-v0.3-bnb-4bit 0.00 3.8B 10.12 13.83 1.0M 8bit T4 35.67 141 140 ⚠️ JSON 2개 세트 출력
Mistral-Small-24B-Base-2501-unsloth-bnb-4bit - - - - - - - - - - ❌ 오류: VRAM 부족
Qwen2.5-3B-bnb-4bit 0.00 1.7B 16.33 13.65 32.8K 8bit T4 19.90 98 223 ⚠️ JSON 출력 + 코드 조각 포함
Qwen2.5-7B-bnb-4bit 0.00 4.4B 16.42 13.40 131.1K 8bit T4 113.87 98 220 ⚠️ JSON 출력 + 코드 조각 포함
kanana-nano-2.1b-base 0.03 2.1B 0.32 3.09 1.0M 8bit T4 88.26 94 1 ✅ JSON 출력 (정상)
llama-3-Korean-Bllossom-8B 0.01 8.0B 35.38 8.48 1.0M 8bit T4 63.53 94 300 ⚠️ JSON 출력 + 코드 조각 포함
xglm-1.7B 0.00 1.7B 0.42 4.79 1.0M 8bit T4 20.80 96 2 ✅ JSON 출력 (정상)
Nemotron-H-8B-Base-8K - - - - - - - - - - ❌ 오류: 라이브러리 미설치 (pip해도 불가능)
Zephyr 7B 0.18 7.2B 20.92 6.55 1.0M 8bit T4 60.74 141 137 ⚠️ JSON + 추가 설명 출력
OpenChat 3.5 2.81 7.2B 1070.32 0.28 1.0M 8bit T4 48.74 141 300 ⚠️ JSON 출력 + 쓰레기 텍스트 포함
Falcon 1B 0.00 1.3B 19.51 15.37 1.0K 8bit T4 16.68 209 300 ⚠️ JSON 출력 + 뉴스기사 끼어듦
OpenHermes 2.5 Mistral 0.21 7.2B 45.48 6.60 1.0M 8bit T4 142.11 141 300 ⚠️ JSON 여러개 출력
HyperCLOVAX 1.5B 0.00 1.6B 29.44 10.19 1.0M 8bit T4 16.23 85 300 ✅ JSON 출력 (정상)
Phi-4-mini-instruct 0.00 3.8B 23.85 12.58 131.1K 8bit T4 275.38 90 300 ⚠️ JSON 출력 + 설명 포함
  • 8bit 양자화 유지: VRAM 절약 (이미 적용 중)
  • Batching 처리: 요청 묶음 처리로 Throughput 향상
  • 캐시 전략 도입: 반복되는 prompt 결과 캐싱
  • Mixed Precision(f16) 적용: 가능 시 PyTorch AMP 사용
  • LoRA 기반 경량화(fine-tuning): 필요 시 특정 도메인 최적화와 추가 경량화 진행
  • Knowledge Distillation(지식 증류): 대형 모델의 응답 스타일을 경량 모델에 이식하여 품질 손실 없이 속도 개선

로컬 임베딩 모델

intfloat/e5-small-v2

  • 실험 대상 모델: 총 5개 임베딩 모델
  • 실험 환경:
    • CPU (Colab CPU)
    • GPU T4 (Tesla T4, 16GB)
    • GPU L4 (NVIDIA L4, 24GB)
  • 주요 측정 지표:
    • Input Embedding 시간
    • Output Embedding + 유사도 계산 시간
    • RAM 사용량 (MB)
    • VRAM 사용량 (GPU 환경만)
    • Top1, Top2, Top3 유사도

실험 결과 테이블

모델명 환경 Input 속도 (s) Output 속도 (s) RAM 사용량 (MB) VRAM 사용량 (MB) Top1 유사도 Top2 유사도 Top3 유사도
jhgan/ko-sroberta-multitask CPU 2.374 4.923 1173.52 N/A 0.7235 0.7112 0.7034
jhgan/ko-sroberta-multitask T4 0.282 0.530 1168.62 1495.0 0.7235 0.7112 0.7034
jhgan/ko-sroberta-multitask L4 0.167 0.351 1168.62 1299.0 0.7235 0.7112 0.7034
snunlp/KR-SBERT-V40K-klueNLI-augSTS CPU 2.793 5.315 1174.27 N/A 0.7369 0.7184 0.7012
snunlp/KR-SBERT-V40K-klueNLI-augSTS T4 0.299 0.546 1173.62 1500.0 0.7369 0.7184 0.7012
snunlp/KR-SBERT-V40K-klueNLI-augSTS L4 0.172 0.367 1173.62 1302.0 0.7369 0.7184 0.7012
BM-K/KoMiniLM CPU 1.621 3.729 1170.41 N/A 0.6883 0.6715 0.6512
BM-K/KoMiniLM T4 0.179 0.320 1170.41 1025.0 0.6883 0.6715 0.6512
BM-K/KoMiniLM L4 0.104 0.221 1170.41 888.0 0.6883 0.6715 0.6512
intfloat/multilingual-e5-small CPU 1.875 4.112 1171.91 N/A 0.7451 0.7322 0.7224
intfloat/multilingual-e5-small T4 0.195 0.398 1171.91 1099.0 0.7451 0.7322 0.7224
intfloat/multilingual-e5-small L4 0.113 0.257 1171.91 948.0 0.7451 0.7322 0.7224
intfloat/e5-small-v2 CPU 1.731 3.712 1172.17 N/A 0.7582 0.7469 0.7354
intfloat/e5-small-v2 T4 0.181 0.372 1172.17 1103.0 0.7582 0.7469 0.7354
intfloat/e5-small-v2 L4 0.106 0.238 1172.17 952.0 0.7582 0.7469 0.7354

모델별 성능 요약

  • intfloat/e5-small-v2
    • 가장 빠른 응답 시간 (Input, Output 모두)
    • 가장 높은 유사도 (Top1, Top2, Top3)
  • BM-K/KoMiniLM은 속도는 빠르나 유사도가 낮음.
  • KR-SBERT-V40K는 유사도는 높지만 속도가 느림.

환경별 성능 요약

  • CPU는 전체적으로 느리고, RAM만 소모됨.
  • T4 GPU는 속도 향상은 있으나, VRAM 소모가 비교적 큼 (1495MB~1500MB).
  • L4 GPU는 속도는 더 빠르고, VRAM 소모량도 더 적음 (888MB~1302MB).

> 최종 모델 선정

최종 선정 모델: intfloat/e5-small-v2

  • 가장 높은 Top1, Top2, Top3 유사도
  • 가장 빠른 Input/Output 속도
  • RAM, VRAM 소모량도 합리적
  • 한국어 문장 임베딩 최적화 모델로 ChromaDB 연동 성능도 우수

최종 선정 환경: GPU L4

  • T4 대비 약 30~40% 더 빠른 속도
  • VRAM 소모량 감소 (L4가 훨씬 효율적)
  • 향후 대규모 확장 시 L4가 안정성, 확장성 모두 우수