콘텐츠로 이동

03. 머리 속에 그려야 할 그림#

📚 학습 목표: LLM 파인튜닝을 직관적으로 이해하기
⏱️ 읽는 시간: 10분


왜 멘탈 모델이 중요한가#

처음 배우는 분들은 용어에 휩쓸려서 큰 그림을 놓치기 쉽습니다. 이 문서는 "아, 그게 그런 거였구나" 감을 잡기 위한 시각적 비유 모음입니다.


그림 1: LLM은 "거대한 패턴 기계"#

   입력: "KPCS가 뭔가요?"
    ┌──────────────┐
    │              │
    │   40억 개의  │   ← Gemma 4 E4B의 파라미터
    │   숫자 행렬  │      (뇌세포 연결 강도)
    │              │
    └──────────────┘
   출력: "Korean Patient..."

핵심: LLM은 "생각"하는 게 아니라, 패턴에 맞는 다음 단어를 예측합니다.

  • 인간처럼 이해하는 게 아님
  • "~이 나오면 ~이 나올 확률이 높다"를 계산
  • 40억 개의 숫자들이 이 계산을 함께 결정

그림 2: 파인튜닝은 "포스트잇 붙이기"#

원본 책 (Gemma 4)
┌──────────────────┐
│ Chapter 1        │  ← 일반 상식
│ Chapter 2        │  ← 영어 문법
│ Chapter 3        │  ← 한국어
│ ...              │
│ Chapter 40       │  ← 수학
└──────────────────┘
        +
포스트잇 (LoRA 어댑터)
  📝 KPCS = ...
  📝 SOAP = ...
  📝 GODCH = ...
        =
튜닝된 책
┌──────────────────┐
│ Chapter 1        │
│   📝 KPCS = ...  │
│ Chapter 2        │
│ ...              │
└──────────────────┘

핵심: - 원본 책은 변경 없음 - 포스트잇만 우리가 만듦 (300MB) - 포스트잇 떼면 원본으로 돌아감 - 여러 세트의 포스트잇 가능 (도메인별 어댑터)


그림 3: 학습은 "시험 보고 채점하기"#

1. 문제 제시
   Q: "KPCS 1등급이 뭐예요?"

2. AI가 답변 (현재 실력)
   A: "환자가 1등급인 건..." (틀림)

3. 정답과 비교
   정답: "간호 요구도가 가장 높은..."
   차이: Loss = 2.35

4. 틀린 만큼 조정
   AI의 내부 숫자를 조금 바꿈

5. 다음 문제로
   (1~4 반복, 1,500건 × 3회 = 4,500회)

핵심: - 한 번에 끝나지 않음. 4,500회 반복 - Loss가 낮아질수록 실력 향상 - 너무 반복하면 "족보 외우기" (overfitting)


그림 4: 모델 크기는 "책장 크기"#

Gemma 4 E2B (2B)      Gemma 4 E4B (4B)       Gemma 4 26B
┌──────┐             ┌──────────┐          ┌─────────────────┐
│ 책장 │             │   책장   │          │      책장       │
│  작음 │             │  중간    │          │      큼         │
│      │             │          │          │                 │
│ 2GB  │             │  4GB     │          │     16GB        │
└──────┘             └──────────┘          └─────────────────┘

빠름 ←──────────────────────────────────────────→ 똑똑함
가벼움 ←─────────────────────────────────────────→ 무거움

왜 E4B를 선택했나: - E2B: 너무 작아서 복잡한 추론 못 함 - E4B: 맥미니 24GB에 딱 맞음 ⭐ - 26B: 맥미니로는 빡빡, 서버 필요


그림 5: 양자화는 "사진 압축"#

원본 사진 (FP16)           Q8 압축             Q4_K_M 압축
┌──────────────┐         ┌──────────┐         ┌────────┐
│              │         │          │         │        │
│   8GB        │   →     │   4GB    │   →     │  3GB   │
│   선명       │         │  거의    │         │ 미세   │
│              │         │  동일    │         │ 흐림   │
└──────────────┘         └──────────┘         └────────┘

품질 100%                 98%                   94%

핵심: Q4_K_M은 품질 94%이면서 크기 37%. 가장 효율적인 양자화.

감 잡기: - 일반 사용자는 Q4와 FP16을 구분하기 어려움 - 맥미니 같은 소형 기기엔 Q4가 필수 - 서버급이면 Q8 이상 고려


그림 6: 데이터 카테고리는 "5과목 공부"#

전체 1,500건
├─ 간호 기록 (25%) ── 375건 ── "음성→SOAP 변환"
├─ 병원 운영 (25%) ── 375건 ── "수가, 인력, 평가"
├─ 의료 용어 (15%) ── 225건 ── "진단명, 약품"
├─ 컨설팅   (20%) ── 300건 ── "GODCH, ABC 원가"
└─ 문서 작성 (15%) ── 225건 ── "보고서, 공문"

왜 균형이 중요한가: - 간호 기록만 1,000건 → 간호만 잘하고 경영은 바보 - 골고루 섞어야 범용 도메인 모델이 됨 - 각 카테고리가 최소 200건 이상 필요

