▶️25

[영상] LLM 파인튜닝 배포 -- QLoRA/QDoRA

평가 & 배포

학습 목표

파인튜닝 모델의 성능을 Perplexity·ROUGE·도메인 특화 벤치마크로 평가하는 방법을 설명할 수 있다 QLoRA 어댑터를 기반 모델에 merge해 단독 배포 가능한 모델을 생성하는 코드를 작성할 수 있다 GGUF·GPTQ 양자화 포맷으로 배포 모델을 경량화하는 차이점과 사용 시나리오를 설명할 수 있다 Ollama 또는 llama.cpp를 사용해 로컬 서버에 파인튜닝 모델을 배포하는 절차를 설명할 수 있다

영상 핵심 정리 — LLM 파인튜닝 배포: QLoRA/QDoRA

이 영상은 파인튜닝이 완료된 모델을 어떻게 평가하고, 프로덕션 환경에 배포 가능한 형태로 변환하는지를 다룬다. 어댑터 merge, 양자화 포맷 선택, 로컬/클라우드 배포 전략까지 실전 흐름을 따라간다.


1. 평가 지표 정리

지표의미목표값 (예시)
Perplexity모델 예측 확신도 (낮을수록 좋음)기반 모델 대비 -40%
ROUGE-L생성 텍스트와 정답의 최장 공통 부분열> 0.45
도메인 정확도알람 코드 정확 해석 비율> 85%
응답 속도토큰 생성 속도 (tok/s)> 20 tok/s

2. 어댑터 Merge + 양자화 배포 흐름

from peft import PeftModel
from transformers import AutoModelForCausalLM

base_model = AutoModelForCausalLM.from_pretrained(
    'meta-llama/Meta-Llama-3.1-8B-Instruct',
    torch_dtype=torch.float16, device_map='cpu'
)

model = PeftModel.from_pretrained(base_model, './mfg-adapter')
merged_model = model.merge_and_unload()
merged_model.save_pretrained('./mfg-llama-merged')
# GGUF 변환
python convert.py ./mfg-llama-merged --outtype q4_K_M \
  --outfile mfg-llama-q4.gguf

# Ollama로 서빙
ollama create mfg-assistant -f Modelfile
ollama run mfg-assistant "CNC-07 E204 알람 원인은?"

3. QDoRA vs QLoRA

LoRA:  ΔW = B × A  (크기만 학습)
DoRA:  W = m × (W + ΔW) / ||W + ΔW||  (방향과 크기 모두 학습)
→ rank=4 DoRA ≈ rank=16 LoRA 성능
→ 제조 도메인처럼 전문 용어가 많은 경우 효과적

함정 주의: merge 전 어댑터만으로 배포하면 기반 모델(8GB+)도 항상 같이 로드해야 해 메모리 낭비가 크다. 프로덕션 배포 전 반드시 merge + 양자화 단계를 거쳐 단일 경량 파일로 만들어야 한다. merge 후 품질 재검증도 필수다.


다음 task와의 연결

다음 reading '파인튜닝 모델 평가 (Perplexity, MMLU) + 양자화 배포'에서는 오늘 배운 평가 지표를 코드로 계산하는 방법과, MMLU 벤치마크를 제조 도메인 맞춤 버전으로 구성하는 방법을 다룬다.

AI로 학습하기 — 꿀팁
🤖LoRA 병합 및 GGUF 변환 코드 생성AI 학습 팁

AI 에이전트에게 QLoRA 어댑터를 기반 모델에 병합하고 GGUF/GPTQ 포맷으로 변환하는 코드를 작성하게 하고, 제조 현장 배포 환경에 맞는 포맷 선택 기준을 검토하세요.

QLoRA로 파인튜닝한 제조 도메인 LLM을 배포하는 코드를 작성해줘. model.merge_and_unload()로 LoRA 어댑터를 기반 모델에 병합하고, 현장 엣지 서버(CPU+소형 GPU) 배포용 GGUF와 RTX 3090 서버용 GPTQ 포맷으로 각각 변환하는 방법을 보여줘. Perplexity로 파인튜닝 전후를 비교해 도메인 제조 용어 이해도가 30~50% 향상됐는지 검증하는 코드도 포함해줘.
이 팁이 도움이 됐나요?
핵심 포인트
  • Perplexity(혼란도)는 모델이 텍스트를 얼마나 자신 있게 예측하는지를 나타낸다 — 값이 낮을수록 좋으며, 제조 도메인 파인튜닝 후 30~50% 감소를 목표로 한다
  • 어댑터 merge: `model.merge_and_unload()` 한 줄로 LoRA 가중치를 기반 모델에 흡수해 추론 시 추가 오버헤드 없는 단일 모델로 만든다
  • GGUF 포맷(llama.cpp/Ollama용)은 CPU+소형 GPU 배포에 최적, GPTQ(GPU 전용)는 RTX 3090급 서버 배포에 적합하다
  • QDoRA(Quantized Weight-Decomposed LoRA)는 LoRA보다 방향(Direction)까지 학습해 rank가 낮아도 Full Fine-Tuning에 근접한 성능을 낸다