← 주제 탐구

주제 탐구 · 2026-10-19 · 심화

양자화와 KV 캐시: 모델을 가볍게 돌리는 두 갈래

LLM 추론의 병목은 계산보다 메모리인 경우가 많고, 이 메모리는 모델 가중치와 KV 캐시라는 두 곳에서 나간다. 양자화는 숫자의 정밀도를 낮춰 두 곳을 모두 줄이고, PagedAttention 같은 메모리 관리 기법은 KV 캐시에서 새는 공간을 막는다.

목차

보기·듣기

양자화와 KV 캐시: 거대 AI를 좁은 PC에 구겨 넣는 방법 · NotebookLM(으)로 만든 AI 생성 콘텐츠 · YouTube
핵심 정리
  • LLM을 돌리면 GPU 메모리가 가중치와 KV 캐시로 나뉘어 쓰이므로, 모델을 가볍게 하려면 두 곳을 따로 다뤄야 한다.
  • GPTQ는 2차 정보로 반올림 오차를 메워 175B 모델을 3~4비트로 줄였고, AWQ는 활성값을 보고 중요한 1% 채널을 보호하는 방식으로 접근했다.
  • PagedAttention은 운영체제의 페이징처럼 KV 캐시를 블록 단위로 관리해 낭비를 거의 없앴고, 같은 지연에서 처리량을 2~4배 높였다.
  • 최근 연구는 '몇 비트로 줄이나'보다 '정해진 비트 예산을 어디에 나눠 쓰나'에 집중한다. KV 캐시 채널, 층·토큰, MoE 전문가별 배분이 그 예다.
  • 양자화 이득은 하드웨어 지원, 보정 데이터, 측정 지표에 따라 크게 달라지므로 논문 수치를 내 서비스 성능으로 바로 옮기면 안 된다.

왜 필요했나: 계산보다 메모리가 먼저 바닥난다

대규모 언어 모델(LLM)을 돌릴 때 가장 먼저 부딪히는 벽은 연산 속도보다 메모리다. GPTQ논문 논문은 GPT3-175B의 파라미터를 16비트 부동소수점(FP16)으로만 저장해도 326GB를 차지한다고 짚는다. 가장 큰 GPU 한 장의 메모리(VRAM)보다도 크니, 추론에도 GPU 여러 장을 묶는 비싸고 복잡한 구성이 필요했다.

메모리를 쓰는 곳은 가중치만이 아니다. 모델은 글을 한 토큰씩 만들면서, 앞선 토큰마다 계산해 둔 키(Key)와 값(Value) 벡터를 다시 계산하지 않으려고 저장해 둔다. 이 저장소가 KV 캐시다. 대화가 길어지고 동시에 처리하는 요청이 늘수록 KV 캐시도 함께 커진다. PagedAttention논문 논문은 요청마다 KV 캐시가 매우 크고, 생성 도중 늘었다 줄었다 하기 때문에 관리를 잘못하면 단편화(조각난 빈 공간)와 중복 복사로 메모리가 크게 낭비되고, 그만큼 한 번에 묶어 처리할 수 있는 요청 수(배치 크기)가 줄어든다고 설명한다.

그래서 '모델을 가볍게' 하려면 두 가지 질문에 답해야 한다. 가중치를 어떻게 작게 담을까, 그리고 KV 캐시를 어떻게 작게, 낭비 없이 담을까. 앞의 질문에는 주로 양자화가, 뒤의 질문에는 양자화와 메모리 관리 기법이 함께 답한다.

GPU 메모리는 어디에 쓰이나

GPU 메모리(예시)

모델 가중치KV 캐시단편화·중복 낭비

추론 중 GPU 메모리를 나눠 쓰는 모습을 그린 예시다. 칸 크기는 실제 비율이 아니며, 관리가 서툴면 KV 캐시 쪽에서 단편화 낭비가 생긴다.

