[AI]2단계_모델_추론성능_최적화_익명닉네임_생성 - 100-hours-a-week/12-marong-Wiki GitHub Wiki

1.기존 모델 추론의 성능 지표 수집 및 문서화

모델별 추론 성능 비교 지표

항목 SBERT (KR-SBERT) Word2Vec 계열 FastText Contextual Embedding (BERT 계열)
응답 시간 (Latency) 평균 200~500msP95: 700msP99: 1s 평균 5~10ms 평균 10~20ms 평균 700ms~1.5sP95 이상: 2s+
처리량 (Throughput) 20~100 RPS (배치 최적화 시) 1000+ RPS 500~800 RPS 5~50 RPS (GPU 기준)
리소스 사용량 GPU 사용률: 중VRAM: ~2.3GBCPU: 중 CPU 기반RAM: 적음 CPU 기반RAM: 중간 GPU 사용률: 높음VRAM: 5~7GBCPU: 중
에러율 / 타임아웃 낮음 (형식 오류 외엔 안정적) 매우 낮음 낮음 (OOV 발생 시 보정 필요) 중간~높음 (메모리 이슈 발생 가능)
Cold / Warm Start Cold: 5~10초Warm: 200ms 이하 Cold: 1초 미만Warm: 거의 없음 Cold: 1~2초Warm: 빠름 Cold: 수십 초Warm: 700ms 수준

2.식별된 성능 병목 요소 및 원인 분석

병목 구간 원인 분석
Cold Start 모델 로딩 시간 - 대용량 Transformer 가중치 파일 로딩 비용- Python 모듈 임포트 및 초기화 오버헤드
단건 요청 단일 추론 Latency - 비효율적 배치 설정(작은 배치)- 동기식 I/O 블로킹
GPU 메모리 제약 - 빈번한 메모리 할당·해제- 중복 데이터 복사로 VRAM 사용량 증가
CPU ↔ GPU 데이터 전송 지연 - 직렬화/역직렬화 오버헤드(numpy ↔ torch Tensor)- 불필요한 포맷 변환
비효율적 배칭 전략 - 고정 배치 크기로 인한 대기 시간 불균형- Dynamic Batching 미적용
I/O 대기 시간 (로깅·모니터링) - 동기식 로그 기록 및 메트릭 수집- 디스크 쓰기 동기 처리

3.적용할 최적화 기법 구체 계획 수립

3. 적용할 최적화 기법 구체 계획 수립

최적화 기법 구체 계획
모델 경량화 & 압축 8-bit 양자화 적용, Knowledge Distillation으로 소형 Student 모델 생성, ONNX 변환 및 Graph 최적화
배치 처리 & 동적 배칭 Dynamic Batching 도입(pyTorch Serve / ONNX Runtime), 최적 배치 크기 탐색
Mixed Precision PyTorch AMP 기반 FP16 활성화, NVIDIA Apex 검증
비동기 I/O 전환 FastAPI 엔드포인트를 async def로 전환, aiohttp/uvicorn workers 확장
응답·벡터 캐싱 Redis 기반 LRU 캐시 구현, 빈번 재요청 결과 캐싱
프로파일링 & 모니터링 PyTorch Profiler / NVIDIA Nsight 프로파일링, Prometheus + Grafana 대시보드 구축
하드웨어 튜닝 GPU 전원 관리 모드 최적화(P2/P4), CPU affinity 및 NUMA 바인딩

4.최적화 적용 후 기대 성능 지표 정의

지표 기존 값 목표 값
평균 Latency 200~500 ms 100~300 ms
P95 Latency 700 ms 350 ms
P99 Latency 1 s 600 ms
Throughput (RPS) 20~100 80~200
GPU 사용률 중간 70~90%
VRAM 사용량 ~2.3 GB ≤1.5 GB
Cold Start 시간 5~10 초 2~3 초
Warm Start 시간 ≤200 ms ≤100 ms
에러율 / 타임아웃 < 1% < 0.5%
I/O 대기 시간 ~20 ms < 10 ms

4.1. 최적화 목표치 설정 근거

  1. Latency 단축

    • 8-bit Quantization, Mixed Precision(FP16) 적용 → 연산량 절반 이하 감소
    • Dynamic Batching 도입 → GPU 파이프라인 효율화
  2. Tail Latency 개선 (P95/P99)

    • 비동기 I/O 전환 및 벡터 캐싱 → latency spike 제거
    • 빈번 재요청 키워드 캐시 히트 시 즉시 응답
  3. Throughput 증가

    • Dynamic Batching + GPU 전원 모드(P2/P4) 튜닝 → 처리량 2~3배 향상
    • Redis 캐싱으로 불필요한 모델 호출 최소화
  4. GPU 활용도 최적화

    • Mixed Precision + Dynamic Batching → 70~90% 수준의 안정적 자원 활용
  5. 메모리 사용량 절감

    • 8-bit Quantization & ONNX Graph 최적화 → VRAM 사용 ≤1.5 GB
  6. Cold Start 단축

    • ONNX Runtime/TorchScript 전환, 지연 임포트(lazy init) 적용 → 초기 로딩 2~3 초
  7. Warm Start 가속

    • 모델 캐시 유지 및 Worker 풀 운영 → 호출 지연 ≤100 ms
  8. 에러율·타임아웃 감소

    • 비동기 로직, 벡터 캐싱, 프로파일링 → 실패 확률 절반 이하로 감소
    • 자동 Retry 로직 추가
  9. I/O 대기 시간 절반 이하

    • 비동기 로그·메트릭 수집 → 디스크 I/O 블로킹 최소화

Note: 실제 벤치마크 결과에 따라 세부 목표치는 조정될 수 있습니다.