KV 캐시 비용: 왜 추론 서버는 계산 전에 메모리 부족으로 멈추는가

Published · AI Daily — AI-assisted deep research, methodology & disclosure

거대 언어 모델 서빙을 위한 VRAM 예산 공식과 메모리 부족을 유발하는 3가지 트래픽 패턴에 대응하는 3가지 최적화 전략을 소개합니다.

배경

대형 언어 모델 추론 서비스를 배포할 때 엔지니어가 가장 당황하는 현상이 있다. GPU의 계산 사용률이 가득 차기 전에 서비스가 이미 VRAM 부족(OOM)으로 충돌한다는 것이다. 계산 자료가 부족하면 요청을 대기열에 넣어 기다리면 되지만, VRAM은 물리적 한계가 있어 한계를 넘으면 프로세스가 즉시 종료된다. 이 현장의 장본인은 오랫동안 간과되어 온 KV 캐시다. 디코딩 단계에서 각 트랜스포머 레이어의 키·밸류 텐서는 새롭게 생성되는 토큰마다 반복적으로 읽혀야 한다. 매번 다시 계산하면 계산 비용이 지수적으로 폭발하기 때문에, 주요 추론 프레임워크는 이를 VRAM에 저장해 계산량을 절약한다. 문제는 이 KV 캐시가 문맥 길이와 동시 요청 수에 비례해 늘어난다는 점이다.

이 문제의 규모를 파악하려면 VRAM 예산 공식을 보면 된다. 배치 내 KV 캐시 총 사용량은 배치 크기·시퀀스 길이·레이어 수·주두(dim) 크기와 데이터 타입 바이트 수를 곱한 것과 대략 같다. 여기서 세 개의 레버가 드러난다. 배치 크기, 시퀀스 길이, 모델 아키텍처 파라미터다. 70B 파라미터·32레이어·128주두 모델이 FP16로 동작할 때, 단일 시퀀스가 토큰 하나 늘어날 때마다 수백 KB의 VRAM이 추가로 소모된다. 수십 개의 동시 요청이 각각 수만 토큰을 담고 있으면 KV 캐시 사용량은 빠르게 모델 가중치 자체를 뛰어넘는다.

심층 분석

세 가지 트래픽 패턴이 서로 다른 메커니즘으로 OOM을 유발한다. 첫째는 긴 문맥 패턴으로, 문서 질문답변이나 코드베이스 분석처럼 시퀀스 길이가 극도로 커지는 경우다. 여기에는 양자화가 직접 대응한다. KV 캐시를 FP16에서 INT8, 심지어 INT4로 압축하면 메모리 사용량을 거의 비례적으로 줄이면서도 생성 품질 손실은 미미하다.

둘째는 돌발 동시 패턴으로, 세일이나 바이럴 이벤트로 인한 순간적 요청 폭주다. 배치 크기가 순식간에 높아지는데, 정적 배치를 쓰면 안전을 위해 배치를 너무 작게 잡아 통吞吐가 낮아지거나, 한 번에 너무 많은 요청을 받아 바로 OOM이 된다. 이때는 vLLM 등이 사용하는 PagedAttention 기술인 페이지드 KV 캐시가 정답이다. 각 시퀀스의 KV 캐시를 고정 크기 페이지로 나눠 필요할 때 할당하고 가득 차면 회수하므로, OOM을 막기 위해 예약해 둔 메모리 단편이 사라지고 VRAM 사용률을 50% 미만에서 90% 이상으로 끌어올린다.

셋째는 혼합 부하 패턴으로, 긴 문맥과 돌발 동시가 동시에 존재하는 실제 프로덕션 환경이다. 단일 전략으로 둘을 모두 처리할 수 없으므로 양자화와 페이지딩에 메모리 회수와 요청 스케줄링을 결합한다. 유휴 요청의 KV 캐시를 스왑해 내보내고, 요청 우선순위에 따라 배치 크기를 동적으로 조정하며, 메모리가 빡빡할 때는 저우선순위 요청을 적극적으로 버린다. 이런 다층적 거의로 예측 불가능한 조건에서도 안정적인吞吐를 유지할 수 있다.

