
모델은 한 줄도 고치지 않고, 런타임 통합과 요청 경로 제거만으로 달성한 극적인 성능 최적화
네이버 플레이스 AI MLOps 팀이 검색 및 추천에 쓰이는 재순위화, 감성 분석, 이미지 스코어링 모델의 서빙을 vLLM 풀링 런타임으로 이식한 실전 기록입니다. 기존 분산된 추론 경로의 직렬화 및 토큰화 분리 문제를 단일 엔드포인트 내 IO Processor로 통합 해결했습니다. GPU 커널 메모리 명령 횟수를 27분의 1로 줄인 Nsight Compute 분석 결과부터 플러그인화 기법까지 시니어 엔지니어가 가려운 곳을 긁어주는 팁을 가득 담았습니다.
검색/추천의 임베딩 및 재순위화 스코어링 성능을 극대화하고자 하는 엔지니어에게 최적의 실무 교안입니다. 특히 CPU 바운드 전처리가 결합된 멀티모달 모델 서빙 시, 무조건적인 병합보다는 워커 분리 및 병렬성 조율의 트레이드오프를 신중히 검토해 적용할 것을 추천합니다.
기존의 검색 및 추천 스코어링 모델 서빙 구조는 분산된 마이크로서비스 전후처리 경로, 다중 네트워크 홉, JSON과 텐서의 직렬화 비용으로 인해 p95 지연 시간 예산을 맞추기 어려웠습니다. 또한 개별적인 요청 경로 분산으로 인해 GPU 추론 시 배치가 충분히 구성되지 않아 처리량 효율성이 크게 저하되었습니다.
vLLM의 임베딩 및 분류를 위한 풀링 런타임 위에 다양한 스코어링 모델을 사용자 정의 모델로 통합 구현하고, IO Processor를 도입하여 전후처리 및 토크나이저를 단일 엔드포인트로 통합했습니다. 이 비즈니스 로직들을 vLLM 코어와 분리하여 독립적인 외부 플러그인 패키지 형태로 구현하고 KServe로 배포를 표준화했습니다.
Hugging Face 대비 0.6B 재순위화 모델의 처리량이 6.2배에서 최대 9.1배로 향상되었으며, 감성 분석 모델의 단건 p50 지연 시간은 16.43ms로 83.8% 감소했습니다. 이미지 랭킹 모델 또한 전처리 최적화와 vLLM 런타임 결합을 거치며 누적 16.5배의 처리량 향상을 달성했습니다.
Trade-off
전후처리를 GPU 파드의 런타임 내부로 이식하면서 이미지 디코딩과 같이 CPU 연산 비용이 큰 작업이 동반될 경우 GIL 및 CPU 경합이 발생하여 역효과가 날 수 있습니다. 또한 IO Processor 내부의 요청 캐시 데이터를 정상적으로 pop하지 않으면 메모리 누수로 인해 장기 가동 시 OOM이 유발될 수 있고, 경로 통합에 따라 장애 발생 시 영향 반경이 넓어지는 부작용이 있습니다.
vLLM 엔진의 트랜스포머 은닉 상태(Hidden States)를 기반으로 임베딩 생성(embed), 분류(classify) 등의 태스크 결과물을 생성해 내는 스케줄링 런타임입니다. 어텐션 최적화 백엔드 및 가변 길이에 대한 비동기 구간 ID 처리가 기본적으로 포함되어 있습니다.
vLLM 엔진의 앞단(요청 파싱 및 비즈니스 토큰화)과 뒷단(출력 로짓 정렬 및 후처리)을 GPU 메모리 실행 장치 내부에서 파이프라인으로 연결해 주는 전후처리 프레임워크입니다.
vLLM의 소스 코드를 수정하거나 포크하지 않고 Python 표준 엔트리 포인트(Entry Points) 명세에 맞춰 비즈니스 로직을 동적으로 바인딩하는 모듈화 패턴입니다.




