"단일 GPU로 13B 모델 파인튜닝 가능?"
QLoRA는 4-bit 양자화와 LoRA를 결합해 메모리 사용을 극도로 줄여주는 혁신적인 기법입니다.

QLoRA란?
QLoRA(Quantized LoRA)는 기존 LoRA 기법을 저비트 양자화(4-bit quantization) 와 결합한 방식입니다.
- 모델 weight는 4-bit quantized 형태로 GPU 메모리에 올림
- LoRA 저랭크 파라미터(A, B)만 FP16 혹은 BF16 precision으로 학습
즉, 원본 모델은 4-bit로 압축 + LoRA delta만 학습 → 메모리 사용량과 연산량이 크게 줄어듦.
왜 필요한가?
- LLaMA, Falcon, Mistral 등 7B~70B급 모델은 full precision로 로드 시 VRAM이 40GB~300GB 이상 필요
- 일반 A100 40GB, RTX 4090 24GB 같은 환경에서는 학습 자체가 불가능
- QLoRA는 4-bit quantization으로 모델을 로드 → VRAM 사용량 75% 이상 절약
결과:
4090 1장으로 13B 모델 fine-tuning 가능,
A100 1장으로 33B 모델도 fine-tuning 가능
동작 방식
- 4-bit Quantization
- 모델 weight를 4-bit로 변환 (NF4/FP4 quantizer)
- GPU에 로드 → forward 시 dequantize 후 연산
- LoRA 학습
- attention projection 등 선택된 레이어에 LoRA 모듈 추가
- 이 부분만 학습 (FP16/BF16)
- Gradient Checkpointing + Paged Optimizer
- 메모리 절약 위해 중간 activation 재계산
- 메모리 효율적인 옵티마이저 사용 (paged AdamW)
장점
1. 메모리 절약 극대화 → 4-bit 모델 로드로 VRAM 사용량 4배↓
2. 비용 효율 → 대형 모델 학습도 단일 GPU 가능
3. 성능 유지 → full precision fine-tuning과 거의 동등한 성능
4. LoRA의 장점 그대로 → 어댑터만 저장/로드, merge 가능
단점 & 고려 사항
4-bit quantization에 따른 미세한 성능 손실 가능 (보통 <1%)
학습 속도 약간 느릴 수 있음 (dequantization 연산 추가)
일부 연산자(커스텀 layer)에서 4-bit 지원 안 되면 fallback 필요
HuggingFace PEFT + bitsandbytes 예시 코드
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import LoraConfig, get_peft_model
import bitsandbytes as bnb
model = AutoModelForCausalLM.from_pretrained(
"meta-llama/Llama-2-13b-hf",
load_in_4bit=True, # 4-bit 로드
quantization_config=bnb.nn.Linear4bit.quantization_config(),
device_map="auto"
)
# LoRA 설정
lora_config = LoraConfig(
r=8,
lora_alpha=16,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none"
)
model = get_peft_model(model, lora_config)
model.print_trainable_parameters() # 학습 파라미터 수 확인
성능 비교 (논문 결과)
| 모델 | Full Fine-Tuning | QLoRA | 파라미터 효율 |
| LLaMA-13B | 85.5 (GLUE) | 85.2 | 99% 동일 |
| LLaMA-65B | 학습 불가 (VRAM 부족) | 85.0 | 단일 GPU 가능 |
결론: 4-bit quantization을 써도 성능 손실은 미미, 자원 사용량은 극적으로 줄어듦.
LoRA vs QLoRA 비교
| 항목 | LoRA | QLoRA |
| 모델 로드 Precision | FP16 / BF16 | 4-bit |
| VRAM 사용량 | 높음 | 75% ↓ |
| 학습 속도 | 빠름 | 약간 느림 |
| 성능 | Full Fine-Tuning 수준 | 거의 동일 |
| 장점 | 간단, 빠름 | 메모리 극대 절약, 대형 모델 가능 |
실무 적용 팁
- r, α, dropout → LoRA와 동일하게 튜닝 (r=8, α=16 추천 시작점)
- 데이터셋 적을 때는 rank 낮춰서 과적합 방지
- bnb_4bit_compute_dtype → torch.bfloat16 추천 (안정적 학습)
결론
QLoRA는 대형 모델 파인튜닝을 대중화한 방법입니다.
단일 GPU 환경에서도 13B, 33B 모델을 학습할 수 있고, 성능은 거의 손실 없이 유지됩니다.
LoRA + 4-bit quantization 조합은 앞으로 대형 모델 파인튜닝의 표준으로 자리 잡을 가능성이 큽니다.
다음 시리즈로 넘어갑니다!
https://machineindeep.tistory.com/67
모델 압축·배포 최적화 시리즈 1편: Knowledge Distillation
"큰 모델이 배운 지식을 작은 모델에 전수할 수 없을까?"Knowledge Distillation(지식 증류)은 Teacher-Student 방식으로 모델을 압축하는 대표적인 기법입니다.Knowledge Distillation이란?Knowledge Distillation(KD)은
machineindeep.tistory.com
'ML | DL > 딥러닝 방법론|실습' 카테고리의 다른 글
| 모델 압축·배포 최적화 시리즈 2편: Quantization (양자화) (1) | 2025.09.14 |
|---|---|
| 모델 압축·배포 최적화 시리즈 1편: Knowledge Distillation (0) | 2025.09.14 |
| AI 모델 경량화 시리즈 4편: BitFit (Bias-Only Fine-Tuning) (0) | 2025.09.14 |
| AI 모델 경량화 시리즈 3편: Adapters (0) | 2025.09.14 |
| AI 모델 경량화 시리즈 2편: Prefix-Tuning & Prompt-Tuning (0) | 2025.09.14 |