본문 바로가기
AI2026년 8월 19일5분 읽기

LLM 양자화 — GPTQ·AWQ·GGUF, INT4가 뭘 버리고 뭘 지키나

YS
김영삼
조회 10
LLM 양자화 — GPTQ·AWQ·GGUF, INT4가 뭘 버리고 뭘 지키나

양자화(quantization)는 모델 가중치를 16비트나 32비트 부동소수점 대신 8비트·4비트 같은 낮은 정밀도로 표현해, 메모리와 연산을 줄이는 기법이다. 70B 모델을 fp16으로 올리면 140GB쯤 되지만 4비트로 내리면 40GB 안팎으로 줄어, 안 돌아가던 GPU에서도 돌아가기 시작한다. 관건은 "정밀도를 버리면서 품질은 얼마나 지키느냐"이고, GPTQ·AWQ·GGUF는 그 답을 서로 다르게 낸 방식들이다.

나는 로컬 LLM을 굴리며 이 약자들의 정글에서 한참 헤맸다. Q4_K_M은 뭐고 AWQ는 뭐가 다른지, 왜 어떤 건 GPU 전용이고 어떤 건 CPU에서도 도는지. 정리하고 나니 선택 기준이 의외로 단순했다.

왜 4비트로 줄여도 멀쩡한가

신경망 가중치는 대부분 0 근처에 몰려 있고, 큰 값은 드물다. 그래서 값의 분포에 맞춰 스케일(scale)영점(zero point)을 잡으면, 4비트라는 16단계만으로도 놀랄 만큼 원본에 가깝게 근사된다. 다만 튀는 값(outlier) 몇 개가 전체 오차를 좌우하는 경우가 있어서, 이 이상치를 어떻게 다루느냐가 방식마다의 개성이 된다.

중요한 구분 하나. 대부분의 LLM 양자화는 학습 후 양자화(PTQ)다. 이미 학습된 모델을 소량의 보정(calibration) 데이터로 다듬어 낮은 비트로 바꾼다. 재학습이 필요 없어 빠르고 싸다.

GPTQ · AWQ · GGUF, 뭐가 다른가

방식특징주 실행처
GPTQ오차 보정하며 층별 양자화, GPU 추론 빠름GPU
AWQ중요 가중치를 보호(활성값 기반), 품질 강점GPU
GGUFllama.cpp 포맷, CPU/GPU 혼합·오프로딩CPU+GPU

거칠게 요약하면, GPTQ는 양자화 오차를 다음 가중치로 넘겨가며 보정해 정확도를 지킨다. AWQ는 활성값을 기준으로 "중요한" 가중치를 찾아 그쪽 정밀도를 지켜 품질을 챙긴다. GGUF는 방식이라기보다 llama.cpp가 쓰는 파일 포맷이자 양자화 계열로, GPU가 부족하면 일부 레이어를 CPU 메모리로 내려(offload) 돌릴 수 있는 게 최대 장점이다.

GGUF의 Q4_K_M 같은 이름 읽기

GGUF 파일 이름의 Q4_K_M류가 처음엔 암호 같았다. 뜯어 보면 규칙이 있다. 앞의 숫자는 비트(Q4=4비트), K는 블록 단위로 스케일을 정교하게 잡는 K-quant 계열, 끝의 S/M/L은 크기·품질 등급(Small/Medium/Large)이다.

# 감 잡기용: 같은 7B 모델의 대략적 크기
# fp16      ~13 GB   원본
# Q8_0      ~7  GB   8비트, 거의 무손실
# Q5_K_M    ~4.8GB   품질 좋은 균형점
# Q4_K_M    ~4  GB   가장 흔한 선택
# Q3_K_M    ~3.3GB   더 작지만 품질 저하 체감
# Q2_K      ~2.6GB   많이 작지만 위험

내 경험칙은 이렇다. VRAM이 허락하면 Q5_K_M이나 Q4_K_M이 품질·크기의 스위트스폿이다. Q3 이하로 내려가면 문장이 미묘하게 헐거워지고, Q2는 어지간히 급할 때만 쓴다. 무작정 작은 걸 고르면 "돌기는 도는데 답이 멍청해지는" 함정에 빠진다.

양자화는 정밀도를 돈처럼 쓴다. 8비트까지는 거의 공짜에 가깝고, 4비트는 좋은 거래이며, 그 아래부터는 품질이라는 청구서가 눈에 띄게 커진다.

자주 묻는 질문

4비트로 줄이면 성능이 많이 떨어지나요?

잘 만든 4비트(예: K-quant 계열, AWQ)는 원본 대비 품질 저하가 생각보다 작아, 메모리 절감 대비 이득이 크다. 다만 3비트 이하로 내려가면 저하가 눈에 띄기 시작한다. 반드시 자기 작업에 맞는 평가로 확인하고, 여유가 있으면 4~5비트를 우선 고려하는 게 안전하다.

GPTQ와 AWQ 중 뭘 골라야 하나요?

둘 다 GPU 추론용 4비트로 성숙한 방식이라, 실제로는 사용하는 추론 엔진이 무엇을 잘 지원하는지와 배포하려는 모델에 어떤 사전 양자화 버전이 나와 있는지로 갈리는 경우가 많다. 품질은 대체로 비슷한 수준이며, 특정 모델·엔진 조합에서의 벤치마크를 참고해 정하는 게 현실적이다.

GGUF는 왜 CPU에서도 돌아가나요?

GGUF는 llama.cpp 생태계를 위한 포맷으로, 가중치를 CPU와 GPU에 나눠 싣고 GPU에 안 올라가는 레이어를 CPU 메모리에서 처리하는 오프로딩을 지원하기 때문이다. GPU 메모리가 부족한 환경에서 큰 모델을 억지로라도 돌려 볼 수 있다는 게 강점이지만, CPU로 넘긴 부분만큼 속도는 느려진다.

양자화한 모델을 다시 파인튜닝할 수 있나요?

가능하다. 대표적으로 QLoRA는 모델을 4비트로 양자화해 메모리에 올린 채, 작은 LoRA 어댑터만 학습한다. 원본 가중치는 얼린 상태로 두고 어댑터만 훈련하므로, 적은 자원으로도 큰 모델을 커스터마이즈할 수 있다.

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록