vLLM 인코더 분리(EPD) 확장 및 멀티모달 서빙

EPD 분리 개요

멀티모달 추론은 언어 모델 실행 전에 미디어(이미지, 비디오, 오디오)를 임베딩으로 변환하는 인코딩 단계를 필요로 합니다. 인코딩에 대한 수요는 프리필(prefill) 및 디코드(decode) 요구 사항과 독립적으로 변할 수 있기 때문에, vLLM은 인코더/프리필/디코드(EPD) 분리를 지원합니다. 이 아키텍처는 이러한 단계를 독립적으로 배포된 vLLM 인스턴스로 분리하여 운영자가 특정 워크로드 요구 사항에 따라 리소스 할당을 최적화할 수 있도록 합니다.

메타데이터 전용 요청

효율성을 높이기 위해 vLLM은 이제 메타데이터 전용 요청을 지원합니다. 이 워크플로우에서 인코더는 임베딩과 함께 구조적 메타데이터(이미지 그리드나 특징 길이 등)를 생성합니다. 다운스트림 소비자는 원시 미디어를 다시 처리하거나 다시 가져올 필요 없이 이 메타데이터를 사용하여 입력 레이아웃을 재구성합니다. 이는 중복 계산과 네트워크 오버헤드를 줄여줍니다. 오디오 워크로드의 경우, 메타데이터 전용 전달을 통해 처리량이 62.21에서 73.13 요청/초로 증가하고 평균 지연 시간이 980ms에서 853ms로 감소하는 것으로 나타났습니다.

전용 인코더 실행

vLLM의 인코더 전용 인스턴스는 이제 전용 MMEncoderModelRunner를 통해 최적화되었습니다. 주요 개선 사항은 다음과 같습니다:

  • 시작 I/O 감소: 인코더 전용 인스턴스는 언어 모델 체크포인트 샤드 로딩을 건너뛰어 초기화 시간을 획기적으로 단축합니다.
  • CUDA Graph 지원: 인코더 전용 러너는 실행 속도 향상을 위해 선택적 ViT 그래프 캡처를 지원합니다.
  • 비동기 실행: 인코더 단계가 토큰 샘플링과 분리되어 버퍼 경합을 방지하고 일관된 성능을 보장합니다.
  • GPU 전처리: GPU 기반 전처리와 NVDEC 하드웨어 디코딩의 통합은 비디오 중심 워크로드에서 상당한 처리량 향상을 보여주었습니다.

원격 임베딩 전송 및 재사용

분리된 구성 요소 간에 임베딩을 효율적으로 이동하는 것은 성능에 매우 중요합니다. vLLM은 두 가지 주요 원격 전송 경로를 지원합니다:

  • NIXL: 등록된 CPU mmap 영역을 통해 인스턴스 간에 CPU 오프로드된 인코더 출력을 공유합니다.
  • Mooncake: TCP 및 RDMA 구성을 모두 지원하는 Mooncake TransferEngine을 사용하여 인코더 출력을 전달합니다.

또한, Mooncake Store는 인코더 출력의 교차 재사용을 가능하게 합니다. 이미지가 한 인스턴스에 의해 인코딩되면 결과 임베딩을 캐싱하여 다른 인코더가 재사용할 수 있으므로 중복된 순방향 패스(forward pass)를 제거합니다. InternVL3_5-38B-HF를 사용한 실험에서 공유 재사용은 재할당 시나리오에서 반복적인 이미지 인코딩을 0으로 줄여 TTFT(Time To First Token)를 크게 개선했습니다.

오케스트레이션 및 배포

vLLM은 EPD 오케스트레이션을 위한 여러 통합 경로를 제공합니다:

  • vLLM Router: 다중 이미지 배포를 포함하여 E+PD 및 E/P/D 배포를 위한 기본 CLI 구성을 지원합니다.
  • SMG: Python 및 Rust 서버를 모두 갖춘 gRPC 기반 EPD 지원을 제공하며, 여러 인코더 워커에 걸쳐 이미지 처리를 분산할 수 있습니다.
  • llm-d: 인코더와 소비자 역할이 별도의 파드 계층으로 실행되는 Kubernetes 네이티브 배포 경로를 제공하여 독립적인 확장 및 하드웨어 선택을 가능하게 합니다.

성능 영향

GB200 하드웨어에서 DeepSeek V4.1 Flash를 사용한 평가에서, EPD 배포는 높은 동시성(64–128)에서 표준 PD 기준 대비 GPU당 6.6–9.5% 더 높은 처리량을 보여주었습니다. 또한, P90 TTFT가 44–47% 감소하여 컴퓨팅 집약적인 멀티모달 작업을 위해 인코딩 단계를 분리하는 이점을 강조했습니다.

Sources