LLM VRAM 최적화 완벽 가이드: KV 캐시부터 vLLM PagedAttention까지

LLM VRAM 최적화 완벽 가이드: KV 캐시부터 vLLM PagedAttention까지






🚀 LLM VRAM 최적화 완벽 가이드: KV 캐시부터 vLLM PagedAttention까지

💡 30초 핵심 요약 (AI Overview)

  • KV 캐시(KV Cache): LLM이 텍스트를 생성할 때 이전 토큰의 연산 결과(Key, Value 벡터)를 저장하여 중복 연산을 방지하는 메모리 기법입니다.
  • OOM 원인: 사용자 수가 늘어나고 문맥(Context)이 길어질수록 KV 캐시가 차지하는 VRAM이 기하급수적으로 팽창하여 메모리 장벽(Memory Wall)을 유발합니다.
  • 해결 방안 1 (아키텍처): MQA(Multi-Query Attention) 및 GQA(Grouped-Query Attention)를 적용한 최신 모델을 사용하여 캐시 크기를 대폭 줄일 수 있습니다.
  • 해결 방안 2 (시스템): OS의 페이징 기법을 차용한 vLLM의 PagedAttention을 도입하여 메모리 파편화를 4% 미만으로 줄이고 처리량을 극대화합니다.

수많은 개발자와 기업들이 오픈소스 거대 언어 모델(LLM)을 활용해 혁신적인 서비스를 구축하고 있습니다. 그러나 초기 프로토타입 단계에서는 잘 작동하던 AI가, 실제 프로덕션 환경에서 트래픽이 몰리기 시작하면 지연 시간이 겉잡을 수 없이 늘어나거나 끔찍한 ‘Out of Memory(OOM)’ 에러를 발생시키곤 합니다. 고가의 GPU 서버를 증설하는 것만으로는 이 문제를 근본적으로 해결할 수 없습니다.

1. 자기 회귀(Autoregressive) 모델과 KV 캐시의 탄생 배경

02 autoregressive model machine learning token generation

LLM의 작동 방식을 이해하는 것은 최적화의 첫걸음입니다. 우리가 주로 사용하는 트랜스포머 기반의 생성형 AI는 한 번에 모든 문장을 만들어내지 않습니다. 이전에 생성된 단어(토큰)들의 시퀀스를 바탕으로 다음에 올 확률이 가장 높은 단어를 순차적으로 예측하는 자기 회귀(Autoregressive) 방식을 따릅니다.

이 과정에서 모델은 새로운 단어를 생성할 때마다 기존 문맥 전체에 대한 ‘어텐션(Attention) 가중치’를 계산해야 합니다. 만약 1,000번째 단어를 예측할 때 앞선 999개의 단어를 처음부터 다시 연산한다면 시간 복잡도는 기하급수적으로 증가할 것입니다.

“KV 캐시는 이러한 비효율성을 타파하기 위한 핵심 기술입니다. 이미 계산이 끝난 이전 토큰들의 Key 벡터와 Value 벡터를 GPU 메모리(VRAM)에 임시로 저장해 두고, 다음 연산 시 불러와 재사용함으로써 연산 속도를 획기적으로 끌어올립니다.”

2. 메모리 장벽: KV 캐시가 VRAM을 잠식하는 공식

03 llm vram memory wall capacity warning

KV 캐시 덕분에 연산 속도는 대폭 향상되었지만, 이는 곧 메모리 장벽(Memory Wall)이라는 새로운 과제를 낳았습니다. 동시 접속자가 늘어나고 처리해야 할 문서의 길이(Context Length)가 길어질수록, VRAM에 저장해야 할 캐시의 크기는 폭발적으로 늘어납니다.

$$ \text{KV Cache VRAM} = 2 \times 2 \times b \times s \times l \times d $$

