vLLM AgentX 릴리스: 실제 워크로드 기반 에이전트 서빙 최적화

TL;DR

vLLM는 KV 캐시, 병렬 처리, 스케줄링 개선을 통합한 협업 스택을 도입하여 에이전트 서빙 성능을 1GPU-초당 13만 토큰까지 끌어올렸으며, Opus 5 API 가격 대비 14.6배~106배의 서빙 비용 우위를 달성했습니다.

에이전트 워크로드 특성

  • 중앙 세션 길이: 43턴.
  • 중앙 입력 컨텍스트: 142K 토큰; 중앙 출력: 444 토큰.
  • 프리픽스 캐시 히트율: >96%.
  • 44%의 세션에 서브에이전트가 포함되며, 중앙 4개의 서브에이전트 롤아웃을 수행합니다.

이 수치들은 실제 코드 어시스턴트 추적 데이터를 반영한 SemiAnalysis AgentX 벤치마크에서 나온 것입니다. 각 턴마다 최신 도구 결과가 누적 컨텍스트에 추가되므로 입력은 증가하지만 새로운 프리필은 짧게만 추가되며, 대부분의 요청은 이전에 이미 본 프리픽스입니다.

에이전트 서빙의 핵심 과제

  1. 프리픽스 캐시 부담 – 각 턴마다 전체 대화를 재생성하면 GPU와 리플리카 간 빈번한 KV 캐시 오프로딩이 발생합니다.
  2. 실행 효율성 – 긴 컨텍스트와 엄격한 지연 SLO 요구사항은 토큰당 높은 처리량과 낮은 디코딩 지연을 필요로 합니다.
  3. P/D 비율 선택 – 다양한 컨텍스트 길이와 캐시 히트율로 인해 최적의 프리필-디코딩(P/D) 균형을 선택하기 어렵습니다. 특히 동시성 하에서 더욱 어렵습니다.

전체 스택 최적화 접근법

vLLM은 데이터, 실행, 제어 세 가지 영역에서 세 가지 과제를 해결합니다.

데이터 영역 – 계산과 가까운 웜 KV 캐시

하이브리드 KV 캐시 매니저

  • 모든 어텐션 유형(전체, 슬라이딩 윈도우, 선형)에 대해 동일한 메모리 페이지를 할당 단위로 사용합니다.
  • 단일 공유 블록 풀을 유지하여 동시성과 프리픽스 재사용 패턴에 따라 동적으로 재할당할 수 있습니다.
  • DeepSeek V4의 92개 텐서와 같은 분할된 유형별 할당을 패킹 레이아웃으로 대체하여, FP4 인덱싱 활성화 시 패딩과 P/D 전송 오버헤드를 약 10% 감소시킵니다.

