KV OffloadingKV 오프로딩
쉽게 이해하기
LLM 추론에서 attention의 Key/Value(KV) 캐시는 프롬프트를 읽는 동안 생성되는 중간 텐서다. 긴 컨텍스트나 동시 요청이 많을 때 이 KV가 GPU 메모리를 빠르게 채워 재계산·축출이 늘고 지연과 처리량이 악화된다. KV 오프로딩은 자주 쓰지 않는 KV를 GPU 밖(주로 CPU DRAM)으로 옮겨두었다가 필요할 때만 다시 불러오는 방식으로 이 문제를 완화한다. 이렇게 하면 GPU는 활성 토큰 처리에 집중하고, 재사용 가능한 KV는 외부 계층에서 보관·재적재되어 불필요한 재계산을 줄일 수 있다. 대표 구현인 vLLM은 커넥터(Connector) 인터페이스를 통해 요청 흐름 전·후에 KV를 외부 계층으로 비동기 저장/적재하도록 구성할 수 있다.
비유와 예시
- IDE 코드 도우미가 공통 헤더가 긴 파일을 반복 분석할 때, 해당 접두사의 KV를 CPU에 보관했다가 다시 열면 재계산을 피한다.
- 문서 QA에서 여러 사용자가 같은 문서 묶음을 질의할 때, 서문/목차 구간의 KV를 CPU 계층에 유지해 여러 세션에서 재사용한다.
- 분석 대시보드가 유사한 템플릿 프롬프트를 반복 실행할 때, 첫 실행에서 만든 KV를 저장해 다음 변형 실행에서 불러온다.
한눈에 비교
| GPU 전용 KV 캐시 | CPU 오프로딩 | 매번 재계산 | |
|---|---|---|---|
| 유효 용량 | GPU 메모리에 제한 | DRAM로 확장 가능 | 캐시 없음 |
| 재적재 지연 | 매우 낮음 | 낮음(호스트-디바이스 전송) | 높음(처음부터 계산) |
| 적합 사례 | 짧은 컨텍스트, 낮은 동시성 | 긴 컨텍스트, 높은 동시성/재사용 | 재사용 거의 없음 |
| 프리엠션 대응 | 축출 시 재계산 | CPU에서 재적재 | 재계산 |
| 운영 복잡도 | 낮음 | 중간(전송·정책 필요) | 낮음 |
오프로딩은 작은 전송 비용을 감수하고 더 큰 캐시 용량과 재사용 범위를 얻어, 동일한 GPU로 더 긴 입력과 더 많은 세션을 감당하도록 돕는다.
어디서 왜 중요한가
- vLLM 커넥터로 KV를 CPU DRAM 같은 외부 계층에 비동기로 저장/적재해, 프리엠션 후 재계산을 줄이고 TTFT 안정화와 처리량 개선을 노린다.
- LMCache, NVIDIA Dynamo 문서에 소개된 백엔드 등을 통해 워크로드에 맞는 저장 매체(로컬 DRAM, 디스크, 원격 계층)를 선택할 수 있다.
- 운영 관점에서 GPU 메모리만 확장하는 대신, CPU 버퍼 크기·정책·히트율을 튜닝하는 것이 주요 지렛대가 된다.
자주 하는 오해
- 오해: 오프로딩은 항상 지연을 늘린다 → 실제: 비동기 전송을 쓰면 사용자 응답과 병렬로 복사되어 체감 지연 영향이 작다.
- 오해: 접두사가 같을 때만 효과가 있다 → 실제: 높은 동시성과 프리엠션 환경에서도 재계산 회피로 이득이 있다.
- 오해: GPU 메모리를 늘리면 대체된다 → 실제: 긴 컨텍스트·다중 사용자에서는 계층형 캐시가 비용과 확장성 측면에서 유효하다.
대화에서는 이렇게
- "CPU 오프로딩 버퍼를 늘리고 히트율과 큐 대기시간을 같이 보죠."
- "프리엠션이 잦으니 비동기 로드/스토어가 제대로 중첩되는지 스케줄러 스톨을 확인해 주세요."
- "접두사 재사용이 많아 TTFT 변동이 크네요. 커넥터 히트 경로 최적화를 우선합니다."
- "원격 계층은 콜드 KV에만 쓰고, 액티브 재사용은 DRAM에 유지합시다."
함께 읽으면 좋은 용어
참고 자료
- AIBrix KVCache Offloading Framework
DRAM 기반 L1과 원격 L2로 확장하는 오프로딩 설계.
- KV Cache Offloading | NVIDIA Dynamo Documentation
KVBM·LMCache 등 백엔드와 배포 스크립트 개요.
- KV Cache Offloading — vLLM Production Stack (LMCache)
LMCache로 CPU 오프로딩 설정 예시와 배포 가이드.
- vllm.v1.kv_offload API reference
vLLM v1의 KV 오프로딩 모듈과 구성요소 설명.
- Inside vLLM’s New KV Offloading Connector
CPU 오프로딩 동기와 비동기 커넥터, 벤치마크 개요.