Home / 모델 커스터마이징 / 모델 커스터마이징
Module

모델 커스터마이징

파운데이션 모델을 도메인에 맞게 커스터마이징하는 전략

⏱ 60분 163 / 189

모델 커스터마이징

CPT · SFT · DPO · GRPO · Distillation · Bedrock Fine-tuning

범용 모델을 도메인 전문가로 바꾸는 5가지 방법

파운데이션 모델의 한계 극복 — 프롬프트로 안 되면 가중치를 바꾼다

커스터마이징 개요

파운데이션 모델 한계 · 5가지 기법 · 의사결정 흐름

PART 1 · 커스터마이징 개요

커스터마이징

파운데이션 모델의 한계와 5가지 대응 기법

프롬프트로 안 되면 가중치를 바꾼다

범용 파운데이션 모델의 4대 한계를 5가지 기법으로 넘습니다 — 항상 비용이 낮은 방법부터 시도합니다.

  • 프롬프트 엔지니어링 — 비용 $0 · 대부분의 유스케이스 해결
  • RAG — 인프라 비용 · 환각 대폭 감소
  • SFT — GPU 시간 · 태스크 특화
  • DPO/GRPO — 선호·보상 정렬
  • CPT — 클러스터 · 최후 수단
takeaway

대부분은 프롬프트 엔지니어링 + RAG로 충분합니다 — 안 될 때만 가중치를 건드립니다.

PART 1 · 커스터마이징 개요

파운데이션 모델의 4대 한계

범용 모델이 프로덕션에서 부딪히는 근본적 문제

도메인 전문성 부족

의료·법률·금융 특수 용어와 추론 패턴을 학습하지 못함

환각 (Hallucination)

사내 전용 데이터·최신 정보 미반영 → 그럴듯한 오답 생성

지시 수행 불일치

특정 포맷(JSON, SQL)·응답 톤·길이 제어가 불안정

비용 비효율

단순 반복 태스크에 대형 모델 호출 → 과잉 비용

PART 1 · 커스터마이징 개요

5가지 기법 스펙트럼

비용이 낮은 순서대로 시도 — 대부분은 프롬프트 엔지니어링 + RAG로 충분

PART 1 · 커스터마이징 개요

의사결정 흐름

항상 비용이 낮은 방법부터 시도

  1. 1
    프롬프트로 해결?

    프롬프트 최적화 (DSPy/GEPA) — GEPA는 GRPO를 평균 6%·최대 20% 능가 (ICLR 2026)

  2. 2
    RAG로 해결?

    검색으로 최신/도메인 정보 주입 — 대부분의 환각 문제 해결

  3. 3
    포맷/톤 필요?

    SFT — 1K~10K 데이터로 응답 형식 각인

  4. 4
    안전성/정렬?

    DPO/GRPO — 선호 쌍 또는 검증 가능 보상으로 정렬

  5. 5
    도메인 지식?

    CPT — 수십억 토큰 비레이블 코퍼스, 최후 수단

takeaway

질문 다섯 개를 비용 순서대로 던집니다 — 앞 단계에서 해결되면 거기서 멈춥니다.

SFT와 LoRA

Instruction Tuning · LoRA/QLoRA · Bedrock Fine-tuning

PART 2 · SFT와 LoRA

SFT와 LoRA

행동을 각인하는 가장 표준적인 경로

행동을 각인한다

Instruction-Response 쌍으로 응답 형식과 태스크를 학습시킵니다 — LoRA가 단일 GPU 학습을 가능하게 만듭니다.

  • SFT — Instruction-Response 쌍 1K~10K
  • LoRA/QLoRA — 전체 가중치의 0.1~1%만 학습
  • 단일 GPU — H100 수 시간
  • Bedrock Fine-tuning — 관리형 SFT
takeaway

학습 파라미터를 0.1~1%로 줄여도 성능은 Full의 95~99% — LoRA가 SFT의 기본값이 된 이유입니다.

PART 2 · SFT와 LoRA

SFT 동작 원리

Instruction-Response 쌍으로 모델의 행동을 각인

  1. 1
    데이터 준비

    (Instruction, Response) 쌍 1K~10K 고품질 샘플 — JSONL 포맷

  2. 2
    LoRA 적용

    전체 가중치의 0.1~1%만 학습 — rank 16~64, 메모리 대폭 절감

  3. 3
    학습

    단일 GPU(H100) 수 시간 — 에포크 1~3, lr 1e-5~5e-5

  4. 4
    평가

    홀드아웃 세트에서 정확도·포맷 일치율 측정 → 배포 결정