핵심 아이디어: 덜 정밀하게 적고, 빈틈없이 꽂는다

양자화(Quantization)는 숫자를 적는 자릿수를 줄이는 일이다. 16비트로 적던 가중치를 4비트로 적으면 같은 모델이 대략 4분의 1 공간에 들어간다. 대신 표현할 수 있는 값의 눈금이 성겨지므로, 원래 값을 가장 가까운 눈금으로 옮길 때 오차가 생긴다. 양자화 연구의 대부분은 이 반올림 오차를 모델 품질에 덜 해롭게 만드는 방법에 관한 것이다.

비유하자면 이삿짐을 줄이는 일과 비슷하다. 양자화는 두꺼운 양장본을 문고판으로 바꿔 책 자체의 부피를 줄이는 것이고, 이때 중요한 책 몇 권은 글자가 뭉개지지 않게 신경 써야 한다. PagedAttention은 책장을 정해진 크기의 칸으로 나눠, 책이 늘어날 때마다 아무 빈 칸에나 꽂고 목록으로 위치만 기억하는 방식이다. 책마다 미리 넓은 자리를 통째로 비워 두지 않아도 되니 빈 공간이 덜 남는다.

두 접근은 서로 바꿔 쓰는 관계가 아니라 함께 쓰는 관계다. 가중치를 양자화해 남은 메모리를 KV 캐시에 더 내주고, KV 캐시 자체도 양자화하고 블록 단위로 관리하면, 같은 GPU에서 더 긴 문맥과 더 많은 동시 요청을 받을 수 있다.

어떻게 작동하나: 가중치 쪽과 KV 캐시 쪽

가중치 양자화는 보통 학습이 끝난 모델에 한 번에 적용한다. 이를 사후 학습 양자화(PTQ, Post-Training Quantization)라 부른다. GPTQ논문는 모델을 다시 학습시키는 방식은 수십억 파라미터 규모에서 너무 비싸기 때문에, 적은 데이터와 몇 시간의 계산만으로 끝나는 사후 방식이 거대 모델에 특히 매력적이라고 설명한다. 흐름은 대략 이렇다. ① 소량의 보정(calibration) 데이터를 모델에 흘려 각 층의 입력이 어떻게 생겼는지 본다. ② 층별로 가중치를 낮은 비트 눈금에 맞춰 옮긴다. ③ 옮기며 생긴 오차가 층 출력에 덜 드러나도록 나머지 값을 조정하거나 스케일을 바꾼다. ④ 낮은 비트로 저장한 가중치를 추론할 때 GPU 커널이 읽어 들이며 다시 풀어(역양자화) 계산한다.

KV 캐시 쪽은 생성 과정과 맞물려 돈다. 프롬프트를 처음 읽는 프리필(prefill) 단계에서 모든 입력 토큰의 키·값이 만들어지고, 이후 디코딩 단계에서는 토큰을 하나 만들 때마다 새 키·값이 캐시에 붙는다. PagedAttention논문은 이 캐시를 연속된 큰 덩어리 대신 작은 블록으로 쪼개 저장하고, 각 요청이 어떤 블록을 쓰는지 표로 관리한다. 덕분에 빈 공간 낭비가 거의 없고, 같은 프롬프트를 공유하는 요청끼리 블록을 함께 쓸 수도 있다. 여기에 KV 캐시 값 자체를 2비트 안팎으로 양자화하는 연구가 최근 활발하다.

주의할 점은 '작게 저장'과 '빠르게 계산'이 같은 말이 아니라는 것이다. GPTQ 논문은 자신들의 속도 향상이 압축된 가중치를 메모리에서 더 빨리 읽어 오는 데서 나오며, 주류 하드웨어가 FP16×INT4 같은 혼합 정밀도 곱셈을 지원하지 않아 곱셈 자체는 빨라지지 않는다고 한계로 밝혔다.

