로컬 모델을 OpenAI 호환 API로 호출할 때 많은 클라이언트는 temperature나 top_p를 보내지 않습니다. 이 경우 실제 샘플링에 쓰이는 값은 서버가 정합니다. Ollama v0.40.14 릴리스 노트는 이 기본값이 바뀌었다고 설명합니다. 같은 모델, 같은 프롬프트라도 서버가 어떤 값을 고르느냐에 따라 출력이 달라질 수 있으므로, 이 변경은 로컬 모델 비교 실험을 하는 개발자에게 직접 영향을 줍니다.
이 글은 릴리스 노트와 릴리스 페이지의 설명만 근거로 합니다. 두 버전을 직접 비교 실행하지 않았습니다.
무엇이 바뀌었나
릴리스 노트의 설명을 그대로 옮기면 다음과 같습니다.
- OpenAI 호환 엔드포인트가 모델의 패키지된 샘플러 기본값을 덮어쓰지 않도록 수정했습니다.
- 클라이언트가
temperature나top_p를 보내지 않으면, 이전에는 1.0이 적용되었지만 이제는 모델 자체의 값을 씁니다. - 변경의 목적은
/api/chat의 동작과 맞추는 것입니다.
핵심은 생략된 경우입니다. 릴리스 노트가 바꾼 대상은 클라이언트가 값을 빼고 보냈을 때의 기본값이며, 클라이언트가 값을 명시하면 그 값이 쓰인다는 전제로 읽을 수 있습니다.
| 요청 상태 | v0.40.14 이전 (릴리스 노트 설명) | v0.40.14 |
|---|---|---|
temperature, top_p 생략 |
1.0 적용 | 모델 패키지의 기본값 적용 |
| 명시적으로 지정 | 지정한 값 | 릴리스 노트가 바꾼 대상이 아님 |
같은 릴리스에는 다른 변경도 있습니다. ollama launch claude는 모델의 출력 토큰 한도를 적용해 클라우드 모델이 기본 128k 상한에 걸리지 않게 합니다. /v1/responses는 이전 assistant의 거부(refusal) 응답을 포함한 입력 내용을 유지합니다. MLX에서는 큰 어휘 크기에 대한 top-k 샘플링이 빨라졌다고 적혀 있습니다. 다만 속도 개선의 크기는 수치로 제시되지 않았습니다.
샘플링 기본값이 출력에 영향을 주는 방식
모델은 다음 토큰의 확률 분포를 계산하고, 샘플러가 그중 하나를 고릅니다.
temperature는 분포의 날카로움을 조정합니다. 값이 높을수록 확률이 낮은 토큰이 선택될 기회가 늘어납니다.top_p는 확률을 높은 순서로 더해 누적값이 p에 도달할 때까지의 후보 집합만 남깁니다.
따라서 기본값이 1.0인지, 모델 패키지가 정한 값인지에 따라 같은 프롬프트에서도 답변의 다양성과 안정성이 달라질 수 있습니다. 모델 패키지의 값은 Ollama에서 Modelfile의 PARAMETER 항목으로 정의되는 것이 일반적입니다. 어느 값이 더 좋은지는 모델과 작업에 따라 다르므로, 이 글은 어떤 값이 맞다고 주장하지 않습니다.
비교 실험에서 확인할 것
로컬 모델을 비교할 때 결과가 모델 차이인지, 샘플러 기본값 차이인지 구분하려면 다음을 기록해야 합니다.
- Ollama 버전과 모델 태그
- 클라이언트가 실제로 보낸 요청 본문의
temperature,top_p값(생략 여부 포함) - 모델 패키지의 샘플러 값
- 같은 프롬프트 묶음을 두 버전에서 실행한 결과
이 글에서는 실행하지 않은 절차입니다. 확인 방법으로는 같은 프롬프트 묶음을 v0.40.13과 v0.40.14에서 각각 실행하고, 요청 본문에 샘플링 값을 명시한 경우와 생략한 경우를 나눠 결과를 비교하는 방식을 제안합니다.
한계
- 릴리스 노트와 릴리스 페이지 설명에 의존합니다. 소스 diff와 직접 실행 결과는 확인하지 않았습니다.
- 릴리스 페이지에는 연도가 표시되지 않았습니다. 발표일은 11월 3일로 적혀 있습니다.
- 속도 개선은 수치가 없어 효과의 크기를 말할 수 없습니다.
- 샘플링 기본값이 답변 품질에 어떤 영향을 주는지는 이 글의 범위가 아닙니다.
결론
이 변경은 기능 추가가 아니라 기본값의 정합성을 맞춘 수정입니다. 그래서 오히려 실험 결과에 조용히 영향을 줄 수 있습니다. 같은 모델을 비교하는 실험이라면 샘플러 설정과 Ollama 버전을 함께 기록해야 합니다. 설정을 명시하지 않은 상태에서 얻은 수치는 버전이 바뀌면 재현되지 않을 수 있습니다.
참고
- Ollama v0.40.14 릴리스: https://github.com/ollama/ollama/releases/tag/v0.40.14