BRIEFING
KV Cache를 CPU RAM이나 디스크로 넘기는 것은 실용적인가
KV Cache를 CPU RAM이나 디스크로 넘기는 것은 실용적인가
Scope
핵심 질문
GPU VRAM이 부족할 때 KV Cache를 CPU RAM이나 NVMe로 offload하는 것은 언제 실용적인가?
Draft
가능하지만 메모리를 얻는 대신 latency와 bandwidth 비용을 지불한다.
CPU RAM
별도 메모리를 쓰는 discrete GPU 구성에서는 PCIe를 통해 GPU와 CPU 사이에 KV를 이동해야 하므로 완전히 GPU에 있을 때보다 느릴 수 있다. 통합 메모리 시스템에는 같은 PCIe 이동을 전제할 수 없다. 긴 context 때문에 요청 자체가 불가능한 상황에서는 용량 확보 수단이 될 수 있다.
NVMe
디스크는 RAM보다 훨씬 느리다. 전체 active KV를 매 token 읽는 구조는 일반적으로 병목이 너무 크다.
대신 아주 긴 history의 inactive block을 계층화하거나 cache eviction의 보조 저장소로 사용하는 방식은 가능하다.
언제 쓸까
최대 throughput보다 아주 긴 context 한두 개를 처리하는 것이 목표라면 CPU offload가 유효하다. 고QPS serving에서는 GPU memory 내 cache를 최대화하는 편이 좋다.
결론
CPU RAM은 용량 확장용 compromise가 될 수 있다. 저지연·고QPS 서빙에서 전체 active KV를 매 token NVMe에서 읽는 방식은 병목이 되기 쉽지만, 지연을 감수하는 batch 추론에서는 GPU·CPU·disk 전송을 계획하고 cache를 압축하는 계층화 방식도 후보가 될 수 있다. 실제 선택은 접근 패턴과 대역폭·지연 측정에 달려 있다.