takeaway

데이터 준비 → LoRA 적용 → 학습 → 평가 — 홀드아웃 평가를 통과해야 배포로 넘어갑니다.

PART 2 · SFT와 LoRA

Full FT vs LoRA vs QLoRA

파라미터 효율적 학습으로 비용을 대폭 절감 — 표의 메모리·시간은 규모 가늠용 예시

기법학습 파라미터GPU 메모리학습 시간성능
Full Fine-Tuning100% (전체)8× GPU수 일★★★ 최고
LoRA0.1~1%1× GPU수 시간★★★ Full의 95~99%
QLoRA0.1~1% (4bit 양자화)1× GPU (더 작은)수 시간★★☆ Full의 90~95%

현 시점 권장: QLoRA SFT on unsloth — 단일 H100에서 7B~70B 모델 학습이 가능합니다.

PART 2 · SFT와 LoRA

SFT 데이터 포맷

Bedrock Fine-tuning이 요구하는 JSONL 형식

json
{"system": "AWS 비용 분석 전문가. JSON으로 답변.",
 "messages": [
   {"role": "user", "content": "지난달 EC2 비용 알려줘"},
   {"role": "assistant", "content": "{\"service\": \"EC2\", \"cost\": 1234.56, \"change\": \"+12%\"}"}
 ]}
{"system": "AWS 비용 분석 전문가. JSON으로 답변.",
 "messages": [
   {"role": "user", "content": "S3 비용 추이 보여줘"},
   {"role": "assistant", "content": "{\"service\": \"S3\", \"cost\": 89.12, \"change\": \"-3%\"}"}
 ]}
PART 2 · SFT와 LoRA

Bedrock Fine-tuning API

CreateModelCustomizationJob — S3에 데이터 올리고 API 한 번 호출

python
import boto3

# ① 컨트롤 플레인 "bedrock" 클라이언트로 잡 생성 (bedrock-runtime 아님)
client = boto3.client("bedrock", region_name="us-east-1")

response = client.create_model_customization_job(
    jobName="cost-analyst-sft",
    customModelName="cost-analyst-v1",
    roleArn="arn:aws:iam::123456789012:role/BedrockFTRole",
    # ② 베이스 모델 + 커스터마이징 유형 선택
    baseModelIdentifier="amazon.nova-pro-v1:0",
    customizationType="FINE_TUNING",
    # ③ 학습 데이터(JSONL)와 출력 경로는 S3 URI — roleArn에 접근 권한 필요
    trainingDataConfig={
        "s3Uri": "s3://my-bucket/training.jsonl"
    },
    outputDataConfig={
        "s3Uri": "s3://my-bucket/output/"
    },
    # ④ 하이퍼파라미터는 모두 문자열로 전달
    hyperParameters={
        "epochCount": "3",
        "learningRate": "0.00001",
    },
)
  • boto3.client("bedrock") — 잡 생성은 컨트롤 플레인, 추론(bedrock-runtime)과 다른 클라이언트
  • customizationType="FINE_TUNING" — SFT 지정, baseModelIdentifier로 베이스 모델 선택
  • trainingDataConfig / outputDataConfig — JSONL과 산출물 모두 S3 URI, roleArn이 접근 권한 보유
  • hyperParameters — 전부 문자열로 전달 (Nova는 epochCount 1~5 · learningRate 1e-6~1e-4)
PART 2 · SFT와 LoRA

Bedrock Fine-tuning 옵션

관리형 학습 · Nova Forge · RFT

관리형

S3에 JSONL 업로드 → CreateModelCustomizationJob → 완료 시 On-Demand 호출

Nova 모델 지원

Nova 2 Pro (Preview)/Lite + Nova Forge SDK — SFT·Reinforcement fine-tuning·Distillation 지원

RFT (강화 미세조정)

검증 가능한 보상으로 자가 개선 — Nova 2 Lite·gpt-oss-20B·Qwen3 32B 지원

Alignment

RLHF → DPO → GRPO · 선호 데이터 · 검증 가능 보상

PART 3 · Alignment

Alignment

보상 모델을 지워온 정렬의 역사

정렬은 점점 단순해진다