가중치와 KV 캐시를 가볍게 하는 길학습된 모델 → 가중치 양자화; 보정 데이터 → 가중치 양자화(통계); 가중치 양자화 → 저비트 모델; 저비트 모델 → 디코딩(역양자화); 프롬프트 → KV 캐시 생성; KV 캐시 생성 → KV 캐시 양자화; KV 캐시 양자화 → 블록 단위 관리; 블록 단위 관리 → 디코딩(읽기)가중치 쪽KV 캐시 쪽학습된 모델FP16 가중치가중치 양자화사후 학습 양자화보정 데이터소량 샘플저비트 모델3~4비트 가중치디코딩토큰 하나씩 생성프롬프트프리필 단계KV 캐시 생성토큰마다 키·값KV 캐시 양자화중요 채널에 비트 더블록 단위 관리PagedAttention통계역양자화읽기
가중치와 KV 캐시를 가볍게 하는 길 위쪽은 학습이 끝난 모델을 한 번에 낮은 비트로 바꾸는 흐름, 아래쪽은 생성 중 쌓이는 KV 캐시를 줄이고 블록으로 관리하는 흐름이다. 두 길이 디코딩에서 만난다.

발전 흐름: GPTQ, AWQ, PagedAttention

GPTQ논문는 근사 2차 정보(오차가 출력에 얼마나 민감하게 번지는지를 나타내는 정보)를 써서, 가중치 하나를 반올림할 때 생긴 오차를 아직 양자화하지 않은 다른 가중치로 메우는 방식이다. 논문에 따르면 그 전까지 175B 규모에 적용된 것은 가장 가까운 눈금으로 반올림하는 단순한 방식(RTN)뿐이었고, 이는 8비트에서는 괜찮지만 그보다 더 줄이면 정확도를 지키지 못했다. GPTQ는 175B 파라미터 모델을 약 4 GPU 시간에 3~4비트로 줄이면서 정확도 손실을 작게 유지했고, 175B 모델을 처음으로 A100 한 장에서 돌렸다. FP16 대비 종단 간 속도는 A100에서 약 3.25배, A6000에서 약 4.5배 빨라졌다고 보고했다.

AWQ논문는 '모든 가중치가 똑같이 중요하지는 않다'는 관찰에서 출발한다. 전체의 0.1~1%인 중요한(salient) 가중치를 지키면 양자화 오차가 크게 줄어드는데, 이 중요한 채널을 찾을 때 가중치 크기가 아니라 활성값(그 채널로 들어오는 입력 신호) 분포를 봐야 한다는 것이 핵심이다. OPT-6.7B를 3비트로 줄인 실험에서 중요한 1%만 FP16으로 남겨도 퍼플렉시티(낮을수록 좋은 언어 모델 지표)가 43.2에서 13.0으로 좋아졌다. 다만 정밀도를 섞어 쓰면 하드웨어에서 비효율적이어서, AWQ는 중요한 채널을 미리 키워(스케일링) 상대 오차를 줄이는 등가 변환을 택했다. AWQ 논문은 GPTQ가 보정 데이터에 과적합해 다른 분야 데이터에서 성능이 흔들릴 수 있다고 지적하며, 역전파나 재구성에 기대지 않는 자신들의 방식이 지시 따르기 모델과 멀티모달 모델로 더 잘 일반화된다고 주장한다. 함께 낸 추론 프레임워크 TinyChat은 Hugging Face FP16 구현보다 3배 넘게 빨랐다고 한다.

PagedAttention논문은 같은 시기 다른 병목인 KV 캐시를 겨냥했다. 운영체제의 가상 메모리·페이징에서 착안한 어텐션 알고리즘을 만들고, 그 위에 서빙 시스템 vLLM을 지었다. KV 캐시 낭비를 거의 0에 가깝게 줄이고 요청 안팎에서 캐시를 공유하게 해, FasterTransformer·Orca 같은 당시 시스템보다 같은 지연에서 처리량을 2~4배 높였다. 이 향상은 시퀀스가 길고 모델이 크며 디코딩 방식이 복잡할수록 더 커졌다.