산업 영향

KV 캐시 메모리 관리는 이제 엔지니어링 세부사항에서 추론 서비스 경쟁력의 핵심 요소로 부상했다. 클라우드 업체에게 단일 카드당 동시吞吐를 극대화하면 사용량 기반 시장에서 더 낮은 단가 제공이 가능해지고, 이는 곧 추론 사업의 이익률을 직접 결정한다. 응용 개발자에게는 KV 캐시 패턴을 이해해야 단일 카드가 몇 개의 동시 요청을 지탱할 수 있는지 정확히 추정하고, 예측 불가능한 프로덕션 실패를 피할 수 있다. 특히 에지 AI에서는 문제가 더 예리하다. 에지 디바이스의 메모리는 데이터센터보다 훨씬 제한적이어서, 양자화와 페이지딩의 효과가 제한된 하드웨어에서 더 크게 증폭되기 때문이다.

이것이 최근 추론 최적화 연구가 순수 모델 정확도 추구에서 메모리 효율과吞吐의 균형으로 전환되는 이유를 설명한다. 실제 프로덕션에서吞吐를 막는 병목은 GPU 계산 속도가 아니라 KV 캐시에 채워진 VRAM이다. 메모리 예산을 극한까지 쓰는 엔지니어가 동일한 하드웨어에서 더 높은吞吐와 더 낮은 비용을 달성하며, 이것이 대형 모델 배포 경쟁에서 진짜 격차를 만드는 지점이다.

전망

주목할 몇 가지 신호가 있다. 첫째, 양자화 기술의 지속적 하향이다. KV 캐시 양자화가 INT8에서 더 미세한 정밀도로 진화하면서도 품질 손실을 통제 가능한 범위로 유지하며 메모리 사용량을 추가로 압축한다. 둘째, 메모리 회수와 스케줄링의 지능화다. 미래 스케줄러는 실시간 트래픽을 예측해 메모리 압력을 사전에 판단하고 요청을 미리 대기열에 넣거나 evict하여 OOM을 수동 대응에서主動 회피로 바꾼다. 셋째, 추론 프레임워크가 아키텍처 차원에서 메모리 효율을 일등 시민으로 격상시켜 양자화·페이지딩·회수를 더 원생적으로 통합한다는 것이다.

종사자가 경계해야 할 인식의 함정은 추론 성능 문제를 단순히 계산량 부족으로 돌리는 것이다. 현실에서 GPU 계산 속도는 거의 제한 요인이 아니며, KV 캐시에 채워진 VRAM이 동시성을 올리지 못하게 막는다. 메모리 예산을 극한까지 쓰는 자가 같은 실리콘 위에서 더 높은吞吐와 더 낮은 비용을 내며 배포 경쟁에서 이긴다.

Sources

FAQ

왜 추론 서버는 계산 자원을 다 쓰기도 전에 메모리 부족(OOM)으로 멈추는 것인가요?

디코딩 시 KV 캐시는 계산량을 절약하기 위해 각 Transformer 레이어의 Key/Value 텐서를 캐시하지만, 사용량은 컨텍스트 길이와 동시 요청수에 비례하여 증가하며 모델 가중치처럼 양자화할 수 없어 계산이 다 닳기 전에 VRAM을 채웁니다.

왜 KV 캐시의 메모리 사용이 병목이 되는 것인가요?

동시 요청이 늘어나고 각 요청이 수만 토큰을 담으면, KV 캐시 사용량은 빠르게 모델 가중치보다 커져 제한된 VRAM 환경에서 스루풋과 단일 카드가 지킬 수 있는 요청 수를 제한하는 주요인이 됩니다.

KV 캐시의 메모리 압력에 대한 미래 최적화 방향은 무엇인가요?

양자화는 INT8보다 낮은 정밀도로 품질 손실을 통제하며 발전하고, 메모리 회수와 스케줄링은 실시간 트래픽으로 압력을 예측해主动적으로 排氣나 換出을 수행하며, 추론 프레임워크도 메모리 효율을 우선 요소로 내장합니다.