계층적 KV 캐시 오프로딩

  • CPU 메모리와 디스크 계층을 갖춘 분산 KV 캐시 풀로 Mooncake Store를 통합합니다.
  • 희소, 압축, 선형 어텐션에 대한 모델 일치를 지원합니다.
  • 높은 히트율 프리픽스를 유지하기 위한 두 가지 유지 정책을 구현합니다:
    1. 간격 기반 유지 – 각 턴마다 프롬프트 끝 캐시를 저장합니다.
    2. Marconi 스타일 선택적 유지 – 프리픽스가 두 번째로 관측될 때 체크포인트를 저장합니다.
  • 최적화(PR #46188, #45444, #45659, #47317)는 CPU 검색 비용을 줄이고 스케줄러의 핵심 경로에서 작업을 이동시켰습니다.

실행 영역 – 더 빠른 토큰 생성

모델별 병렬 처리

  • Kimi K3 – 텐서 병렬 처리 대신 디코딩 컨텍스트 병렬 처리(DCP) 를 사용합니다. DCP는 시퀀스 차원에 따라 KV를 분할하여 디코딩 지연을 낮추고 KV 용량을 증가시킵니다. 대칭 메모리 버퍼는 쿼리 수집과 부분 출력 축소를 융합하여 레이어당 지연을 약 13% 감소시킵니다.
  • DeepSeek V4 – 긴 프롬프트(32K 프롬프트 기준 2.65배 속도 향상)에서는 프리필 컨텍스트 병렬 처리(PCP)가 TP보다 우수합니다. 혼합 워크로드에서는 DCP가 과도한 통신을 유발하므로 데이터+전문가 병렬 처리(DEP)가 기본 설정입니다.

혼합 트래픽 스케줄링

  • 헤드 오브 라인 블로킹 완화--long-prefill-token-threshold를 사용해 단계당 토큰 수(예: 512)를 제한하여 짧은 캐시된 턴이 긴 프리필과 겹쳐질 수 있도록 하여 GPU-초당 총 토큰 수를 최대 93% 향상시키고 P90 상호작용성을 약 2.3배 향상시킵니다.
  • DEP 프리필 주기 일치--prefill-schedule-interval를 통해 랭크 간 동일한 엔진 단계에 프리필을 통합하여 중간 단계를 순수 디코딩에 할당하고 락스텝 스탠스를 줄입니다.

제어 영역 – 최적의 P/D 분리

  • 단계 1: 포화 프로파일링 – 병렬 처리 전략과 GPU 수에 따라 프리필 전용 및 디코딩 전용 구성에서 벤치마크를 수행하여 최대 요청/초 한계를 확보합니다.
  • 단계 2: P/D 스윕 – 최고의 프리필 및 디코딩 구성 조합을 사용해 P/D 비율을 다양하게 변경하고 전체 배포에서 지연-비용 트레이드오프를 측정합니다.

오픈소스 커널 기여

  • MiniMax M3 – CuteDSL 긴 컨텍스트 인덱서 (+3%~31% 지연 감소), MSA top-k 경로(최대 4배 최악의 경우 속도 향상), 사전 검증 경로(+20% 디코딩 처리량 향상).
  • Kimi K3 – GEMM 및 reduce-scatter 융합, 잠재 꼬리 MoE 융합(약 5% 지연 감소).
  • DeepSeek V4 – MXFP4 MoE 및 HCA 압축 개선, 멀티스트림 C4A, 기반 클러스터 top-k.

모든 패치는 vLLM 저장소에서 공개적으로 이용 가능합니다.

AgentX에서의 성능 결과

모델 GPU / 동시성 GPU-초당 총 토큰 수 (TPGS) @ P90 > 50 토큰/초 P90 상호작용성
DeepSeek V4 Pro 1.6T 12 GB300 GPU / 256 83K 58.3 토큰/초
MiniMax M3 428B 2 B300 GPU / 24 70K 74.2 토큰/초
Kimi K3 2.8T 16 GB300 GPU / 48 11.8K 62.7 토큰/초

Opus 5(캐시 히트 가정을 보수적으로 설정) 대비 비용 비교:

모델 GPU TCO/시간 동등한 Opus 5 비용/시간 비용 우위
DeepSeek V4 Pro $27.72 $2,926 106배
MiniMax M3 $4.52 $384 85배
Kimi K3 $36.96 $538 14.6배

이 우위는 >96%의 프리픽스 캐시 재사용으로 인해, 세 모델 모두에서 캐시된 토큰을 저비용 컴퓨팅으로 전환할 수 있기 때문입니다.

배운 교훈 ("쓴" 교훈들)

  • 파이프라인 병렬 처리는 차가운, 긴 프리필에 효과적이지만, 따뜻한, 프리픽스 중심의 턴에서는 버블을 추가합니다. 에이전트 트래픽의 기본 설정으로는 적합하지 않습니다.
  • DCP는 모든 모델에 일반화되지 않습니다 – 복잡한 희소 어텐션 스택을 가진 모델(예: DeepSeek V4)에는 적용되지 않습니다. 병렬 처리는 모델 아키텍처에 맞춰야 합니다.
  • 로드 밸런싱만으로는 부족합니다 – 세션 인식 스티키 라우팅은 캐시 지역성을 유지하며 짧은 턴 간 지연에서 공격적인 큐 깊이 밸런싱보다 우수합니다.

향후 로드맵

  • 제어 영역 라우팅 – 첫 번째 턴(긴 신규 프리필)과 이후 턴(높은 캐시 재사용)을 분리하여 헤드 오브 라인 블로킹을 피합니다.
  • 에이전트 힌트 API – 세션 구조, 도구 호출 지연, 분기 지점에 대한 메타데이터를 수용하여 스케줄링 및 캐시 제거를 안내합니다.
  • 프로그래머블 KV 캐시 – 사용자 정의 프리페치, 제거, 소프트 핀 정책을 위한 인터페이스를 노출합니다.
  • 세션 기반 KV 마이그레이션 – 턴 간 대기 시간 동안 다음 워커로 KV 상태를 프리페치하여 전송 지연을 숨깁니다.

감사의 말

이 작업은 Inferact가 주도하였으며, vLLM 커뮤니티, SemiAnalysis(벤치마크 설계 및 인프라), 그리고 하드웨어 파트너인 NVIDIA와 AMD의 광범위한 기여를 받았습니다.

Sources