GPTQ와 AWQ의 접근 차이

GPTQ오차를 메운다

  • 근사 2차 정보 사용
  • 반올림 오차를 남은 가중치로 보정
  • 보정 세트 과적합 가능성 지적받음

AWQ중요한 곳을 지킨다

  • 활성값 분포로 중요 채널 찾기
  • 채널을 키워 상대 오차 줄이기
  • 역전파·재구성 없이 동작

공통 둘 다 소량의 보정 데이터로 학습 후에 한 번에 적용하는 사후 학습 양자화다

두 방법 모두 재학습 없이 가중치를 낮은 비트로 줄이지만, 오차를 다루는 방식이 다르다.

요즘 어디로 가고 있나: 한정된 비트를 어디에 쓸까

최근 연구들은 '모든 곳을 똑같이 몇 비트로'에서 '정해진 예산 안에서 중요한 곳에 비트를 더 주는' 혼합 정밀도 배분으로 옮겨 가고 있다. AWQ가 가중치에서 보여 준 '중요한 일부를 지킨다'는 생각이 KV 캐시와 MoE(전문가 혼합) 모델로 넓어지는 모양새다.

PN-Mix논문는 긴 출력을 생성할 때 KV 캐시의 메모리와 대역폭이 심한 병목이 되며, 2비트 같은 낮은 비트로 줄이면 정확도가 크게 떨어진다는 문제에서 출발한다. 기존 혼합 정밀도 키 캐시 방법이 키 통계만 보고 중요한 채널을 골랐던 것과 달리, PN-Mix는 RoPE(회전 위치 임베딩)의 채널 쌍 단위에서 쿼리와 키의 크기(norm)를 곱한 값이 큰 쌍의 오차가 어텐션 점수를 크게 흔든다는 점을 보였다. 이 중요한 쌍은 프리필 단계에서 한 번만 골라 디코딩 내내 재사용한다. 평균 2.26비트로 2.32~2.39비트를 쓰는 기존 방법과 비슷하거나 나은 정확도를 냈고, 1.5비트까지 내려가도 완만하게 성능이 떨어졌다고 보고했다.

MultiAlloc논문은 긴 문맥과 복잡한 추론에서 KV 캐시가 메모리의 주된 소비처라는 점을 짚고, 실제 배포의 과제는 압축 자체보다 고정된 메모리 예산을 '층별 정밀도 높이기'와 '중요 토큰 보존'이라는 서로 다른 전략 사이에 어떻게 나누느냐라고 본다. 가벼운 사전 프로파일링으로 층 민감도와 토큰 중요도를 측정해 배분 정책을 정해 두고, 추론 중에는 따로 탐색하지 않고 그대로 적용한다. Mistral, Llama, DeepSeek-Qwen, QwQ 등에서 같은 메모리 예산의 기존 방법보다 꾸준히 나았다고 한다. 가중치 쪽에서는 NatScale논문이 MoE 모델을 다룬다. MoE는 토큰마다 일부 전문가만 쓰지만 모든 전문가 가중치를 저장해야 하므로, 민감한 전문가에 비트를 더 주는 배분이 중요하다. NatScale은 전문가 순위만으로는 각 오차를 얼마나 무겁게 볼지 정할 수 없다며 가중치를 보정하는 틀을 제안했고, 세 모델·아홉 설정 모두에서 다섯 가지 배분 기준선보다 원래 모델과의 KL 발산(출력 분포 차이)이 가장 낮았다.

양자화·KV 캐시 연구 지도 왼쪽은 출발점 연구, 오른쪽은 2026년 비트 배분 연구다. 화살표는 AWQ가 GPTQ를 가장 가까운 비교 대상으로 삼은 관계만 나타낸다.

한계와 쟁점

