5장. Decoder-only LLM과 학습 단계
LLM 이 만들어지는 세 단계
신입 상담원 한 명이 현장에 나가기까지를 떠올려 봅니다. 먼저 도서관 책을 두루 읽어 교양을 쌓습니다(사전학습). 그다음 모범 답안집으로 "이런 질문에는 이렇게 답한다"를 연습합니다(SFT). 마지막으로 선배가 두 답을 나란히 놓고 "이쪽이 더 친절하고 정확하다"고 짚어 줍니다(선호도 정렬). ChatGPT 같은 대화형 LLM 도 보통 이 세 단계를 거칩니다.
그림은 왼쪽에서 오른쪽으로 갈수록 데이터는 적어지고 더 다듬어집니다. 사전학습은 수조 개 토큰의 일반 텍스트, SFT 는 사람이 만든 수천~수십만 쌍, 선호도 정렬은 "더 좋은 답, 덜 좋은 답" 쌍입니다. 아래 둥근 상자가 각 단계를 마친 모델입니다. 그림 아래 줄처럼 2일차에는 공개 Instruct 모델(Qwen2.5)에 우리 데이터로 2단계 SFT 를 LoRA 로 더 합니다.
세 단계 비교
| 단계 | 데이터 | 학습 목표 | 결과 |
|---|---|---|---|
| 1. 사전학습(Pre-training) | 웹·책·코드 등 수조 개 토큰의 일반 텍스트 | 다음 토큰 예측 | Base 모델: 언어와 지식을 익혔지만 대화 형식에는 익숙하지 않음 |
| 2. 지도 미세조정(SFT) | 사람이 만든 (지시, 모범 답변) 수천~수십만 쌍 | 답변 부분의 다음 토큰 예측 | Instruct 모델: 지시를 따르고 대화 형식으로 답함 |
| 3. 선호도 정렬(Preference Alignment) | 같은 질문의 (더 좋은 답, 덜 좋은 답) 쌍 | 사람이 선호하는 답의 확률을 높임 | 더 도움되고 안전한 모델 |
SFT 와 선호도 정렬은 둘 다 (지시, 답변) 데이터를 쓰지만 가르치는 방식이 다릅니다. "환불 규정을 알려줘"라는 질문으로 보면, SFT 는 모범 답변 하나("네, 구매 후 7일 이내에 환불 가능합니다. ...")를 그대로 따라 쓰게 합니다. 선호도 정렬은 두 답을 비교해 더 친절하고 근거를 갖춘 답의 확률은 높이고, 퉁명스럽거나 부정확한 답의 확률은 낮춥니다. SFT 가 정답 하나 외우기라면, 선호도 정렬은 "이 답이 저 답보다 낫다"는 상대적인 기준을 배우는 것입니다.
짧은 예시
import pandas as pd
# SFT 데이터: 한 행 = (지시, 모범 답변) 한 쌍
sft = pd.DataFrame([
{"instruction": "환불 규정을 알려줘",
"response": "네, 구매 후 7일 이내에 환불 가능합니다."},
])
# 선호도 데이터: 한 행 = (지시, 더 좋은 답, 덜 좋은 답)
# chosen = 골라 뽑힌 답, rejected = 밀려난 답
pref = pd.DataFrame([
{"instruction": "환불 규정을 알려줘",
"chosen": "네, 구매 후 7일 이내에 환불 가능합니다. 영수증을 함께 준비해 주세요.",
"rejected": "규정 보세요."},
])
print("SFT 열:", list(sft.columns), sft.shape)
# 결과: SFT 열: ['instruction', 'response'] (1, 2)
print("선호도 열:", list(pref.columns), pref.shape)
# 결과: 선호도 열: ['instruction', 'chosen', 'rejected'] (1, 3)이 코드가 뜻하는 것
모범 답안집과 "두 답 비교표"를 표 두 개로 만들어 열을 견주었습니다. SFT 표는 열이 둘(지시, 답)이고, 선호도 표는 열이 셋(지시, 좋은 답, 덜 좋은 답)입니다. 데이터의 모양이 다르면 학습 방법도 달라집니다.
| 줄 | 하는 일 | 쉽게 말하면 |
|---|---|---|
sft = pd.DataFrame([...]) | 지시와 모범 답변 한 쌍 | 모범 답안집 한 쪽 |
"chosen", "rejected" | 더 좋은 답과 덜 좋은 답 | 선배가 고른 쪽과 밀린 쪽 |
sft.shape, pref.shape | 행과 열의 수 | (1, 2) 와 (1, 3) |
2일차의 페르소나 데이터(persona_sft_raw.csv)는 prompt, response 두 열이므로 SFT 데이터입니다. 7장에서 이 표를 대화 형식으로 바꿉니다.
주의할 점
- 노트북은 1단계 사전학습을 이 장에서 GPT 와 함께 이미 보았다고 정리합니다. 2일차에 우리가 할 일은 2단계 SFT 를 작은 규모로, LoRA 로 효율적으로 해 보는 것입니다. 사전학습과 선호도 정렬은 직접 하지 않습니다.
- Qwen2.5-0.5B-Instruct 는 이미 SFT 를 거친 모델입니다. 그 위에 우리 데이터로 SFT 를 더하면 말투와 형식은 잘 바뀌지만, 원래 잘하던 일반 답변이 흔들릴 수 있습니다. 9장에서 이 부작용을 점검합니다.