이 글은 스프링캠프2025에서 사이오닉AI의 김수원님의 발표를 바탕으로 정리하여 작성한 글 입니다. 해당 과정에서 제 실수로 잘못된 정보를 기재 하였을 수도 있는 점 양해 부탁 드립니다.
배경: ML 서빙의 어려움
파이썬 ML 서빙의 문제점
- 성능 이슈: GIL(Global Interpreter Lock)로 인한 멀티스레딩 제약
- 대규모 서비스 난이도: 메모리 관리 및 확장성 문제
- 운영 복잡성: 패키지 의존성 관리 및 배포 복잡도
클라우드 엔진 서빙의 어려움
- 네이티브 언어 사용 필요: C++, Rust 등 저수준 언어 요구
- 복잡한 파라미터 설정: GPU 메모리, 배치 크기 등 세밀한 튜닝 필요
- 구축 및 운영 비용: 인프라 설정 및 유지보수 부담
JVM 기반 ML 서빙 솔루션
저수준 라이브러리
- ONNX Runtime: 크로스 플랫폼 추론 엔진
- TensorFlow Java: 구글의 TensorFlow JVM 바인딩
- 특징: 세밀한 튜닝을 통한 고성능 달성 가능
DJL (Deep Java Library)
- 고수준 추상화: ML 전문 지식 없이도 서빙 가능
- Java 개발자 친화적: 기존 스프링 생태계와 자연스러운 통합
- Hugging Face 생태계 연동: 사전 훈련된 모델 쉽게 활용
- Netflix 등 대기업 도입: 검증된 안정성
실제 활용 사례: 커머스 리뷰 감정 분석
구현 과정
- 모델 선정: Hugging Face에서 감정 분석 모델 선택
- 추론 요청: 리뷰 텍스트 → 모델 → 긍정/부정 결과
- 단순한 워크플로우: 모델 로드 → 추론 실행, 단 두 스텝으로 완성
DJL의 한계점
- 저수준 제어 불가: 하드웨어 최적화 튜닝 제약
- 리소스 활용도 제한: 수십 코어와 수백 GB 메모리의 완전 활용 어려움
- 비용 효율성: 하드웨어 투자 대비 성능 최적화 한계
TensorFlow를 통한 고성능 최적화
세밀한 제어 기능
- GPU 메모리 관리: 동적 메모리 할당 및 제한 설정
- 병렬 처리 최적화: 스레드 풀 및 연산 병렬화 제어
- 동적 배치 처리: 실시간 배치 크기 조정으로 처리량 극대화
메모리 및 연산 최적화
- 제로카피 최적화: 메모리 복사 오버헤드 최소화
- 코사인 유사도 임계값: 검색 정확도와 성능 균형 조정
- 상위 K개 결과 필터링: 불필요한 연산 제거
- 성능 결과: 1천만 개 문서를 1초 미만으로 검색 가능
RAG (Retrieval-Augmented Generation) 아키텍처
워크플로우
사용자 질의 → 관련 문서 벡터 검색 → 검색된 문서 + 질의를 LLM에 전달 → 최종 답변 생성성능 포인트
- 벡터 검색 속도: 임베딩 모델과 벡터 DB 최적화가 핵심
- 컨텍스트 윈도우: LLM 토큰 제한 내에서 관련성 높은 문서 선별
JVM ML 서빙의 현실적 제약사항
생태계 지원 속도
- 최신 모델 지원 지연: Python 생태계 대비 느린 업데이트
- 커뮤니티 규모: 상대적으로 작은 개발자 커뮤니티
- 튜닝 전문성 요구: 고성능 달성을 위한 깊은 이해 필요
Spring AI의 역할
- 직접 모델 서빙 X: 모델 추론 엔진이 아닌 API 통합 라이브러리
- 외부 LLM 서비스 연동: ChatGPT, Claude, Gemini 등과의 통합 제공
- 추상화 레이어: 다양한 AI 서비스를 통일된 인터페이스로 활용
성능 최적화 전략
스케일업 vs 스케일아웃
- 단순 서빙: 스케일업(더 강력한 하드웨어) 전략이 효율적
- 복잡한 워크로드: 분산 처리를 통한 스케일아웃 고려
하드웨어 선택의 중요성
- 작업 유형별 최적화: NLP vs Computer Vision vs 추천 시스템
- 모델 크기별 전략: 경량 모델 vs 대형 언어 모델
- 비용 대비 성능: GPU 타입, 메모리 용량, CPU 코어 수 균형
추가 고려사항
모델 최적화 기법
- 양자화(Quantization): 모델 크기 및 추론 속도 개선
- 지식 증류(Knowledge Distillation): 큰 모델의 성능을 작은 모델로 전이
- 모델 압축: 프루닝을 통한 불필요한 가중치 제거
실시간 서빙 고려사항
- 레이턴시 vs 처리량: 실시간 응답이 필요한지 배치 처리가 가능한지
- 모델 버전 관리: A/B 테스트 및 점진적 배포 전략
- 모니터링 및 로깅: 모델 성능 지표 추적 및 이상 탐지