첫째, 저장 공간 절약이 곧 속도 향상은 아니다. GPTQ논문가 밝혔듯 하드웨어가 낮은 비트 곱셈을 지원하지 않으면 이득은 주로 메모리 읽기에서 나온다. AWQ논문가 별도 추론 프레임워크를 만든 것도, 이론상 메모리 절약을 실제 측정 속도로 바꾸려면 커널 융합이나 가중치 압축 배치 같은 공학이 따로 필요하기 때문이다. 처리량(토큰/초)이나 TTFT(첫 토큰까지 걸리는 시간)는 내 GPU와 추론 엔진에서 직접 재야 한다.

둘째, 보정 데이터와 일반화의 문제가 남아 있다. AWQ 논문은 오차 보정형 방법이 보정 세트에 과적합할 수 있다고 지적했다. 사내 문서나 특정 언어처럼 보정 데이터와 다른 분포에서 쓸 모델이라면, 범용 벤치마크 점수만 보고 양자화 모델을 고르기보다 실제 업무 데이터로 따로 평가해야 한다.

셋째, '무엇이 중요한가'를 재는 기준이 아직 정해지지 않았다. PN-Mix논문는 키 통계만으로 중요도를 재던 기존 방식이 놓친 부분을 보였고, NatScale논문은 순위만으로는 배분을 정할 수 없다고 주장했다. 즉 중요도 신호를 무엇으로 잡느냐에 따라 같은 비트 예산에서도 결과가 달라진다. 또 지표마다 결론이 다를 수 있다. NatScale도 KL 발산은 아홉 설정 모두에서 가장 낮았지만 퍼플렉시티는 일곱 설정에서만 가장 낮았다.

넷째, 낮은 비트일수록 위험이 비선형적으로 커진다. PN-Mix 논문에 따르면 비교 기준선들은 2.25비트 아래에서 성능이 급격히 떨어졌다. 비트를 줄일수록 절약 폭은 작아지고 품질 붕괴 위험은 커지므로, 서비스에서는 품질이 꺾이는 지점을 먼저 확인하고 그보다 넉넉하게 잡는 편이 안전하다.

더 공부하려면

처음이라면 GPTQ논문의 서론과 관련 연구 절부터 읽기를 권한다. 왜 재학습 없는 사후 학습 양자화가 거대 모델에 필요했는지, 8비트와 3~4비트 사이에 어떤 벽이 있었는지가 잘 정리돼 있다. 이어서 AWQ논문의 서론과 그림 2를 보면 '중요한 1%를 활성값으로 찾는다'는 생각이 직관적으로 보이고, GPTQ와 어떤 점에서 다른 길을 갔는지 비교할 수 있다.

KV 캐시 쪽은 PagedAttention논문 초록과 본문에서 기존 시스템이 메모리를 어디서 낭비했는지 분석한 부분을 먼저 읽는다. 서빙 시스템의 처리량이 왜 메모리 관리에 달려 있는지 이해하면, 그 다음 KV 캐시 양자화 연구가 왜 나오는지도 자연스럽게 보인다.

최근 흐름을 따라가려면 PN-Mix논문로 KV 캐시의 채널 단위 혼합 정밀도를, MultiAlloc논문으로 메모리 예산 배분 문제를, NatScale논문로 MoE 가중치의 비트 배분을 차례로 읽으면 된다. 세 논문을 '같은 예산을 어디에 나눠 쓰나'라는 하나의 질문으로 묶어 읽으면 각자의 기여가 더 분명해진다.

관련 용어

양자화 KV 캐시 GPTQ·AWQ 페이지드 어텐션 정밀도(FP32·BF16·FP8) VRAM 추론 엔진 MoE

참고 문헌

핵심 논문

최근 연구

AI가 참고 문헌을 바탕으로 작성하고 검수를 거친 해설입니다. 정확한 내용은 원문을 확인해 주세요.