핵심 요약
LLM은 다음 토큰을 확률로 고른다. temperature는 그 확률 분포를 얼마나 "평평하게" 만들지(무작위성)를, top_p는 후보를 상위 확률 몇 %까지만 볼지를 조절한다. 정확·일관성이 필요하면 낮게, 창의·다양성이 필요하면 높게. 보통 둘 중 하나만 조절한다.
1. temperature
| 값 | 특성 |
|---|---|
| 0 ~ 0.3 | 결정적·일관적. 사실 추출·분류·코드 |
| 0.7 전후 | 균형(기본값 성격) |
| 1.0 이상 | 창의적·다양·예측 불가. 브레인스토밍 |
낮을수록 매번 비슷한(가장 확률 높은) 답, 높을수록 다양하지만 헛소리 위험도 증가.
2. top_p (누클리어스 샘플링)
확률 높은 순으로 누적 p%까지의 토큰만 후보로 삼는다. top_p=0.9면 "상위 90% 확률 뭉치 안에서만" 고른다. 낮추면 보수적, 높이면 개방적.
3. 용도별 권장
| 작업 | 권장 |
|---|---|
| 데이터 추출·분류 | temp 0 ~ 0.2 |
| 코드 생성 | temp 0 ~ 0.3 |
| 일반 대화·요약 | temp 0.5 ~ 0.7 |
| 카피·아이디어 | temp 0.9 ~ 1.2 |
4. 함정
- temperature와 top_p를 동시에 극단값으로 만지지 말 것 — 상호작용이 복잡해진다. 보통 하나만 조절
- temperature 0이라도 완전히 동일한 출력이 보장되진 않는다(구현·부동소수점 차이)
- 일관성이 진짜 중요하면 파라미터뿐 아니라 프롬프트를 구체화하고, 필요 시 seed를 고정한다
5. 실전 팁
- "답이 매번 다르다" → temperature를 낮춰라(0~0.3)
- "답이 뻔하고 반복적이다" → temperature나 top_p를 높여라
- JSON 등 구조화 출력은 낮은 temperature + 스키마 강제가 안정적
자주 묻는 질문
temperature와 top_p 중 뭘 조절하나요?
둘 다 무작위성을 다루므로 보통 하나만 조절합니다. 직관적으로 이해하기 쉬운 temperature를 먼저 조절하고, 그것으로 부족할 때 top_p를 보조로 씁니다. 둘을 동시에 극단으로 바꾸면 결과 예측이 어려워집니다.
temperature를 0으로 하면 항상 같은 답이 나오나요?
가장 확률 높은 토큰을 고르므로 매우 일관적이지만, 병렬 연산의 부동소수점 차이나 구현에 따라 완전히 동일하진 않을 수 있습니다. 재현성이 중요하면 seed 옵션까지 함께 고정하세요.
코드 생성엔 왜 낮은 값을 쓰나요?
코드는 정답 범위가 좁고 일관성이 중요하기 때문입니다. temperature가 높으면 창의적이지만 문법 오류나 엉뚱한 API를 만들 확률이 올라갑니다. 사실 추출·분류·코드처럼 정확성이 중요한 작업은 낮게 두세요.

댓글 0