<aside> 🧑‍💼 3개 모델 × 6단계 실험으로 만든 QLoRA 자기소개 챗봇. Ministral 8B ep6 = 88%. Modal vLLM 배포. (진행 중 — 환각 교정 + ft.parkjh.dev 연동 예정)

</aside>


핵심 성과

지표
최종 정확도 22/25 (88%) — 사람 평가
최종 모델 Ministral 8B + QLoRA (r=32, alpha=128)
학습 데이터 2,622건 (v3, 6개 소스 조합)
학습 시간 59분 (7에폭, RTX 5070 Ti)
비교 모델 3개 (Ministral/Qwen3/Gemma4)
총 실험 6단계 × 17개 모델 = 4.7시간
비용 전기세 ~100원 (클라우드 환산 $21.3)
배포 Modal vLLM (L4 GPU, OpenAI 호환 API)
상태 ⏳ 진행 중 (환각 3건 교정 + ft.parkjh.dev 연동)

기술 스택

레이어 기술
프레임워크 Unsloth 2026.5.8 + TRL SFTTrainer
양자화 QLoRA 4-bit (NF4, double quantization)
베이스 모델 Ministral-3-8B-Instruct-2512
서빙 Modal (vLLM 0.21.0, L4 GPU, --enable-lora)
API OpenAI 호환 (/v1/chat/completions)
GPU RTX 5070 Ti 16GB (CUDA 12.8)
Python 3.12, PyTorch 2.10.0+cu128, PEFT 0.19.1

3개 모델 비교 결과

모델 정확도 환각 속도 핵심 설정
Ministral 8B ep6 ★ 88% 2건 13 tok/s lr=5e-5, alpha=128 (4×r)
Qwen3 8B ep5 60% 5건 18.9 tok/s lr=2e-4, alpha=64 (2×r)
Gemma4 E4B ep2 64% - 9.0 tok/s lr=5e-5, alpha=16 (1×r)

데이터 설계 — 핵심 차별점

<aside> 💡 모델 크기보다 데이터 설계가 10배 중요. 같은 8B 모델이 데이터에 따라 0/8 → 8/8로 변한다.

</aside>

3대 핵심 원칙:

  1. 같은 사실 × 다양한 질문 변형 = 최강 전략
  2. 부정 데이터("없습니다/모릅니다") = 환각 방지 핵심
  3. 민감정보 거부("개인정보라 어렵습니다")도 학습 가능

발견한 공식

최적 에폭 ≈ 2000 / 데이터 건수
과적합 경계: 최적 + 1에폭에서 급격히 하락

핵심 발견

1. lora_alpha >> r이 안정적 — IBM 10,000실험: 낮은 lr(5e-5) + 높은 alpha(128)

2. 자동 테스트는 환각을 놓친다 — "삼성에서 12년" 같은 질문 동조 환각은 키워드 매칭으로 탐지 불가

3. 데이터 설계 > 모델 크기 — 291건(0/8) → 2,622건(22/25)으로 동일 모델 성능 극대화

4. FT의 강점은 톤/페르소나 — RAG보다 자연스러운 1인칭 대화 스타일

배포 (Modal vLLM)