온도 — 같은 프롬프트에서 다른 문장이 나오는 이유
5강의 "하나 뽑기"로 돌아가자. 확률표에서 늘 1등만 뽑으면 글은 안전하고 지루해진다. 그래서 온도(temperature)로 표를 눌렀다 폈다 한다. 낮추면 1등이 더 커지고, 높이면 꼴찌에도 기회가 간다. 여기에 "누적 확률 상위 몇 %만 남기기"(top-p)나 "1등 대비 몇 % 이하는 버리기"(min-p)를 겹쳐서 엉뚱한 단어를 막는다.
슬라이더를 움직이고 "뽑기"를 여러 번 눌러 보자. 같은 앞글에서 문장이 어떻게 갈리는지, min-p를 켜면 꼬리가 어떻게 잘리는지가 보인다. 확률은 설명용 예시다.
문이 열리자 하은은 ▁
온도1.0
아직 안 뽑았다.
실제 도구가 쓰는 값
- OpenAI API의 온도는 0~2, 기본 1이다. 노벨AI의 최신 모델 Xialong은 기본 프리셋 온도가 0.85다. llama.cpp 서버 기본값은 온도 0.8 · top-p 0.95 · min-p 0.05다.
- min-p 0.05~0.1이 창의성과 일관성의 균형점이라는 게 논문의 결론이다(ICLR 2025). min-p를 쓰면 온도를 1.5까지, 심지어 2~3까지 올려도 글이 안 무너진다.
- 반복을 막는 옛 방법(repetition penalty)은 문법을 뒤튼다. 요즘은 DRY(이미 나온 문장 조각을 또 잇는 걸 벌함 — 배수 0.8 · 밑 1.75 · 허용 길이 2)와 XTC(확률 50%로 뻔한 1등 후보들을 치워 상투구를 깸)를 쓴다. 둘 다 오픈소스 백엔드에만 있다.
- 노벨AI는 Erato 이후 "Unified" 샘플러 하나만 쓰기를 권한다. 샘플러를 겹치는 순서에 따라 결과가 예측 불가능하게 달라진다고 문서에 적어 뒀다.
그리고 이게 오픈 모델로 사람들이 옮겨 가는 기술적 이유 중 하나다. 상용 API는 min-p·DRY· XTC를 하나도 안 열어 준다. Anthropic은 한발 더 나가서 4.6 이후 모델에서 온도·top-p·top-k 자체를 없앴다(1.0만 받는다). 거기선 문체의 다양성을 샘플러가 아니라 프롬프트 — 문체 예시와 작가 노트 — 로 조종해야 한다.
"AI 글이 뻔하다"의 절반은 샘플러 문제다. 그 조종간이 있는 도구와 없는 도구를 구분해서 골라야 한다.