PEFT(Parameter-Efficient Fine-Tuning)에서 가장 널리 사용되는 기법인 **LoRA(Low-Rank Adaptation)**

 

LoRA = Low-Rank Adaptation
즉, 기존 모델의 무거운 파라미터는 고정해두고, 아주 작은(저랭크) 행렬만 학습하는 방식의 파인튜닝 기법입니다.

GPT, BERT 같은 대규모 모델은 수억~수천억 개의 파라미터를 갖고 있는데,
모델을 파인튜닝하려면 원래는 이 모든 파라미터를 수정해야 했어요.

하지만 LoRA는 이렇게 말합니다:

❝ 기존 모델은 그대로 두고, 그 옆에 아주 작은 보정 모듈만 붙여서 학습하자! ❞


🔧 LoRA의 작동 원리

📌 기존 방식 (Full Fine-Tuning)

  • 모델의 모든 파라미터를 업데이트 (매우 비쌈, 느림)

📌 LoRA 방식

  • 기존의 가중치 행렬 W를 그대로 둠 
  • 대신, 두 개의 저차원 행렬 A, B를 만들어 이렇게 보정:    W’ = W + ΔW (ΔW = B @ A)

       즉, 학습 시 A와 B만 학습하고, 기존 W는 고정(freeze)

🧮 A: 낮은 차원으로 축소하는 행렬
🧮 B: 다시 원래 차원으로 확장하는 행렬


📦 구조 예시

예를 들어, W가 1024×1024 행렬이라면:

  • A는 1024×4 (저차원)
  • B는 4×1024
    → 총 8,000개만 학습! (기존 1백만 → 0.8% 수준)

✅ 왜 LoRA가 강력한가?

장점 설명
💾 파라미터 수 절감 전체의 0.1~2%만 학습
🚀 GPU 메모리 절약 대규모 모델도 1~2 GPU로 학습 가능
빠른 학습 짧은 시간에 파인튜닝 가능
🔁 모듈화 원래 모델은 고정이므로, LoRA 모듈만 교체하거나 공유 가능
 

🎯 언제 LoRA를 사용하면 좋을까?

  • 🔹 리소스가 부족할 때 (1-2 GPU, 노트북 환경)
  • 🔹 모델을 계속 재사용하고 싶을 때
  • 🔹 여러 작업에 맞춰 빠르게 미세조정할 때
  • 🔹 다양한 스타일, 성격, 언어 등에 맞춘 커스터마이징

🧪 실전 예시

예: 고객지원 챗봇에 LoRA 적용

  1. 기본 GPT 모델 사용 (학습된 사전 지식 유지)
  2. 회사 고객응대 스타일 데이터로 LoRA 학습 (1~2시간이면 가능)
  3. LoRA 모듈만 붙여서 배포 (원본 GPT는 그대로)

→ 일반 GPT는 “공손하게 말하지만 일반적인 응답”
→ LoRA 모델은 “회사 스타일로 친절하게, 약관대로 설명”


🧠 LoRA vs Full Fine-Tuning vs Adapter

항목 Full FT Adapter LoRA
학습 파라미터 100% 10%~ 0.1~2%
성능 유지 ✅ 높음 ✅ 중간~높음 ✅ 매우 높음
메모리/속도 ❌ 높음 보통 ✅ 매우 효율적
원래 모델 수정 ❌ O ❌ (freeze)
 

🔧 사용 도구

  • Hugging Face 🤗 PEFT + LoRA
  • 🤗 Transformers + bitsandbytes + QLoRA
  • OpenChatKit, LLaMA-LoRA, Alpaca-LoRA 등 수많은 오픈소스 기반 LoRA 적용 사례 존재

✅ 요약 정리

항목 설명
목적 대규모 모델을 가볍고 빠르게 파인튜닝하기 위함
핵심 방식 기존 가중치는 고정, 저랭크 행렬 A, B만 학습
장점 💾 메모리 절약, 🚀 속도 향상, 🧩 모듈화 가능
적용 분야 고객지원, 금융/의료 도메인 특화, 스타일 커스터마이징 등
대표 기술 Hugging Face PEFT + LoRA, QLoRA 등

 

+ Recent posts