▶️25분
[영상] LLM 파인튜닝 배포 -- QLoRA/QDoRA
평가 & 배포
[영상] LLM 파인튜닝 배포 -- QLoRA/QDoRA
QLoRA 파인튜닝 > 평가 & 배포
학습 목표
파인튜닝 모델의 성능을 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에 근접한 성능을 낸다
