vllm-project/router

A high-performance and light-weight router for vLLM large scale deployment

해결하는 문제

vLLM을 대규모로 실행할 때 많은 워커 인스턴스가 초당 수천 개의 요청을 처리합니다. 스마트 라우터가 없으면 트래픽이 고르지 않게 분산되어 일부 워커는 과부하되고 다른 워커는 유휴 상태가 될 수 있으며, 반복되는 프롬프트는 동일한 접두사를 다시 계산하여 컴퓨팅을 낭비합니다. vLLM Router는 요청을 지능적으로 분산하고 다중 턴 세션을 동일한 워커에 유지하며 프리필 단계(프롬프트 읽기 및 분석)와 디코드 단계(토큰 생성)를 분리하여 하드웨어 사용을 최적화하는 경량 전달 계층 역할을 함으로써 이 문제를 해결합니다.

작동 방식

라우터는 vLLM 워커 앞에 위치하며 OpenAI 호환 API 호출을 수신합니다. 각 요청에 가장 적합한 워커를 선택하기 위해 라운드 로빈, 랜덤, 일관된 해싱(세션/사용자를 동일한 워커로 라우팅), 2의 거듭제곱(두 개의 무작위 워커 중 가장 부하가 적은 워커 선택), 캐시 인식(접두사 캐시 재사용률이 가장 높은 워커로 요청 라우팅) 등 여러 로드 밸런싱 정책 중 하나를 사용합니다. 프리필/디코드 분리의 경우 프리필 및 디코드 워커 풀을 별도로 유지하고 각 단계를 적절히 라우팅합니다. 또한 지수 백오프가 포함된 재시도 로직, 워커를 보호하기 위해 자동으로 열리고 닫히는 회로 차단기, Prometheus 메트릭, 선택적 Kubernetes 서비스 디스커버리를 포함합니다. 활성화되면 요청을 vLLM의 Rust gRPC 워커(grpc:// URL 사용)로 전달할 수 있으며, 사용자 정의 요청 시 미들웨어(예: 입력 검증 또는 변환)를 실행하기 위해 WASM 플러그인을 로드할 수 있습니다.

대상 사용자

이 라우터는 vLLM을 대규모로 배포하는 팀, 특히 Kubernetes에서 많은 복제본을 실행하거나 프리필과 디코드에 특수 하드웨어를 사용하는 팀을 위한 것입니다. 다중 턴 채팅이 많은 워크로드(세션 고정 유지), 퓨샷 또는 에이전트 루프와 같은 반복 프롬프트(캐싱 활용), 재시도, 회로 차단, 메트릭에 대한 세밀한 제어가 필요한 고처리량 서비스에 적합합니다.

주요 기능

  • 여러 로드 밸런싱 정책: 라운드 로빈, 랜덤, 일관된 해시, 2의 거듭제곱, 캐시 인식.
  • NIXL, NCCL, Mooncake 커넥터를 지원하는 프리필/디코드 분리.
  • Kubernetes 서비스 디스커버리가 레이블 선택기를 통해 워커 포드를 자동으로 찾습니다.
  • 엔터프라이즈급 복원력: 지수 백오프 및 지터가 있는 재시도, 구성 가능한 상태 머신을 갖춘 회로 차단기.
  • gRPC 백엔드 지원으로 요청을 vLLM의 Rust Inference 워커로 라우팅.
  • 보호된 경로에서 사용자 정의 요청 처리를 위한 선택적 WASM 미들웨어.
  • 모니터링을 위한 Prometheus 메트릭 엔드포인트.
  • 경량 및 고성능, Rust로 작성되었으며 Python 런처 사용 가능.

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • 프로젝트
  • Dispatch