KVQuant: 8GB RAM 환경에서 실시간 KV 캐시 압축을 통한 70B LLM 실행
요약
KVQuant는 대규모 언어 모델(LLM) 실행 시 발생하는 메모리 병목 현상, 특히 KV 캐시의 과도한 크기 문제를 해결하기 위해 개발된 라이브러리입니다. 이 도구는 위치별 적응형 양자화 기법을 사용하여 실시간으로 KV 캐시를 압축하며, 이를 통해 8GB RAM과 같은 제한적인 환경에서도 70B와 같은 초대형 모델을 구동할 수 있게 합니다.
핵심 포인트
- LLM 실행 시 메모리 병목 현상은 모델 가중치보다 컨텍스트가 길어질수록 커지는 KV 캐시에서 주로 발생한다.
- KVQuant는 위치별 적응형 양자화(per-position adaptive quantization)를 적용하여 KV 캐시를 실시간으로 압축한다.
- 이 기술을 사용하면 4~6배의 높은 압축률을 달성하면서도, 모델 성능 저하(퍼플렉시티 증가)는 1% 미만으로 유지할 수 있다.
- 사용자는 간단한 `compressor.wrap(model)` 구문을 통해 제한된 메모리 환경에서 대형 LLM을 효율적으로 실행할 수 있다.
저는 게임용 노트북에서 70B 파라미터 모델을 실행하고 싶어서 KVQuant 를 개발했습니다. 문제는 무엇일까요? 4-bit 양자화 (quantization) 를 적용하더라도 128K 컨텍스트 윈도우 (context window) 는 KV 캐시 (KV cache) 만 위해 256GB 의 RAM 을 필요로 합니다.
문제점
LLM 을 실행할 때 메모리 병목 현상 (memory bottleneck) 은 모델 가중치 (model weights) 가 아니라 KV 캐시에 있습니다.
| 모델 | 모델 가중치 (4-bit) | KV 캐시 (128K 컨텍스트) | 총 필요 메모리 |
|---|---|---|---|
| Llama-3-8B | 5GB | 64GB | 69GB |
| Llama-3-70B | 40GB | 256GB | 296GB |
해결책
KVQuant 는 위치별 적응형 양자화 (per-position adaptive quantization) 를 사용하여 KV 캐시를 실시간으로 압축합니다.
결과: 4~6 배의 압축률과 1% 미만의 퍼플렉시티 (perplexity) 증가.
사용법
from kvquant import KVQuant
compressor = KVQuant(target_memory_gb=8)
model = compressor.wrap(model)
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기