Zettelkasten

QLoRA는 양자화와 LoRA를 결합한다

·수정 2026.04.24·수정 5

요약

QLoRA(Quantized LoRA)는 기본 모델을 4-bit로 양자화하고, 그 위에 LoRA 어댑터를 학습시키는 방식이다. 이를 통해 65B 파라미터 모델도 단일 48GB GPU에서 fine-tuning할 수 있다.

본문

QLoRA의 핵심 기술

  1. 4-bit NormalFloat (NF4)

    • 정규분포를 가정한 양자화 방식
    • INT4보다 neural network 가중치에 최적화
  2. Double Quantization

    • 양자화 상수(quantization constants)도 양자화
    • 추가 메모리 절약
  3. Paged Optimizers

    • GPU 메모리 부족 시 CPU로 오프로딩
    • Out-of-memory 방지

메모리 비교 (65B 모델 기준)

방법 필요 메모리
Full fine-tuning (fp16) ~780GB
LoRA (fp16) ~130GB
QLoRA (4-bit) ~48GB

코드 예시

from transformers import BitsAndBytesConfig
from peft import prepare_model_for_kbit_training

# 4-bit 양자화 설정
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=True,
    bnb_4bit_quant_type="nf4",
    bnb_4bit_compute_dtype=torch.bfloat16
)

# 모델 로드 및 준비
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config
)
model = prepare_model_for_kbit_training(model)

성능

  • Full fine-tuning 대비 97% 수준의 성능 달성 (논문 기준)
  • ChatGPT 수준의 Vicuna chatbot을 단일 GPU로 학습 가능

참고