| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- go
- kotlin coroutine
- Spring
- CKA
- AWS EKS
- CloudWatch
- golang
- 바이브코딩
- LLM
- tucker의 go 언어 프로그래밍
- Java
- 오블완
- 정보처리기사 실기 기출문제
- 코틀린 코루틴의 정석
- MySQL
- minikube
- Linux
- 티스토리챌린지
- APM
- 컨텍스트 엔지니어링
- Kubernetes
- AI
- PETERICA
- Pinpoint
- aws
- 기록으로 실력을 쌓자
- SRE
- CKA 기출문제
- kotlin
- 공부
- Today
- Total
피터의 개발이야기
[AI] LLM 양자화 완전 정리: GPTQ / AWQ / GGUF / BNB 차이 + 비트 수와 메모리 관계 본문
ㅁ 들어가며
대형 LLM을 사용하다 보면 “양자화(Quantization)” 라는 용어를 자주 마주치게 된다.
또 GPTQ, AWQ, GGUF, BNB(4bit/8bit 로딩) 등 다양한 방식이 존재하며,
FP32·FP16·INT8·INT4 같은 비트 수도 함께 등장한다.
이 글에서는 각 양자화 방식의 차이와
비트 수와 메모리 관계를 가장 실질적인 관점에서 정리한다.
ㅁ Quantization(양자화)란?
Quantization(양자화)라는 용어의 본질적인 의미 자체가 “연속적인 값을 이산화(discretize)한다”는 것이다.
그래서 컴퓨터 비전, 신호 처리, 음성 코덱, 이미지 압축, 뉴럴넷 등 분야를 막론하고 연속적(continuous) 값을 유한한 정수 집합(discrete set)으로 바꾸는 과정을 통칭해 Quantization이라고 부른다.
ㅁ 비트 수(FP32/FP16/INT8/INT4)와 메모리 관계
LLM의 속도를 결정하는 가장 큰 요인은 가중치를 메모리에서 GPU로 불러오는 속도(대역폭)이다.
따라서 가중치를 얼마나 적은 비트로 표현하느냐가 메모리 사용과 추론 속도를 크게 바꾼다.
ㅇ 비트 수별 메모리 사용량
| 형식 | 비트 수 | 메모리 크기 | 설명 |
| FP32 | 32bit | 기준 100% | 학습 기본 정밀도 |
| FP16/BF16 | 16bit | 50% | 학습·추론 모두 활용 |
| INT8 | 8bit | 25% | 추론 최적화 |
| INT4 | 4bit | 12.5% | 로컬 LLM·저사양 최적 |
예) 7B 모델 기준
FP32 → 약 28GB
- FP16 → 약 14GB
- INT8 → 약 7GB
- INT4 → 약 3.5GB
➡️ INT4 양자화 덕분에 일반 PC에서도 70B 모델이 실행 가능한 시대가 되었다.
ㅁ GPTQ / AWQ / GGUF / BNB 차이 정리
아래 네 가지 방식은 모두 “양자화”라는 공통점을 가지지만 목적과 철학이 다르다.
ㅇ GPTQ
가장 널리 쓰이는 INT4 포스트훈(Post-training) 양자화 방식
특징
- weight matrix를 그룹 단위로 나누어 오차를 최소화하도록 양자화
- 높은 정확도와 좋은 효율
- LLaMA, Mistral 등 대부분 모델에서 사실상 표준
요약
✔ 정확도 좋음
✔ CPU·GPU 모두 빠름
✔ 로컬 모델 생태계에서 가장 인기
ㅇ AWQ
중요한 weight는 살리고, 덜 중요한 weight만 aggressively 양자화하자
특징
- activation(활성값) 중요도를 기준으로 weight을 선택적으로 양자화
- GPTQ보다 품질이 좋은 경우가 많음
- NVIDIA TensorRT·vLLM 등에서 적극 지원
요약
✔ 정확도 최적화
✔ 대형 모델에서 강력
✔ 다만 양자화 시간이 조금 더 걸림
ㅇ GGUF
양자화 알고리즘이 아니라 “모델 저장 포맷”
많이 오해하는데, GGUF는 “양자화 방식”이 아니라
LLaMA.cpp(로컬 LLM) 생태계에서 사용하는 압축 모델 저장 형식이다.
강점은 다음과 같다:
- CPU·모바일·Apple Silicon에서 최적화
- Q2_K/Q4_K/Q5_K 등 다양한 quantization 스킴을 통합 지원
- 로딩 속도가 매우 빠름
요약
✔ 로컬 LLM의 표준 포맷
✔ 다양한 양자화 스킴을 담는 “컨테이너”
✔ Mac/Windows/CPU 모두에서 빠름
ㅇ BNB (BitsAndBytes)
가장 쉽게 8bit/4bit 모델을 로딩하는 방식
HuggingFace의 bitsandbytes 라이브러리로,
가장 쉽고 빠르게 모델을 INT8/INT4로 로딩한다.
예:
model = AutoModelForCausalLM.from_pretrained(
path,
load_in_4bit=True
)
QLoRA(4bit 기반 미세조정)도 여기서 출발했다.
요약
✔ 사용이 가장 쉬움
✔ 학습·추론 모두 지원
✔ 정확도는 GPTQ/AWQ보다 약간 낮을 수 있음
ㅁ 네 방식의 차이를 한눈에 비교
| 방식 | 종류 | 목적 | 품질 | 속도 | 특징 |
| GPTQ | PTQ | 최소 오차 INT4 | 높음 | 빠름 | 가장 대중적 |
| AWQ | PTQ | 중요한 weight 보호 | 매우 높음 | 보통 | activation-aware |
| GGUF | 파일 포맷 | 로컬 실행 최적화 | 스킴에 따라 다름 | 매우 빠름 | 양자화 방식이 아님 |
| BitsandBytes (BNB) | PTQ | 쉬운 8bit/4bit 로딩 | 중~높음 | 매우 빠름 | QLoRA 기반 |
4. 한 문장으로 요약하면?
🔹 GPTQ = 범용 INT4 양자화 표준
🔹 AWQ = 정확도 우선 양자화
🔹 GGUF = 로컬 LLM 파일 포맷
🔹 BNB = 가장 쉬운 8bit/4bit 로딩 방식
ㅁ 마무리
양자화는 단순히 모델을 “줄이는 기술”이 아니라,
적은 자원에서 LLM을 빠르고 효율적으로 운영하게 만드는 핵심 기술이다.
- GPTQ는 INT4의 사실상 표준
- AWQ는 정확도 손실 최소화
- GGUF는 로컬 실행을 위한 포맷
- BNB는 사용 난도가 가장 낮은 방식
또한 비트 수(4bit/8bit/16bit) 는 메모리 사용량과 속도에 직결되므로
원하는 환경(GPU/CPU/메모리 크기)에 맞게 선택하는 것이 중요하다.
