Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

23장. Temperature, Top-p, Top-k

이 장의 목표 채팅 도구의 슬라이더들이 뭘 하는지 정확히 알게 됩니다.

“코드 작업엔 0.2, 글쓰기엔 0.7” 라는 말의 근거를 머릿속으로 그릴 수 있게 됩니다.


23.1 다음 토큰 예측의 진짜 모습

2장에서 봤습니다.

모델은 다음 토큰의 확률 분포를 만듭니다.

다음 토큰 후보:
  "맑습니다"  → 0.35
  "흐립니다"  → 0.22
  "춥습니다"  → 0.15
  "비가"      → 0.09
  "치킨"      → 0.0001
  ...

그러면 어떤 토큰을 고를까요?

이걸 정하는 게 샘플링(sampling) 입니다.

  • 가장 확률 높은 거만 고르기 → 항상 같은 답, 따분함
  • 다양하게 고르기 → 창의적이지만 들쭉날쭉

이 균형을 조절하는 손잡이가 Temperature, Top-p, Top-k 입니다.


23.2 Temperature — 창의성 손잡이

확률 분포를 얼마나 평평하게 / 뾰족하게 만들지 정합니다.

[Temperature 0.0]   (가장 뾰족)
"맑습니다" 0.99
"흐립니다" 0.01
나머지     0

[Temperature 1.0]   (원래 분포)
"맑습니다" 0.35
"흐립니다" 0.22
...

[Temperature 1.5]   (평평)
"맑습니다" 0.18
"흐립니다" 0.16
"치킨"     0.05
...

한 줄 감각

Temperature결과
0.0거의 결정적. 같은 입력 → 같은 답
0.2매우 보수적. 코드·정확성
0.5균형. 일반 업무
0.7창의적. 글쓰기
1.0학습 분포 그대로
1.2+산만해짐. 한국어 자주 깨짐

23.3 Top-k — 상위 k개만 고려

[Top-k = 5]
상위 확률 5개 후보만 남기고 나머지 무시
그 안에서 (Temperature 적용 후) 샘플

이상한 토큰이 우연히 고름당하는 것을 막아줍니다.

  • 너무 작으면(k=1) → 항상 1등만 (Temperature=0과 비슷)
  • 너무 크면(k=100) → 효과 거의 없음

보통 기본값(40~50) 그대로 두면 됨.


23.4 Top-p (Nucleus) — 누적 확률 컷오프

[Top-p = 0.9]
확률이 큰 순으로 더해가다가
누적 0.9가 될 때까지의 후보만 남김

예:

"맑습니다" 0.35  → 누적 0.35
"흐립니다" 0.22  → 누적 0.57
"춥습니다" 0.15  → 누적 0.72
"비가"     0.09  → 누적 0.81
"안개"     0.07  → 누적 0.88
"화창함"   0.06  → 누적 0.94  ← 여기까지

이 6개 중에서 (Temperature 적용 후) 샘플.

Top-p 가 Top-k 보다 똑똑한 이유: 확률이 들쭉날쭉한 상황에 자동 적응.

  • 1등이 압도적으로 높으면 적은 후보만
  • 비슷비슷하면 많은 후보를 다 고려

23.5 Top-p vs Top-k — 동시에 쓰면

대부분의 도구는 둘 다 적용합니다.

1. Top-k 로 N개로 줄임
2. Top-p 로 누적 확률 안의 후보만 남김
3. Temperature 적용해서 분포 조정
4. 그 분포에서 확률대로 하나 뽑음

둘 다 동시에 쓰는 게 표준.


23.6 그 외 자주 보는 손잡이

Repeat Penalty (Frequency Penalty)

같은 단어 반복을 막는 페널티.

0.0  → 페널티 없음 (모델이 같은 단어 반복할 수 있음)
1.1  → 약간 (기본)
1.3  → 강함 (반복 거의 없음)

Q4 양자화처럼 작은 모델에서 “같은 문장 무한 반복“이 나오면 Repeat Penalty 를 1.1 → 1.2 로 올려보세요.

Min-p

Top-p 의 변종. 1등 확률 대비 일정 비율 이상 후보만 남김.

새 모델이 추천하는 경우도 있음.

Seed

같은 시드 → 같은 결과. 재현 가능성이 필요할 때.


23.7 작업별 추천 조합

작업TemperatureTop-pTop-k
코드 작성·디버깅0.1~0.30.940
회의록 요약0.2~0.40.940
메일 초안0.4~0.60.940
한국어 작문0.5~0.70.9540
브레인스토밍0.7~0.90.9560
시·소설0.8~1.00.9560
분류·태깅 (JSON)0.0~0.20.940
Reasoning 모델0.6~0.70.95모델 권장값

Reasoning 모델 주의: Temperature 0으로 두면 추론 과정이 짧아지거나 망가질 수 있음. 모델 카드의 권장값을 따르세요.


23.8 도구별 설정 위치

LM Studio

채팅 화면 우측 Inference 패널.

  • Temperature
  • Top-P
  • Top-K
  • Repeat Penalty

Ollama

CLI에서 직접 변경:

$ ollama run qwen3:8b
>>> /set parameter temperature 0.3
>>> /set parameter top_p 0.9

Modelfile에 고정:

FROM qwen3:8b
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER repeat_penalty 1.1

OpenAI 호환 API

JSON 본문에 그대로 넣음:

{
  "model": "qwen3:8b",
  "messages": [...],
  "temperature": 0.3,
  "top_p": 0.9
}

23.9 같은 손잡이가 한국어에 미치는 영향

한국어는 영어보다 토큰 분포가 얇은 꼬리를 가집니다.

즉:

  • Temperature를 올리면 영어보다 더 빨리 망가집니다.
  • Top-p 를 너무 크게 두면 이상한 한자·영어 토큰 이 끼어듭니다.

권장:

한국어 작업 → Top-p 0.9~0.95, Temperature 0.7 이하

23.10 흔한 증상 대응

증상손잡이
답이 너무 똑같음Temperature ↑
답이 산만함Temperature ↓, Top-p ↓
같은 단어 반복Repeat Penalty ↑
갑자기 영어 섞임Top-p ↓, Temperature ↓
JSON 형식 깨짐Temperature 0.1~0.2 + 시스템 프롬프트 강화
한국어가 어색함모델 자체 한계 — Temperature는 답이 아님

이 장에서 기억할 한 가지

Temperature: 창의성 조절. Top-p / Top-k: 후보 범위 제한.

  • 코드·정확성 → 낮게 (0.1~0.3)
  • 글쓰기 → 보통 (0.5~0.7)
  • 창작 → 높게 (0.8+)

한국어는 영어보다 한 단계 낮게 잡으세요.


손으로 해볼 것

1. 같은 질문, Temperature 3종

LM Studio에서 같은 질문을 세 번 보내되, Temperature만 다르게.

질문: "맥북에서 로컬 AI 시작하는 법 알려줘"
  • Temperature 0.0
  • Temperature 0.5
  • Temperature 1.0

답의 표현·길이·창의성 차이를 메모하세요.

2. JSON 출력 안정화

다음 시스템 프롬프트로 강제 JSON:

모든 답은 다음 JSON으로만:
{"summary": "...", "tags": ["...", "..."]}
다른 텍스트 절대 금지.
  • Temperature 0.7 → 깨질 확률 높음
  • Temperature 0.1 → 안정적

각각 5번씩 던져 형식이 얼마나 안정적인지 확인.


다음 장에서는 Stop 토큰, Max tokens, Streaming 같은 실전 옵션들을 정리합니다.

자동화 파이프라인을 만들 때 꼭 필요합니다.