위 공식에서 각 변수는 다음과 같습니다: 2(Key/Value 2개), 2(FP16의 2바이트), \(b\)(배치 크기), \(s\)(시퀀스 길이), \(l\)(레이어 수), \(d\)(히든 차원 크기). 이 공식에 따르면, 모델의 정적인 파라미터 크기보다 실시간으로 쌓이는 동적 KV 캐시가 VRAM을 더 많이 차지하는 역전 현상이 쉽게 발생합니다.

파운데이션 모델 배치 크기 (Users) 시퀀스 길이 (Tokens) 가중치 VRAM (FP16) KV 캐시 요구량
LLaMA-2 7B 1 4,096 약 14 GB 약 2 GB
LLaMA-2 7B 32 4,096 약 14 GB 약 64 GB

3. 어텐션 구조의 혁신: MQA와 GQA의 등장

04 grouped query attention gqa neural network

VRAM 고갈 문제를 해결하기 위해 AI 학계는 모델의 뼈대 자체를 개조하기 시작했습니다. 기존의 멀티 헤드 어텐션(Multi-Head Attention, MHA)은 Query, Key, Value 헤드가 1:1:1의 비율로 구성되어 있어 메모리 소모가 극심했습니다.

이에 대한 대안으로 하나의 Key-Value 헤드만을 공유하는 Multi-Query Attention (MQA)이 등장했고, 최근에는 MHA의 품질과 MQA의 메모리 효율성을 절충한 Grouped-Query Attention (GQA)이 업계의 표준으로 자리 잡고 있습니다. LLaMA-3나 Mistral 같은 최신 모델들은 GQA를 채택하여 KV 캐시 메모리 사용량을 기존 대비 1/4에서 1/8 수준으로 극적으로 줄였습니다.

4. 시스템 최적화의 정점: vLLM과 PagedAttention

05 vllm pagedattention dynamic memory allocation

모델 아키텍처의 개선과 더불어, 서버 인프라 단에서의 소프트웨어 혁신도 일어났습니다. 기존의 허깅페이스 텍스트 생성 파이프라인은 캐시 메모리를 연속된 공간에 미리 크게 할당하여, 낭비되는 파편화(Fragmentation) 공간이 무려 60~80%에 달했습니다.

이를 타개하기 위해 등장한 것이 바로 UC Berkeley 연구진의 vLLM 엔진과 PagedAttention 기술입니다. 운영체제가 가상 메모리를 고정된 크기의 페이지로 나누어 관리하는 것에서 착안하여, KV 캐시를 작고 불연속적인 ‘블록’ 단위로 VRAM에 동적 할당합니다. 이 방식을 적용하면 메모리 낭비율을 4% 미만으로 최소화할 수 있으며, 한 번에 처리할 수 있는 사용자 요청(Throughput)을 수십 배까지 끌어올릴 수 있습니다.

5. 성공적인 AI 인프라 구축을 위한 제언

06 successful ai software deployment cost optimization

AI 서비스를 단순한 연구용 테스트를 넘어 실제 수익을 창출하는 비즈니스로 발전시키기 위해서는 ‘인프라 경제학’에 대한 깊은 이해가 필수적입니다. 수백만 원에 달하는 GPU 클라우드 비용을 통제하지 못한다면 서비스의 지속 가능성은 요원해질 것입니다.

본 포스팅에서 다룬 바와 같이, 현재 운영 중인 모델이 구형 아키텍처(MHA)를 사용하고 있지는 않은지, 서빙 엔진으로 비효율적인 구형 파이프라인을 사용하고 있지는 않은지 점검해보시기 바랍니다. GQA가 적용된 최신 경량화 모델과 PagedAttention을 지원하는 vLLM의 결합은 여러분의 서비스 속도를 혁신하고 클라우드 비용 청구서를 극적으로 다이어트시켜 줄 확실한 열쇠가 될 것입니다. 긴 호흡으로 튼튼한 AI 기반을 다져나가시길 응원합니다.