비유: 국영수사과 5과목 공부. 수학만 공부하면 다른 과목 시험에서 0점.


그림 7: 학습 파이프라인은 "빵 만들기"#

[1. 재료 준비]       data/raw/ 에 날것 넣기
[2. 반죽]           PII 제거, 포맷 변환 (make data)
[3. 발효]           JSONL로 정리 (자동)
[4. 굽기]           MLX LoRA 학습 (make train-mlx)
                    ← 여기가 진짜 오래 걸림 (3-5시간)
[5. 식히기]         어댑터 병합 (make fuse-mlx)
[6. 포장]           GGUF 변환 (make convert)
[7. 진열]           Ollama 등록 (make deploy)
[8. 시식 평가]      품질 테스트 (make evaluate)
[9. 판매]           실제 서비스에 연동

핵심: 각 단계가 make 명령 하나로 끝남. 복잡해 보여도 실제로는 순서대로 실행만 하면 됨.


그림 8: 맥미니 올인원 = "가정용 AI 공장"#

┌─────────────────────────────────┐
│  asfreeas_mini (M4 24GB)        │
│                                 │
│  🏭 공장 역할:                   │
│  ├── 학습 (야간)                │
│  ├── 변환 (1회)                 │
│  ├── 배포 (Ollama)              │
│  └── 서비스 (24/7)              │
│                                 │
│  💾 저장소:                      │
│  ├── data/    (원본 데이터)      │
│  ├── outputs/ (학습 결과물)      │
│  └── ollama/  (서비스 중 모델)   │
│                                 │
│  🌐 외부 연결:                   │
│  └── Cloudflare Tunnel          │
│       └── llm.mediconsol.com    │
└─────────────────────────────────┘
          │ API
    Voice ENR, RNDiary, n8n, Connect

핵심: 한 머신에서 학습부터 서비스까지 전부. 환자 데이터가 맥미니 밖으로 안 나감.


그림 9: Loss 그래프 읽는 법#

이상적 학습 (성공)#

Loss
3.0 ┤●
2.0 ┤ ●●
    │    ●●
1.0 ┤       ●●●●
    │            ●●●●●●  ← 이상적으로 수렴
0.5 ┤__________________________→ Iter
     0    200    400    600

Overfitting (너무 외움)#

Loss
2.0 ┤●
1.0 ┤ ●●●
    │    ●●       ● Train (계속 감소)
0.5 ┤       ●●●●●
    │            ×  
    │      ×        × ← Val (올라가기 시작)
    │  ×                 (외우고 있다는 신호)
0   └──────────────────→ Iter
     0    200    400    600

학습 안 됨 (문제 있음)#

Loss
3.0 ┤●  ●  ●  ●  ●  ●  ← 변화 없음
    │                   (데이터나 lr 문제)
2.0 ┤
1.0 ┤_________________→ Iter

핵심: 학습 중 터미널 출력을 보고 이 패턴을 판별할 수 있어야 함.


그림 10: 버전 관리 흐름#

v0.1.0 (더미 테스트)   ← 파이프라인 검증용
v1.0.0 (첫 정식)       ← 실제 데이터 첫 학습
  ↓ (피드백 반영)
v1.1.0 (개선)         ← bad case 추가 학습
  ↓ (카테고리 확장)
v1.2.0 (확장)         ← 새 카테고리 추가
  ↓ (롤백)
v1.1.0               ← v1.2.0에 문제 생기면 복귀

핵심: - 항상 이전 버전 보관 (롤백용) - HuggingFace에 태그로 저장 - Ollama는 mediconsol-v1:1.1.0, mediconsol-v1:latest 동시 유지


멘탈 체크리스트#

이제 아래를 자신 있게 그릴 수 있어야 합니다:

  • LLM이 뭘 하는지 그림 1로 설명 가능
  • LoRA가 왜 포스트잇인지 그림 2로 설명 가능
  • 학습이 뭘 반복하는지 그림 3으로 설명 가능
  • 왜 E4B를 골랐는지 그림 4로 설명 가능
  • Q4_K_M이 뭔지 그림 5로 설명 가능
  • 데이터 균형이 왜 중요한지 그림 6으로 설명 가능
  • 전체 파이프라인이 뭘 하는지 그림 7로 설명 가능
  • 맥미니가 왜 좋은지 그림 8로 설명 가능
  • Loss 그래프 3가지 패턴 구분 가능 (그림 9)
  • 버전 관리 이유 이해 (그림 10)

다음 단계#

이제 직접 한 번 돌려볼 시간입니다.

다음 문서: 04_FIRST_RUN.md - 처음으로 한 번 돌려보기 ⭐

가장 중요한 문서입니다. 차근차근 따라오면 오늘 안에 첫 파인튜닝이 완료됩니다.


💡 핵심 요약#

LLM = 패턴 기계
파인튜닝 = 포스트잇 붙이기
학습 = 시험 반복
맥미니 올인원 = 가정용 AI 공장
Loss 그래프 = 학습의 건강 진단서