파인튜닝 (Fine-tuning) — LoRA를 활용한 도메인 특화 모델 구축
요약
LoRA를 활용하여 도메인 특화 모델을 구축하는 파인튜닝 과정을 다룹니다. RAG와 파인튜닝의 차이점을 설명하고, Hugging Face와 PEFT 라이브러리를 사용하여 효율적으로 모델을 학습시키는 튜토리얼을 제공합니다.
핵심 포인트
- RAG는 최신 정보 검색에, 파인튜닝은 특정 스타일 및 전문 용어 학습에 적합함
- LoRA는 전체 파라미터 대신 저차원 행렬만 학습하여 비용과 자원을 절약함
- Hugging Face와 PEFT 라이브러리를 활용한 무료 파인튜닝 구현 방법 제시
- 데이터셋 준비부터 학습, 추론 및 베이스 모델과의 비교까지의 워크플로우 포함
서론 (Introduction)
Chapter 5 (MLOps)에서 우리는 CI/CD 파이프라인을 구축했습니다. 이번 장에서는 다른 접근 방식인 파인튜닝 (Fine-tuning) — 즉, 모델 자체를 사용자의 데이터로 학습시키는 방법을 탐구합니다.
[RAG]
질문 → DB 검색 → 결과를 LLM에 전달 → 답변
→ 문서가 필요하며, 검색 비용이 발생함
...
RAG vs 파인튜닝 (Fine-tuning) 사용 시점
| RAG | 파인튜닝 (Fine-tuning) | |
|---|---|---|
| 최적 용도 | 최신 정보, 내부 문서 검색 | 특정 스타일, 형식, 전문 용어 |
| ... |
Gemini API 파인튜닝 (Fine-tuning)에 대하여:
2025년 5월부터 Gemini API 무료 티어에서는 파인튜닝 (Fine-tuning)을 더 이상 사용할 수 없습니다.
Vertex AI (유료)는 여전히 지원합니다.
이 튜토리얼은 **Hugging Face + LoRA (완전 무료)**를 사용합니다.
파인튜닝 (Fine-tuning)의 유형
전체 파인튜닝 (Full Fine-tuning) vs LoRA
전체 파인튜닝 (Full Fine-tuning):
모델의 모든 파라미터 (수십억 개)를 업데이트함
→ 정확도는 높지만 GPU가 필요함 — 비용이 많이 듦
...
LoRA의 작동 방식:
원본 모델 가중치 행렬 W (변경되지 않음)
↓
저차원 행렬 (low-rank matrices) A × B를 추가 (이 부분만 학습됨)
...
디렉토리 구조 (Directory Structure)
pgvector-tutorial/
├── 기존 파일들 (existing files)
└── finetuning/
...
1. 라이브러리 설치 (Install Libraries)
pip install transformers datasets peft accelerate torch
pip freeze > requirements.txt
참고:
torch는 용량이 큰 라이브러리입니다 (수 GB). 설치에 시간이 걸립니다.
CPU 전용의 경우:pip install torch --index-url https://download.pytorch.org/whl/cpu
2. 데이터셋 준비 (Dataset Preparation) — finetuning/prepare_dataset.py
앞서 생성한 pgvector 문서들을 파인튜닝 (Fine-tuning) 데이터로 사용할 것입니다.
# finetuning/prepare_dataset.py
"""
파인튜닝 (Fine-tuning) 데이터셋 준비
...
mkdir finetuning
python finetuning/prepare_dataset.py
3. LoRA 파인튜닝 (LoRA Fine-tuning) — finetuning/train_lora.py
# finetuning/train_lora.py
"""
LoRA 파인튜닝 (Fine-tuning)
...
python finetuning/train_lora.py
4. 추론 (Inference) — finetuning/inference.py
파인튜닝 (Fine-tuning)된 모델로 추론 (Inference)을 실행하고 이를 베이스 모델 (Base model)과 비교합니다.
# finetuning/inference.py
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
...
python finetuning/inference.py
5. 데이터 품질 가이드라인 (Data Quality Guidelines)
데이터 품질은 파인튜닝 (Fine-tuning)에서 가장 중요한 요소입니다.
좋은 데이터의 특징
✅ 일관성 (Consistency): 동일한 질문 → 동일한 스타일의 답변
✅ 정확성 (Accuracy): 잘못된 정보 없음
✅ 다양성 (Diversity): 매우 다양한 질문 패턴을 포괄
...
데이터 크기 vs 기대되는 개선 사항
| 데이터셋 크기 | 기대되는 개선 사항 |
|---|---|
| 10–50개 샘플 | 최소한의 변화 |
| ... |
6. 훈련 결과 읽기 (Reading the Training Results)
출력 결과가 알려주는 것:
| 지표 (Metric) | 값 | 의미 |
|---|---|---|
trainable% | 0.09% | 2.7B 파라미터 중 2.6M만 훈련됨 (LoRA 효과) |
| ... |
7. .gitignore에 추가
모델 가중치 (Model weight) 파일은 버전 관리 (Version control)를 해서는 안 됩니다. 수 GB에 달하는 용량으로 리포지토리 (Repository)를 비대하게 만들 수 있기 때문입니다.
cat >> .gitignore << 'EOF'
# Fine-tuning outputs
finetuning/lora_output/
...
프로덕션 (Production) 환경에서 사용하려면 Hugging Face Hub에 업로드하세요:
model.push_to_hub("your-username/my-lora-model")
일반적인 오류 (Common Errors)
| 오류 (Error) | 원인 | 해결 방법 |
|---|---|---|
unexpected keyword argument 'no_cuda' | 오래된 파라미터 이름 | use_cpu=True 사용 |
| ... |
다음 단계 (Next Steps)
- [Chapter 7: Multi-Agent] — 오케스트레이터 (Orchestrators)와 워커 (Workers)가 협업하는 시스템 설계
- RAG + 파인튜닝 (Fine-tuning) 하이브리드 — 스타일을 위해 파인튜닝을 사용하고, 지식을 위해 RAG를 사용
- Vertex AI 파인튜닝 (유료) — 자신의 데이터를 사용하여 Gemini 2.5 Flash를 파인튜닝하기 위함
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기