양자화 개요 — 메모리를 줄이는 저비트 가중치 표현
양자화 개요
LLM을 로컬에서 돌려보려 하면 어김없이 '메모리가 부족하다'는 벽을 만나요. 양자화는 그 벽을 낮추는 가장 직접적인 방법이에요. 가중치가 보통 fp32(32비트)로 저장되지만, 요즘 모델은 크기가 커서 fp16/bf16 같은 반정밀도도 부담이 되죠. 양자화는 여기서 한 발 더 나아가 int8·int4 같은 정수 표현으로 정밀도를 낮춰 메모리를 크게 줄여요.
어떤 방법을 고를까
모든 방법이 똑같지 않아요. Transformers는 방식마다 특성이 다른 표를 제공해요. 캘리브레이션 데이터가 필요한 방법은 정확도가 높고 1~2비트까지 극단적 압축이 가능한 대신, 준비 과정이 필요해요. 반면 on-the-fly 양자화는 캘리브레이션 없이 바로 적용되어 편리해요.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.1-8B")
선택의 기준
- 하드웨어: CPU·CUDA·ROCm·Metal(Apple)마다 지원 방법이 달라요.
- 비트 수: 1~8비트까지 목표에 따라.
- PEFT 파인튜닝: 양자화된 모델에서 LoRA 튜닝이 가능한지.
- 직렬화: 🤗Transformers
from_pretrained로 다시 불러올 수 있는지.
AI 코스에서는 초보자용 양자화 단기 강좌도 제공하니, 처음이라면 그걸로 감을 잡는 것도 좋아요.