4장. LLM 을 완성하는 3단계와 Hugging Face
LLM 을 완성하는 3단계
3장에서 챗봇 모델에 질문을 넣으면 답이 나왔습니다. 그런데 처음부터 그랬을까요? 갓 사전학습을 마친 모델은 질문을 받으면 답하는 대신 질문을 이어 쓰거나 되풀이합니다. 답하는 법은 그 뒤의 단계에서 따로 배웁니다. 의사가 교과서만 읽고는 환자를 볼 수 없는 것과 같습니다.
1번 사전학습은 라벨 없는 많은 글로 다음 토큰 맞히기를 배워 언어와 지식을 쌓는 단계이고, 여기서 나온 모델이 기본 모델입니다. 2번 미세조정은 질문과 모범 답의 쌍으로 답하는 법을 익히는 단계입니다. 3번 정렬은 두 답 가운데 사람이 고른 쪽으로 성향을 맞추는 단계로, 2번과 3번을 거친 모델이 지시 모델입니다. 여기서 교과서 공부가 사전학습, 수련 실습이 미세조정, 응대 평가가 정렬입니다.
세 단계 견주기
| 단계 | 데이터 | 데이터 양(대략) | 배우는 것 | 이 과정에서 |
|---|---|---|---|---|
| 사전학습 | 라벨 없는 글 | 수천억~수십조 토큰 | 언어, 지식, 글의 흐름 | 4장 실습 5(작게) |
| 미세조정(SFT) | 질문과 모범 답의 쌍 | 수천~수십만 쌍 | 질문에 답하는 꼴과 말투 | 4장 실습 6, 5장 |
| 정렬 | 같은 질문에 대한 두 답과 사람의 선택 | 수천~수십만 쌍 | 더 도움 되고 안전한 쪽 | 5장 DPO |
비용은 사전학습이 압도적으로 큽니다. 그래서 회사 대부분은 사전학습을 직접 하지 않고, 남이 공개한 기본 모델이나 지시 모델을 받아 2단계부터 합니다. 3장의 "전이 학습" 패턴입니다.
모델 이름으로 단계 읽기
Hub 의 모델 이름에는 보통 단계가 드러납니다.
| 이름의 끝 | 뜻 | 예 |
|---|---|---|
아무것도 없음, -Base | 사전학습만 한 기본 모델 | Qwen/Qwen2.5-0.5B |
-Instruct, -Chat, -it | 미세조정과 정렬을 거친 지시 모델 | Qwen/Qwen2.5-0.5B-Instruct |
# 모델 이름의 끝을 보고 기본 모델인지 지시 모델인지 가려 본다
names = ["Qwen/Qwen2.5-0.5B", "Qwen/Qwen2.5-0.5B-Instruct", "google/gemma-2-2b-it"]
for name in names:
kind = "지시 모델" if name.lower().endswith(("instruct", "chat", "-it")) else "기본 모델"
print(name, "→", kind)앞의 것은 기본 모델, 뒤의 둘은 지시 모델로 나옵니다. 이름은 관례일 뿐이라 확실한 것은 모델 카드에서 확인합니다.
코드에 나오는 함수
| 코드 | 쉬운 뜻 |
|---|---|
name.lower() | 글자를 모두 소문자로 바꾼다. Instruct 와 instruct 를 같은 것으로 보려고 쓴다 |
.endswith(("instruct", "chat", "-it")) | 글이 괄호 속 끝말 가운데 하나로 끝나면 True 를 돌려준다. 끝말을 여러 개 견줄 때는 이렇게 튜플로 묶어 준다 |
A if 조건 else B | 조건이 맞으면 A, 아니면 B 를 고른다. 여기서는 "지시 모델"과 "기본 모델" 가운데 하나를 고른다 |
이 코드가 뜻하는 것
가게에서 상품 이름 끝의 "리필용", "대용량" 같은 꼬리말만 보고 어떤 상품인지 어림하는 것과 같습니다. 이 코드는 모델 이름의 꼬리말만 보고 그 모델이 몇 단계까지 거쳤는지 어림합니다.
| 줄 | 하는 일 | 쉽게 말하면 |
|---|---|---|
names = [...] | 견줄 모델 이름 셋을 적는다 | 진열대의 상품 이름표 세 장 |
name.lower().endswith(...) | 소문자로 바꾼 이름이 instruct, chat, -it 로 끝나는지 본다 | 이름표 끝에 "답변용" 꼬리말이 붙었는지 본다 |
kind = ... if ... else ... | 꼬리말이 있으면 지시 모델, 없으면 기본 모델로 적는다 | 꼬리말이 있으면 2·3단계까지 거친 상품으로 분류한다 |
print(name, "→", kind) | 이름과 분류를 한 줄씩 찍는다 | 분류 결과를 이름표 옆에 적는다 |
결과로 Qwen/Qwen2.5-0.5B 는 기본 모델, 나머지 둘은 지시 모델로 나뉩니다. 이 판정은 이름만 본 어림이므로, 이름 규칙을 따르지 않는 모델은 틀리게 분류될 수 있습니다.
주의할 점
- 대화형 서비스에는 지시 모델을 씁니다. 기본 모델에 질문을 넣으면 실습 2처럼 질문을 되풀이하기 쉽습니다.
- 우리 분야의 글로 이어 사전학습을 하고 싶다면 기본 모델에서 시작하고, 말투나 답의 꼴을 바꾸고 싶다면 지시 모델에서 시작하는 것이 보통입니다.