샘플링 제어: 온도(Temperature)와 친구들
모델이 텍스트를 생성할 때, 다음 토큰을 확률 분포에서 고릅니다. 샘플링 제어는 어떻게 고를지를 조정합니다 — 출력이 얼마나 집중적인지 vs 얼마나 다양한지를요.
주요 다이얼
- 온도(Temperature) — 무작위성. 낮음(≈0) = 집중적이고, 거의 결정론적이며, 반복 가능 — 모델이 가장 가능성 높은 경로를 택합니다. 높음 = 더 다양하고 창의적이지만, 헤매거나 오류를 낼 가능성도 큽니다.
- top-p (뉴클리어스) — 확률의 합이 p가 되는 가장 작은 토큰 집합으로 선택을 제한합니다. 무작위성을 한정하는 또 다른 방법입니다.
- top-k — 가장 가능성 높은 k개의 토큰만 고려합니다.
- 정지 시퀀스(stop sequences) — 생성될 경우 응답을 끝내는 문자열입니다(구조화된 출력에 유용).
보통 온도 또는 top-p 중 하나를 조정하지, 둘 다 하지는 않습니다.
언제 차갑게 vs 뜨겁게 돌릴까
| 차갑게(낮은 온도) 돌리기 | 뜨겁게(높은 온도) 돌리기 |
|---|---|
| 추출, 분류, 코드 | 브레인스토밍, 이름 짓기, 창의적 카피 |
| 재현 가능해야 하는 무엇이든 | 여러 선택지 탐색 |
| 사실 기반 / 구조화된 출력 | 어조의 다양성, 아이디어 발상 |
대부분의 작업에 좋은 기본값은 중간에서 낮은 정도입니다. 놀라움을 원할 때에만 끌어올리세요.
:::note 최신 모델은 이를 숨길 수 있습니다 여러 최근 Claude 모델은 스스로 디코딩을 조절하며 온도를 비중에서 빼거나(또는 생략) 합니다. 노브가 없다면 그것은 의도된 설계입니다 — 대신 프롬프트와 (제공되는 경우) 노력/사고(effort/thinking) 설정으로 동작을 형성하세요. :::
결정론에 대한 주의
온도 0에서조차 출력이 실행/버전 간에 비트 단위로 동일하다고 보장되지 않습니다. 정확한 재현성에 의존하지 말고, 드리프트를 잡으려면 평가(evals)에 의존하세요.