한줄 요약: 4비트 양자화된 모델 위에 LoRA를 얹고, 새로운 NF4 데이터 타입과 이중 양자화로 메모리를 극한까지 절감하여, 단일 48GB GPU로 65B 모델 파인튜닝을 가능하게 했다.
| 항목 | 내용 |
|---|---|
| 저자 | Tim Dettmers, Artidoro Pagnoni, Ari Holtzman, Luke Zettlemoyer |
| 소속 | University of Washington |
| 발표 | NeurIPS 2023 |
| 링크 | arxiv.org/abs/2305.14314 |
| 키워드 | QLoRA, 4-bit, NF4, Parameter-Efficient Fine-Tuning |
LoRA는 파라미터 효율적이지만, 기본 모델 자체는 FP16으로 메모리에 올려야 한다:
LoRA의 메모리 구성:
LLaMA-65B 기본 모델 (FP16): 130GB
LoRA 어댑터 (r=16): ~20MB
옵티마이저 상태: ~40MB
활성화/그래디언트: ~10-20GB
→ 총 ~150GB → A100 80GB 2대 필요
문제:
LoRA 학습 파라미터는 작지만, 기본 모델 메모리가 병목
→ 개인 연구자/개발자에게는 여전히 접근 불가
핵심 질문:
기본 모델을 4비트로 양자화하면서도
LoRA 파인튜닝 품질을 유지할 수 있는가?
기존 INT4:
균등 간격: {-8, -7, -6, ..., 0, ..., 6, 7}
→ 가중치 분포는 정규분포인데, 균등 간격으로 양자화 → 비효율
NF4 (정보 이론적 최적):
사전 가정: 가중치가 정규분포 N(0, σ²)를 따름
→ 분위수(quantile) 기반으로 16개 값 배치
→ 밀도가 높은 0 주변에 더 많은 양자화 레벨 배치
INT4: [-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7]
NF4: [-1.0, -0.69, -0.52, -0.39, -0.28, -0.18, -0.09, 0,
0.08, 0.17, 0.27, 0.38, 0.51, 0.68, 0.99]
→ 양자화 오차 최소화 (정규분포 가정 하에 이론적 최적)
양자화에는 스케일 팩터(FP32)가 블록마다 필요:
블록 크기 64, 모델 파라미터 N개 → N/64개의 FP32 스케일
→ 파라미터당 0.5비트 추가 오버헤드
이중 양자화:
스케일 팩터 자체를 다시 양자화 (FP32 → FP8)
→ 0.5비트 → 0.127비트로 감소
→ 65B 모델 기준 ~3GB 절약
학습 중 긴 시퀀스에서 메모리 스파이크 발생 시:
옵티마이저 상태를 GPU → CPU로 자동 페이징
메모리 여유가 생기면 다시 GPU로 복귀
→ NVIDIA Unified Memory 활용
→ OOM 방지하면서 단일 GPU 학습 가능
Forward Pass:
4비트 NF4 가중치 → FP16으로 역양자화 → 연산
+ LoRA: BA를 FP16으로 계산 → 결과 합산
Backward Pass:
LoRA 파라미터(A, B)만 그래디언트 계산 (FP16)
기본 모델 가중치는 동결 (4비트 상태 유지)
→ 그래디언트/옵티마이저 메모리 = LoRA 크기만
메모리 비교 (LLaMA-65B):
전체 파인튜닝 FP16: >780GB
LoRA FP16: ~150GB
QLoRA (NF4 + LoRA): ~48GB ← 단일 A100/A6000 가능!
| 모델 | Elo Rating (Vicuna 벤치마크) | GPU 메모리 | 학습 시간 |
|---|---|---|---|
| ChatGPT | 1274 | — | — |
| Vicuna-13B (FP16 전체 파인튜닝) | 1054 | ~200GB | ~3일 |
| Guanaco-65B (QLoRA) | 1254 | 48GB | ~24시간 |
| Guanaco-33B (QLoRA) | 1218 | 24GB | ~12시간 |
→ 단일 GPU로 ChatGPT의 97% Elo 달성
| 데이터 타입 | MMLU (5-shot) |
|---|---|
| Float16 (LoRA) | 63.4% |
| NF4 (QLoRA) | 63.9% |
| FP4 (QLoRA) | 63.1% |
| INT4 (QLoRA) | 62.7% |
→ NF4가 FP16 LoRA와 동등하거나 약간 우수 — 양자화 손실 사실상 제로
| 모델 | FP16 전체 FT | FP16 LoRA | NF4 QLoRA |
|---|---|---|---|
| LLaMA-7B | 기준 | -0.3% | -0.1% |
| LLaMA-13B | 기준 | -0.2% | -0.1% |
| LLaMA-33B | 불가(메모리) | -0.4% | -0.2% |
| LLaMA-65B | 불가 | 불가 | 가능 (48GB) |
→ 모델이 클수록 QLoRA의 상대적 성능 저하가 더 작음
QLoRA의 가장 놀라운 점은 "4비트 양자화가 파인튜닝 품질에 영향을 주지 않는다"는 것이다. 직관적으로는 4비트로 압축된 모델 위에서 학습하면 정보 손실이 누적될 것 같지만, 실험 결과는 FP16 LoRA와 사실상 동등하다. 이는 LoRA가 학습하는 저랭크 변화량(ΔW)이 기본 모델의 양자화 노이즈에 강건하다는 것을 시사한다.
실전에서 QLoRA는 "할 수 없던 것을 할 수 있게 만들었다"는 점에서 의미가 크다. LoRA가 "비용을 줄인" 것이라면, QLoRA는 "물리적 한계를 넘긴" 것이다. 24GB GPU 하나로 33B 모델을 파인튜닝한다는 것은, 대학원생이 노트북으로 연구할 수 있다는 것이다.
NF4의 아이디어도 아름답다. "가중치가 정규분포이니, 양자화 레벨도 정규분포의 분위수에 맞추자"는 것은 당연해 보이지만, 이전에 아무도 하지 않았다.
관련 논문: LoRA, GPTQ, AWQ, bitsandbytes, Unsloth