보상 모델을 단계적으로 제거하며 정렬 기법이 단순해져 왔습니다 — 대부분의 정렬은 DPO가 권장입니다.

  • RLHF — 보상 모델 + PPO (2022)
  • DPO — chosen/rejected 쌍만 (2023)
  • GRPO/RFT — 검증 가능 보상 (2025)
  • Multi-turn RL — 에이전트 시퀀스 보상 (2026)
takeaway

순서가 중요합니다 — SFT로 형식을 먼저 잡고, 그 위에 DPO로 품질·안전성을 정렬합니다.

PART 3 · Alignment

Alignment 진화

보상 모델을 단계적으로 제거하며 단순화

PART 3 · Alignment

DPO — 실전 적용

chosen/rejected 쌍 5K~50K로 인간 선호에 정렬

데이터 포맷

  • 각 샘플 = (prompt, chosen, rejected)
  • chosen: 인간이 선호하는 응답
  • rejected: 비선호 응답 (환각, 유해, 부정확)
  • 5K~50K 쌍이면 효과적

SFT → DPO 레이어링

  • 1단계: SFT로 태스크 형식 학습
  • 2단계: DPO로 품질·안전성 정렬
  • SFT 없이 DPO만 하면 성능 하락
  • 순서 중요 — 반드시 SFT 먼저
takeaway

SFT 없이 DPO만 적용하면 성능이 하락합니다 — 반드시 SFT → DPO 순서를 지킵니다.

PART 3 · Alignment

RLHF vs DPO vs GRPO

상황에 맞는 정렬 기법 선택

기법필요 데이터보상 모델안정성적합 상황
RLHF (PPO)선호 쌍 + 보상 모델✓ 필요낮음 (불안정)대규모 범용 모델 정렬
DPOchosen/rejected 쌍만✗ 불필요높음대부분의 정렬 — 권장
GRPO/RFT검증 가능 보상 함수✗ 불필요높음수학·코드·논리 태스크
Multi-turn RL에이전트 환경 보상✗ 불필요중간에이전트 워크플로우 최적화
takeaway

대부분의 정렬은 DPO로 충분합니다 — 수학·코드처럼 정답이 검증 가능한 태스크라면 GRPO/RFT가 적합합니다.

CPT와 Distillation

Continued Pre-Training · Knowledge Distillation · Bedrock 관리형

PART 4 · CPT와 Distillation

CPT와 Distillation

지식을 넣는 기법과 비용을 줄이는 기법

지식을 넣거나, 비용을 줄이거나

CPT는 수십억 토큰 비레이블 코퍼스로 도메인 지식을 확장하고, Distillation은 Teacher의 지식을 소형 Student로 압축합니다.

  • CPT — 비레이블 코퍼스 · 지식 확장 · 가장 비용 높음
  • Distillation — Teacher→Student 전이
  • Bedrock Model Distillation — 관리형 자동 합성·학습·배포
takeaway

CPT는 지식을 넣는 기법, Distillation은 비용을 줄이는 기법입니다 — 목표가 정반대이니 혼동하지 않습니다.

PART 4 · CPT와 Distillation

CPT (Continued Pre-Training)

수십억 토큰 비레이블 코퍼스로 모델의 도메인 지식을 확장

SFT

행동을 가르침

  • 레이블 데이터 (Instruction→Response)
  • 1K~10K 샘플
  • "이렇게 답해" 패턴 학습
  • 비용: GPU 시간

SFT는 모델에게 "어떻게 행동할지"를 가르칩니다. 기존 지식 위에 행동 양식을 입히는 것.

CPT

지식을 넣음

  • 비레이블 코퍼스 (도메인 문서 그대로)
  • 수십억~수천억 토큰
  • 도메인 언어·개념 자체를 학습
  • 비용: GPU 클러스터

CPT는 모델의 "알고 있는 것"을 확장합니다. 의료 논문, 법률 문서 등 도메인 지식을 가중치에 각인.

takeaway

SFT는 "어떻게 답할지"를, CPT는 "무엇을 아는지"를 바꿉니다 — 도메인 지식 자체가 부족할 때만 CPT로 갑니다.

PART 4 · CPT와 Distillation

Knowledge Distillation

