트랜스포머·PEFT 2일 과정5장 · Decoder-only LLM과 학습 단계9 / 15← 이전목차다음 →MetaContents

5장. Decoder-only LLM과 학습 단계

Prompt, RAG, Fine-tuning 고르기

새로 온 직원을 우리 회사 일에 맞추는 방법은 세 가지입니다. 일할 때마다 지시서를 꼼꼼히 써 주거나(Prompt), 참고서를 손에 쥐여 주거나(RAG), 연수를 보내 몸에 익히게 합니다(Fine-tuning). 공개 LLM 이나 상용 API 를 업무에 맞출 때도 이 셋을 고릅니다. 무엇을 바꾸는지로 나누면 쉽습니다.

Prompt Engineering 은 지시문을, RAG 는 참고 자료를, Fine-tuning 은 가중치를 바꾼다는 차이를 세 칸으로 나란히 놓은 그림

그림의 별표(★)가 각 방법이 바꾸는 곳입니다. 왼쪽과 가운데는 LLM 상자에 "가중치 그대로"라고 적혀 있습니다. 모델은 손대지 않고 입력만 바꿉니다. 오른쪽만 학습 데이터로 미리 한 번 학습해 "가중치 조정됨(LoRA)" 상태가 됩니다. 그래서 오른쪽은 사용자 질문이 짧아도 됩니다.

세 방법 비교

구분Prompt EngineeringRAG(검색 증강 생성)Fine-tuning(SFT, PEFT)
바꾸는 것모델에 주는 지시문모델에 주는 참고 자료(컨텍스트)모델의 가중치
준비물좋은 프롬프트문서 DB, 검색 시스템학습 데이터, GPU
비용·시간가장 적음(즉시)중간(검색 시스템 구축)가장 큼(데이터 구축 + 학습)
최신 정보 반영어려움쉬움(문서만 교체)어려움(재학습 필요)
근거 제시어려움쉬움(검색된 문서 인용)어려움
잘 바뀌는 것간단한 형식·역할사실 정확도, 사내 지식일관된 형식·말투·절차, 도메인 표현, 짧은 프롬프트
한계긴 프롬프트 비용, 복잡한 규칙은 잘 안 지킴검색 품질에 좌우됨새 사실 주입에 약함, 과적합, 모델 관리 부담

노트북이 제시하는 실무 판단 순서는 다음과 같습니다.

  1. 프롬프트로 해결되는가? 그렇다면 Prompt Engineering 으로 시작합니다.
  2. 모델이 모르는 사내 지식이나 최신 정보가 필요한가? 그렇다면 RAG 입니다.
  3. 형식·말투·절차를 매번 일관되게 지켜야 하는가, 긴 프롬프트의 비용과 지연 시간을 줄여야 하는가, 데이터를 외부 API 로 보낼 수 없어 작은 공개 모델을 써야 하는가? 그렇다면 Fine-tuning(PEFT)입니다.
  4. 실제 서비스는 대부분 조합입니다. 파인튜닝한 모델 + RAG + 프롬프트입니다.

짧은 예시

Python
import pandas as pd

def choose(prompt_ok, need_facts, need_style):
    # 노트북의 판단 순서를 그대로 if 문으로 옮긴다
    if prompt_ok:
        return "Prompt"
    picks = []
    if need_facts:        # 모르는 사내 지식, 자주 바뀌는 정보
        picks.append("RAG")
    if need_style:        # 일관된 말투·형식·절차
        picks.append("Fine-tuning")
    return " + ".join(picks) or "Prompt 다시 다듬기"

cases = [
    ("답을 세 줄 요약으로만", True, False, False),
    ("매주 바뀌는 반품 규정을 근거와 함께", False, True, False),
    ("모든 답을 왕의 말투로 일관되게", False, False, True),
    ("사내 규정을 상담원 말투로", False, True, True),
]
table = pd.DataFrame(
    [(name, choose(p, f, s)) for name, p, f, s in cases],
    columns=["상황", "먼저 검토할 방법"],
)
print(table.to_string(index=False))
# 결과:
# 답을 세 줄 요약으로만 → Prompt
# 매주 바뀌는 반품 규정을 근거와 함께 → RAG
# 모든 답을 왕의 말투로 일관되게 → Fine-tuning
# 사내 규정을 상담원 말투로 → RAG + Fine-tuning

이 코드가 뜻하는 것

신입 직원을 일에 맞추는 방법을 순서도로 고른 코드입니다. 지시서로 되면 지시서(Prompt), 모르는 사실이 필요하면 참고서(RAG), 몸에 밴 말투가 필요하면 연수(Fine-tuning)입니다. 노트북의 "바로 확인하기" 질문인 "매주 바뀌는 반품 규정을 근거와 함께"는 RAG 로 나옵니다. 자주 바뀌는 지식은 가중치에 넣기보다 최신 문서를 검색해 연결하는 편이 갱신과 근거 제시에 유리하기 때문입니다.

줄하는 일쉽게 말하면
if prompt_ok:프롬프트로 되면 끝지시서로 충분한가
picks.append("RAG")사실이 필요하면 RAG참고서 쥐여 주기
picks.append("Fine-tuning")말투가 필요하면 Fine-tuning연수 보내기
" + ".join(picks)둘 다면 조합연수 받은 직원에게 참고서까지

주의할 점

  • Fine-tuning 은 새 사실을 넣는 데 약합니다. "이번 주 반품 기한"처럼 바뀌는 사실을 학습시키면, 바뀔 때마다 다시 학습해야 하고 틀린 옛 정보를 그럴듯하게 말할 수 있습니다.
  • 2일차의 Fine-tuning 실습은 "냉소적인 절대 군주" 말투를 가르칩니다. 말투 차이를 눈으로 보기 쉽게 고른 학습용 데이터입니다. 말투·형식은 Fine-tuning 이 가장 잘 바꾸는 영역이라 이 데이터를 골랐습니다.
← 이전 절5장 · LLM 이 만들어지는 세 단계다음 절 →5장 · 1일차 정리