DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from NAVER D2
  • Related reads#vLLM
#AI

우리 팀만의 vLLM 플러그인 만들기 1편 - 검색 AI 모델 서빙 성능 극대화하기

우리 팀만의 vLLM 플러그인 만들기 1편 - 검색 AI 모델 서빙 성능 극대화하기
01

Summary

네이버 MLOps가 vLLM으로 검색 AI 서빙 처리량을 6.2배 폭발시킨 방법

모델은 한 줄도 고치지 않고, 런타임 통합과 요청 경로 제거만으로 달성한 극적인 성능 최적화

네이버 플레이스 AI MLOps 팀이 검색 및 추천에 쓰이는 재순위화, 감성 분석, 이미지 스코어링 모델의 서빙을 vLLM 풀링 런타임으로 이식한 실전 기록입니다. 기존 분산된 추론 경로의 직렬화 및 토큰화 분리 문제를 단일 엔드포인트 내 IO Processor로 통합 해결했습니다. GPU 커널 메모리 명령 횟수를 27분의 1로 줄인 Nsight Compute 분석 결과부터 플러그인화 기법까지 시니어 엔지니어가 가려운 곳을 긁어주는 팁을 가득 담았습니다.

  • 01Hugging Face 대비 재순위화 모델 처리량 최대 9.1배 달성
  • 02vLLM을 활용해 생성 모델뿐만 아니라 분류 및 임베딩 목적의 풀링 런타임을 공유 서빙 플랫폼으로 구축
  • 03전처리, 토큰화, 추론, 후처리를 단일 엔드포인트로 통합하는 IO Processor 개발로 네트워크 홉 및 직렬화 비용 제거
  • 04NVIDIA Nsight Compute 분석으로 전역 메모리 명령수가 약 27분의 1로 급감하고 연산이 단일 대형 타일에 흡수됨을 정밀 검증
  • 05vLLM을 포크(Fork)하지 않고 pyproject.toml의 엔트리 포인트를 활용해 외부 플러그인(Out-of-tree) 배포 파이프라인 완비

+RECOMMENDATION

검색/추천의 임베딩 및 재순위화 스코어링 성능을 극대화하고자 하는 엔지니어에게 최적의 실무 교안입니다. 특히 CPU 바운드 전처리가 결합된 멀티모달 모델 서빙 시, 무조건적인 병합보다는 워커 분리 및 병렬성 조율의 트레이드오프를 신중히 검토해 적용할 것을 추천합니다.

The Problem

기존의 검색 및 추천 스코어링 모델 서빙 구조는 분산된 마이크로서비스 전후처리 경로, 다중 네트워크 홉, JSON과 텐서의 직렬화 비용으로 인해 p95 지연 시간 예산을 맞추기 어려웠습니다. 또한 개별적인 요청 경로 분산으로 인해 GPU 추론 시 배치가 충분히 구성되지 않아 처리량 효율성이 크게 저하되었습니다.

The Solution

vLLM의 임베딩 및 분류를 위한 풀링 런타임 위에 다양한 스코어링 모델을 사용자 정의 모델로 통합 구현하고, IO Processor를 도입하여 전후처리 및 토크나이저를 단일 엔드포인트로 통합했습니다. 이 비즈니스 로직들을 vLLM 코어와 분리하여 독립적인 외부 플러그인 패키지 형태로 구현하고 KServe로 배포를 표준화했습니다.

The Result

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이 유발될 수 있고, 경로 통합에 따라 장애 발생 시 영향 반경이 넓어지는 부작용이 있습니다.

03

Key Concepts

Concept · 01

vLLM 풀링 런타임 (vLLM Pooling Runtime)

vLLM 엔진의 트랜스포머 은닉 상태(Hidden States)를 기반으로 임베딩 생성(embed), 분류(classify) 등의 태스크 결과물을 생성해 내는 스케줄링 런타임입니다. 어텐션 최적화 백엔드 및 가변 길이에 대한 비동기 구간 ID 처리가 기본적으로 포함되어 있습니다.

  • CLS, LAST, MEAN 등의 내장 풀러(Pooler) 구조를 활용해 재순위화 및 감성 분류 모델을 vLLM 사용자 정의 모델로 탑재
  • 동적 패딩과 효율적인 메모리 배치를 이식하여 Hugging Face 경로 대비 불필요한 커널 기동 횟수를 대폭 감소
Concept · 02

IO Processor

vLLM 엔진의 앞단(요청 파싱 및 비즈니스 토큰화)과 뒷단(출력 로짓 정렬 및 후처리)을 GPU 메모리 실행 장치 내부에서 파이프라인으로 연결해 주는 전후처리 프레임워크입니다.

  • 기존 애플리케이션, 토크나이저, 모델 서버, 전후처리 서비스 간의 복잡한 이중 네트워크 구간과 JSON 직렬화 병목을 단일 호출로 통합
  • 비동기식 post_process_async 스케줄러 구현을 통해 무작위 순서로 완료된 배치를 요청 순서대로 자동 정렬
Concept · 03

외부 플러그인 구조 (Out-of-tree Plugin)

vLLM의 소스 코드를 수정하거나 포크하지 않고 Python 표준 엔트리 포인트(Entry Points) 명세에 맞춰 비즈니스 로직을 동적으로 바인딩하는 모듈화 패턴입니다.

  • pyproject.toml 설정에 모델 레지스트리와 IO Processor 클래스를 기재하여 배포 시 pip install 한 번으로 vLLM이 자동 감지하도록 설계
  • 코어 버전 교체 및 파드 재기동 시 비즈니스 스케줄러와 모델 프로세스 간의 장애 격리를 도모
Continue reading · same source

NAVER D2More from NAVER D2

View all posts from NAVER D2
  • 우리 팀만의 vLLM 플러그인 만들기 2편 - 모델 변환부터 배포까지 AI-native로 자동화하기

    vLLMGitOpsClaude Code
    2주 전
  • FE News 26년 8월 소식을 전해드립니다.

    CSSWeb PerformanceVite
    3주 전
  • [AI 해커톤 후기] AI 해커톤 1위 팀이 AI에게 맡기지 않은 것

    LLMMCPSoftware Architecture
    1개월 전
  • VictoriaMetrics 운영기 2편 — 장비 증설 없이 리소스 위기를 해결한 3단계 최적화 전략

    VictoriaMetricsTSDBQuery Performance
    1개월 전
  • [AI 해커톤 후기] AI 시대의 해커톤과 인간의 역할: AI의 계획과 사람의 전략

    LLMFastAPIOCR
    1개월 전

Related reads#vLLM

Explore #vLLM
토스·LLM Serving

LLM 서빙, 띄우는 것과 잘 띄우는 것 사이

#vLLM1주 전
NAVER D2

우리 팀만의 vLLM 플러그인 만들기 2편 - 모델 변환부터 배포까지 AI-native로 자동화하기

#vLLM2주 전
Netflix·LLM

GenRec: 넷플릭스의 LLM 네이티브 추천 시스템을 향하여

#vLLM1개월 전
Netflix

넷플릭스의 자체 LLM 서빙 플랫폼 구축기

#vLLM1개월 전
라인·Multimodal LLM

대규모 서비스 환경에서의 이미지 콘텐츠 모더레이션(feat. 멀티모달 LLM)

#vLLM5개월 전

Source

NAVER D2
NAVER D2
Engineering Blog

Published · August 10, 2026

Topics

vLLMModel ServingMLOpsPerformance OptimizationCUDA Graph