vLLM과 TileRT 통합으로 지연 민감한 서빙

vLLM과 TileRT 통합으로 지연 민감한 서빙

vLLM은 플러그 가능한 디코드 엔진으로 TileRT 0.1.5를 통합하여 사용자가 vLLM의 프리필 기능과 TileRT의 전문 디코드 속도를 결합할 수 있도록 합니다. 이 통합은 실시간 음성, 인터랙티브 코딩 어시스턴트, 에이전틱 루프와 같은 지연 민감한 워크로드가 vLLM 생태계의 운영 성숙도, API, 스케줄링을 희생하지 않고 최대 per-user 토큰 생성 속도를 달성할 수 있게 합니다.

플러그 가능한 디코드 아키텍처

계산에 제한된 프리필 단계와 메모리 대역폭에 제한된 디코드 단계를 분리하는 disaggregated serving을 활용하여, vLLM은 디코드 측을 플러그 가능하게 만듭니다. TileRT 통합은 vLLM V1의 공개 커넥터 인터페이스(KVConnectorBase_V1)를 통해 이루어지며,これにより vLLM 소스 코드를 수정하거나 포크를 만들지 않고 배포에 TileRT 디코드 풀을 추가할 수 있습니다.

통합의 주요 구성 요소

  • vLLM Prefill: 스케줄링, 청크된 프리필, 프리픽스 캐싱을 처리합니다.
  • vLLM Serving Surface: OpenAI 호환 API, 요청 형식, 기존 툴링을 유지합니다.
  • TileRT Decode: per-user 디코드 속도를 하드웨어 한계까지 끌어올리도록 설계된 전문 추론 런타임입니다.
  • MultiConnector: 단일 주식 vLLM 프리필 풀이 고처리량을 위한 네이티브 vLLM 디코드 풀과 저지연을 위한 TileRT 디코드 풀 모두를 제공할 수 있도록 합니다.

요청 라우팅 및 핸드오프

네이티브 디코드 풀과 전문 디코드 풀 간의 공존을 유지하기 위해 시스템은 가벼운 라우터와 특정 클레임 필터링 메커니즘을 사용합니다.

라우팅 메커니즘

지연 민감한 트래픽에 대해 라우터는 max_tokens=1을 설정하여 vLLM이 프리필을 수행하고 첫 번째 토큰을 내보내도록 합니다.その後 kv_transfer_params를 통해 대상 디코드 노드 정보를 연결합니다(구체적으로 tilert_hosttilert_ctrl_port). 일반 트래픽은 표준 disaggregation 프록시를 통해 수정되지 않은 상태로 계속 흐릅니다.

데이터 플레인과 상태 전송

vLLM 프리필에서 TileRT 디코드로의 핸드오프는 빠르고 비차단적으로 설계되었습니다:

  • RDMA Transfer: 압축된 KV, 희소 어텐션 인덱스 캐시, 메타데이터로 구성된 어텐션 상태는 Mooncake 또는 NIXL 중 하나를 사용하여 사전 등록된 GPU 버퍼로 RDMA 단측 쓰기를 통해 이동됩니다.
  • Prefill Overlap: 상태 추출은 포워드 윈도우 내에서 발생하며, 캐시 블록이 재활용되기 전에 상태가 스테이징 버퍼로 복사되고 백그라운드 송신자가 네트워크 전송을 처리합니다.これにより TileRT-bound 요청이 후속 프리필 반복을 차단하지 않도록 보장합니다.
  • Immediate Execution: 도착 시, 상태는 TileRT의 네이티브 레이아웃으로 변환되어 실행 중인 엔진에 주입되며, 여기서 다중 토큰 추측 디코딩이 즉시 시작됩니다.

성능 및 사용 사례 선택

디코드 풀 간 선택은 워크로드의 특정 요구 사항에 따라 달라집니다:

  • TileRT 디코드 사용: per-user 토큰 속도가 주요 제약 조건인 경우(예: 인터랙티브 에이전트, latency-SLO 추론) 및 모델이 지원되는 경우.
  • 네이티브 vLLM 디코드 사용: 최대 집계 처리량, 높은 동시성 배치, 광범위한 모델/기능 지원이 필요한 경우.

현재 제한 사항 및 지원

TileRT 0.1.5 기준으로, TileRT 디코드 노드는 라우터가 게이트된 디스패치와 백프레셔를 관리하면서 한 번에 하나의 진행 중인 요청만 처리합니다. 현재 지원되는 모델은 GLM-5/5.1DeepSeek-V3.2입니다.

구현 및 설정

TileRT 풀을 배포하려면 PyPI 또는 GitHub를 통해 TileRT 0.1.5를 설치해야 합니다. 이 과정은 세 가지 주요 단계로 구성됩니다:

  1. Weight Conversion: weight_converter 모듈을 사용하여 Hugging Face 체크포인트를 TileRT의 가중치 형식으로 변환합니다.
  2. Decode Server Launch: MTP(멀티 토큰 예측) 및 KV 캐시 dtype에 대한 특정 구성으로 decode_server를 시작합니다.
  3. vLLM Prefill Configuration: --kv-transfer-configTileRTConnector 플러그인을 지정하여 vllm serve를 실행하고, speculative-configmtp로 설정되어 프리필 노드가 디코드 측 추측을 위한 드래프트-레이어 KV를 채우도록 합니다.

Sources