vLLM Model Runner V2 릴리스 노트 / 새로운 내용

vLLM은 실행 효율성을 높이고 기술 부채를 줄이기 위해 설계된 vLLM 모델 러너의 완전한 재구현인 Model Runner V2 (MRV2)를 발표했습니다. MRV2는 모듈식이며 GPU 네이티브, 비동기 우선 코어를 도입하여 기존 사용자 API에 아무런 변경 없이 성능을 향상시킵니다.

GPU 네이티브 입력 준비 및 지속 배치

MRV2는 지속적인 요청 상태를 단계별 입력 텐서와 분리하고 Triton 커널을 사용해 입력 준비를 GPU로 직접 이동시켜 처리량을 증가시킵니다.

vLLM V1에서는 요청 순서가 블록 테이블 레이아웃에 밀접하게 연결되어 있어 요청이 추가되거나 제거될 때 복잡한 재정렬이 필요했습니다. MRV2는 각 살아있는 요청이 수명 동안 고정된 행을 차지하는 안정적인 상태 테이블로 이를 대체합니다. 러너는 이후 gather 연산을 사용해 각 단계에 대해 올바르게 정렬된 입력 블록 테이블을 생성합니다. 이 설계는 CachedRequestState와 같은 중복 백업 상태의 필요성을 없애고 상태 관리를 단순화합니다.

텐서(input_ids, positions, query_start_loc, seq_lens 등)의 구성을 GPU로 이동함으로써 MRV2는 다음을 달성합니다:

  • Reduced CPU overhead: Python 및 CPU 측 텐서 조작을 최소화합니다.
  • Simplified code: CPU 측 연산이 부과하는 제약을 제거합니다.
  • Enhanced compatibility: GPU에 상주하는 준비가 동기화 없이 디바이스 측 결과를 소비하도록 하여 비동기 및 추측 디코딩을 개선합니다.

비동기 우선 아키텍처

MRV2는 지원되는 모든 모델과 기능에서 CPU와 GPU 간의 동기화가 전혀 없다는 가정하에 구축되었습니다. 이 비동기 우선 설계는 스케줄러와 워커가 GPU가 단계 N을 실행하는 동안 단계 N+1을 준비하도록 하여 GPU 활용도를 극대화합니다.

이 아키텍처는 비동기 스케줄링과 추측 디코딩을 결합하는 데 있었던 이전의 어려움을 구체적으로 해결합니다. 입력 준비가 이제 디바이스에서 이루어지므로 준비 커널이 GPU가 생성한 거부 샘플링 결과를 직접 소비할 수 있습니다. 출력은 별도의 CUDA 스트림을 통해 비동기적으로 CPU로 전송되어 메인 연산 스트림과 호스트 측 처리를 완전히 분리합니다.

Triton 네이티브 샘플링 개선

샘플링은 최적화된 Triton 커널을 사용해 재구성되어 메모리 효율성과 수치 제어를 향상시켰습니다:

  • Gumbel-Max sampling: 이제 명시적인 softmax 물성을 피하고 상태 없는 인-커널 RNG를 활용합니다.
  • Top-k logprobs: 먼저 top-k 로짓을 식별한 뒤 선택된 후보에 대해서만 logprob를 계산함으로써 효율성을 높입니다.
  • Prompt logprobs: 단일 프롬프트 내에서도 더 세분화된 청킹을 통해 메모리 사용량을 줄입니다.
  • Speculative decoding: 커널 내부에서 idx_mapping 간접 참조를 사용해 모든 로짓 벡터와 맞추기 위해 요청 상태를 확장할 필요를 없애 호환성을 개선합니다.

ModelState를 통한 모듈화

공유 실행 경로를 복잡하게 만들지 않으면서 다양한 모델 아키텍처를 지원하기 위해 MRV2는 ModelState 추상화를 도입했습니다. 이 인터페이스는 멀티모달 임베딩, 어텐션 메타데이터, CUDA 그래프 캡처에 대한 모델별 로직을 정의하여 메인 러너가 공통 실행 경로에 집중할 수 있게 합니다.

이 모듈화는 코드 복잡성을 크게 줄였습니다. 6,700줄이 넘던 원래 gpu_model_runner.py 파일은 더 작은 파일들로 분할되었으며, 가장 큰 파일도 이제 1,300줄 이하입니다.

성능 벤치마크

MRV2는 특히 호스트 측 오버헤드가 병목인 상황에서 측정 가능한 성능 향상을 제공합니다:

  • Throughput: 단일 GB200 GPU에서 Qwen3-0.6B를 사용한 테스트에서 MRV2는 초당 25K 출력 토큰을 달성했으며, MRV1의 16K에 비해 56.2% 처리량 증가를 나타냅니다.
  • Latency: 4xGB200 GPU에서 MTP=1과 함께 GLM-4.7-FP8을 사용했을 때, 추측 디코딩 중 CPU‑GPU 동기화 지점을 없앰으로써 평균 토큰당 시간(TPOT)이 6.3% 감소했습니다.

현재 상태 및 제한 사항

v0.18.0 현재 MRV2는 실험 단계이며 아직 기능이 완전하지 않습니다. 현재 지원되지 않는 기능은 다음과 같습니다:

  • 선형 어텐션 모델(예: Qwen3.5, Nemotron 3 Super)
  • Eagle, Eagle3, MTP 외의 추측 디코딩 방법
  • Logits 프로세서, LoRA, EPLB, DBO

사용자는 환경 변수 export VLLM_USE_V2_MODEL_RUNNER=1을 설정하여 MRV2를 활성화할 수 있습니다.

SUMMARY: vLLM은 모델 러너를 처음부터 재구현한 Model Runner V2 (MRV2)를 도입했으며, GPU 네이티브, 비동기 우선, 모듈식 아키텍처를 통해 처리량을 향상하고 지연 시간을 감소시킵니다.

TITLE: vLLM Model Runner V2 릴리스 노트 / 새로운 내용

Sources