vLLM vs SGLang, 그리고 prefill/decode 분리: LLM 서빙의 표준 아키텍처가 바뀐다
Disaggregated Prefill-Decode Serving with vLLM & SGLang
대규모 LLM 추론에서 prefill(입력 프롬프트 전체 처리)과 decode(토큰 1개씩 생성)를 같은 인스턴스에 두지 않고 물리적으로 분리하는 'disaggregated serving'이 2026년 사실상 표준 패턴으로 올라섰다. 이유는 두 단계의 병목이 다르기 때문이다. prefill은 compute-bound라 큰 배치로 묶을수록 유리하고, decode는 memory-bandwidth-bound이면서 지연에 민감하다. 한 인스턴스에 섞으면 서로의 SLA를 깎아먹는다. vLLM은 prefill·decode를 각각 별도 인스턴스로 띄우고 --kv-transfer-config로 KV 캐시 전송 커넥터(NIXL, LMCache, 공유메모리)를 지정한다. SGLang은 라우터의 --disaggregation-mode로 prefill 워커·decode 워커·라우터를 구성하고 Mooncake/NIXL 백엔드를 지원하며, GB200 NVL72 클러스터에서 디코딩 처리량 2.7배를 보고했다. Meta·LinkedIn·Mistral·HuggingFace가 이미 vLLM 기반 분리 서빙을 프로덕션에서 돌리고 있고, LMSYS는 H100 96장(prefill 3노드+decode 9노드)으로 DeepSeek-R1 분리 서빙을 시연했다.
이 아키텍처는 '추론 처리량 2배'가 마케팅 문구가 아니라 하드웨어 활용의 구조적 개선이라는 점에서 중요하다. 한 대 GPU 자체 서빙 단계를 넘어 여러 장으로 스케일하는 순간, prefill/decode를 안 나누면 비싼 GPU를 절반만 쓰는 셈이다. 다만 KV 캐시를 인스턴스 간 전송하는 네트워크(NIXL 같은 RDMA 백엔드)가 새 병목이자 운영 복잡도가 되므로, 자체 LLM을 운영하려는 팀은 vLLM/SGLang 중 KV 전송 커넥터 생태계를 먼저 점검해야 한다.
원문 출처
vLLM Docs / SGLang / Spheron