ML | DL/딥러닝 방법론|실습

AI 모델 경량화 시리즈 5편: QLoRA (Quantized LoRA)

Leeys 2025. 9. 14. 22:36
반응형

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


QLoRA

 

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 가능


동작 방식

  1. 4-bit Quantization
    • 모델 weight를 4-bit로 변환 (NF4/FP4 quantizer)
    • GPU에 로드 → forward 시 dequantize 후 연산
  2. LoRA 학습
    • attention projection 등 선택된 레이어에 LoRA 모듈 추가
    • 이 부분만 학습 (FP16/BF16)
  3. 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

 

반응형