Teacher(대형) → Student(소형) — 성능 유지 · 비용 절감

  1. 1
    Teacher 선택

    대형 모델(Nova Premier, Llama 3.1 405B 등)이 고품질 응답 생성 — Bedrock은 동일 프로바이더 페어링만

  2. 2
    합성 데이터 생성

    Teacher가 도메인 질문에 대한 응답 수만~수십만 건 생성

  3. 3
    Student 학습

    소형 모델(Nova Lite·Micro 등)을 Teacher 응답으로 SFT

  4. 4
    배포

    Student 모델로 프로덕션 서빙 — 비용 최대 75% 절감 (AWS 공식, 정확도 손실 2% 미만)

takeaway

Amazon Bedrock Model Distillation을 쓰면 Teacher 선택만으로 합성·학습·배포가 관리형으로 진행됩니다.

의사결정과 파이프라인

데이터 규모 · 비용 구조 · 파이프라인 자동화

PART 5 · 의사결정과 파이프라인

의사결정과 파이프라인

데이터·비용·자동화 세 축

데이터와 비용이 기법을 고른다

기법별 데이터 규모와 비용 구조를 표로 잡고, SageMaker AI 파이프라인 자동화로 마무리합니다.

  • 데이터 규모 — SFT 1K~10K · DPO 5K~50K · CPT 1B+ 토큰
  • 비용 순서 — 프롬프트 엔지니어링 → RAG → SFT → DPO/GRPO → CPT
  • SageMaker AI — 학습→평가→배포 자동화
takeaway

기법 선택의 첫 질문은 데이터입니다 — 필요한 규모와 형식을 갖췄는지부터 확인합니다.

PART 5 · 의사결정과 파이프라인

데이터 규모 가이드

기법별 필요 데이터 양과 형식

기법데이터 유형최소 규모권장 규모형식
SFT(Instruction, Response) 쌍1001K~10KJSONL — prompt + completion
DPO(prompt, chosen, rejected) 삼중1K5K~50KJSONL — 3필드
GRPO/RFT검증 함수 + 시드 프롬프트없음 (자가 생성)1K+ 시드Python reward fn
CPT비레이블 도메인 코퍼스100M 토큰1B~100B 토큰원문 텍스트
DistillationTeacher 합성 응답10K50K~500KJSONL
takeaway

SFT는 100건부터 시작할 수 있지만 권장은 1K~10K입니다 — GRPO/RFT는 데이터 대신 검증 함수가 필요합니다.

PART 5 · 의사결정과 파이프라인

비용 순위

항상 비용이 낮은 기법부터 시도 — 금액은 규모 가늠용 예시

  1. 1
    프롬프트 엔지니어링 (무료)

    프롬프트만 수정. 인프라 비용 $0. DSPy/APO로 자동 최적화하면 SFT급 성능 가능.

  2. 2
    RAG (인프라)

    벡터 DB + 임베딩 모델 운영비. 모델 학습 비용 없음. OpenSearch Serverless 기준.

  3. 3
    SFT — QLoRA (GPU)

    단일 H100 수 시간. unsloth 사용 시 7B~70B 모델. 약 $10~100/run.

  4. 4
    DPO/GRPO (GPU+)

    SFT 이후 추가 학습. 데이터 수집 비용 추가. 약 $50~500/run.

  5. 5
    CPT (클러스터)

    다중 GPU 수 일~수 주. 수천 달러~수만 달러. HyperPod 권장.

takeaway

프롬프트 엔지니어링 $0에서 CPT 수만 달러까지 — 아래로 내려갈수록 비용이 커지므로 위에서부터 시도합니다.

PART 5 · 의사결정과 파이프라인

프로덕션 파이프라인

SageMaker AI로 학습→평가→배포 자동화

takeaway

평가에 합격한 모델만 배포되고, CloudWatch 메트릭이 다시 데이터로 돌아옵니다 — 피드백 루프가 파이프라인을 닫습니다.

PART 5 · 의사결정과 파이프라인

대부분은 프롬프트로 충분

프롬프트 엔지니어링 → RAG → SFT → DPO → CPT — 안 될 때만 가중치를 건드리는 비용 순서

대부분은 프롬프트로 충분하다

프롬프트 엔지니어링 → RAG → SFT → DPO → CPT — 비용 순서대로 시도하고, 안 될 때만 가중치를 건드립니다.

대부분은 프롬프트로 충분합니다. 안 될 때만 가중치를 건드리세요.

프롬프트 엔지니어링 → RAG → SFT → DPO → CPT — 비용 순서대로 시도