vLLM GLM 5.3 최적화: Hybrid HiSparse Offloading

vLLM은 단일 8× H200 노드와 같이 메모리가 제한된 환경에서 GLM 5.3 서빙을 최적화하기 위해 Hybrid HiSparse offloading을 도입했습니다. 이 최적화를 통해 GLM 5.3은 100만 토큰의 전체 컨텍스트 길이를 실행할 수 있으며, 컨텍스트가 시간이 지남에 따라 길어지는 에이전트 워크로드의 동시성을 크게 향상시킵니다.

에이전트 워크로드에서의 KV Cache 압박 해결

에이전트 워크로드는 일반적으로 길고 계속해서 길어지는 컨텍스트를 가진 많은 동시 요청을 포함합니다. 표준 GPU 서빙에서는 고정된 GPU 블록 풀이 결국 KV cache를 위한 공간이 부족해지며, 이는 다음과 같은 두 가지 전통적인 해결책과 그에 따른 상당한 단점을 초래합니다:

  • Preemption: 요청의 KV cache를 드롭하고 나중에 다시 prefilling을 수행하는 것으로, 이로 인해 요청은 전체 Time to First Token (TTFT) 페널티를 다시 지불해야 합니다.
  • Offloading: 블록을 호스트 메모리로 이동하는 것입니다. 그러나 dense attention은 모든 토큰이 GPU에 상주해야 하므로, 동시성은 여전히 GPU 메모리에 의해 제한됩니다.

Hybrid HiSparse는 sparse-MLA KV cache의 희소성을 활용하여 이러한 제한을 해결합니다. 인덱서가 attention을 위해 top-K 토큰만을 선택하는 동안, Hybrid HiSparse는 용량이 있는 한 KV cache를 GPU에 유지합니다. 시스템이 KV cache 압박에 직면하면, "가장 오래된(coldest)" 페이지를 CPU로 offload하고, 선택된 top-K 토큰만을 GPU 상주형 "hot buffers"에 유지합니다.

Hybrid HiSparse의 기술적 구현

Hybrid HiSparse는 시스템 압박에 따라 세 가지 distinct한 상태를 통해 KV 상주성을 관리합니다:

1. Full Residency

모든 sparse-MLA KV가 GPU에 상주합니다. 완료된 prefix 페이지는 압박 단계에서 추가적인 복사가 필요하지 않도록, 향후 발생할 수 있는 eviction을 대비하여 호스트 메모리로 선제적으로 복사됩니다.

2. Mixed Residency

GPU 메모리가 부족할 때, 요청의 tail 부분은 GPU에 남고, 오래된 페이지는 CPU 메모리로 이동됩니다. 시스템은 top-K 토큰을 해결하기 위해 fused kernel을 사용합니다: 상주하는 토큰은 제자리에서 읽히고, hot buffers에 있는 토큰은 LRU entry가 갱신된 상태로 읽히며, miss가 발생하면 pinned host memory에서 LRU slot으로 단일 행을 복사합니다. 이 프로세스는 decode path의 결정이 CPU를 기다리지 않으므로 CUDA-graph-capturable 상태를 유지합니다.

3. No Residency

CPU 메모리에만 존재하는 prefix를 재사용하는 새로운 요청의 경우, 시스템은 placeholder와 hot page로 시작합니다. 인덱서가 토큰을 선택할 때만 행이 로드되므로, 모델이 실제로 attention을 수행하는 토큰에 대해서만 메모리 비용을 지불하게 됩니다.

메모리 관리 및 통합

Hot buffers는 별도의 할당이 아니라 vLLM의 Hybrid Memory Allocator (HMA) 풀에서 임대된 일반적인 KV-cache 블록입니다. 이를 통해 한 요청에 의해 해제된 블록을 다른 요청의 hot-buffer 용량으로 재사용할 수 있습니다. 효율성을 유지하기 위해, hot buffers는 요청당 기본적으로 2× top-K 행으로 설정됩니다.

8× H200에서의 성능 벤치마크

vLLM은 OpenHands multi-turn 에이전트 워크로드를 사용하여 GLM 5.3의 성능을 벤치마크했습니다 (13-turn 대화, 첫 번째 턴의 74,160-token, 그리고 이후 753-token 턴들). 설정은 TP8, MTP3, FP8 KV cache, 그리고 142K admission limit를 사용했습니다.

Hybrid HiSparse (384 GiB HiSparse pool과 128 GiB offloading pool 사용)를 표준 offloading baseline (512 GiB pool)과 비교했을 때, 결과는 Hybrid HiSparse가 더 높은 동시성과 더 나은 interactivity-throughput trade-offs를 보여줌을 입사합니다. 요청이 빈 슬롯이 생길 때까지 기다려야 할 수도 있는 표준 offloading과 달리, Hybrid HiSparse는 요청이 partial residency 상태에서 디코딩을 계속할 수 있게 합니다.

vLLM 생태계와의 통합

Hybrid HiSparse는 공유 HMA pool에 대한 residency policy로 설계되었으며, 기존 vLLM 기능과 통합됩니다:

  • Prefix Caching: 다른 cache groups는 표준 prefix caching 및 offloading을 계속 사용합니다.
  • P/D Disaggregation: Prefill/Decode disaggregation에서 가져온 데이터는 prefix가 상주형 메모리에 맞지 않을 경우 호스트 측에 위치할 수 있습니다.
  • Speculative Decoding: 요청의 hot state를 공유하는 per-step replayable resolver plans를 통해 작동합니다.

Hybrid HiSparse는 vLLM v0.30에서 널리 사용할 수 있도록 계획되어 있습니다. 현재 NVIDIA GPU를 위해 구현되었습니다.

Sources