AI 답변 재현성 실험: 온도 0에서 답은 고정됐고 오답도 반복됐습니다

기본값과 온도 0을 같은 프롬프트에 나란히 놓았습니다. 그 옆에는 고정 시드 조건. 출력이 어디서 고정되고 어디부터는 차이를 가르기 어려운지 함께 확인했습니다.

AI 답변을 자동 분류·추출 작업에 넣기 전에, 온도 0과 시드가 어디까지 결과를 고정하고 무엇을 따로 검증해야 하는지 판단하실 수 있습니다.

이번 9월의 결과는 과제마다 달랐습니다. 자유 생성에서는 선명한 차이. 분류에서는 기본값도 전부 같게 나온 칸이 있었고, 고정 시드를 더해도 온도만 낮춘 조건을 넘어서는 변화는 나타나지 않았습니다.

비교 조건을 같은 자리에 놓았습니다

gemma3:4b에 넣은 과제는 세 개.

  • 고객 문의 10건을 다섯 분류로 나누기
  • 발주 이메일에서 업체·담당자·품목·수량·단가·납기일·총금액 뽑기
  • 자영업자용 블로그 제목 다섯 개 만들기

모든 과제를 같은 횟수로 반복했습니다. gemma3:4b가 72회입니다. 교차확인용 qwen3-vl:8b에는 문의 분류만 같은 방식으로 24회 돌렸습니다. 전체 96회에서 생성 실패는 없었습니다.

재현성의 기준은 하나였습니다. 출력 문자열이 서로 완전히 같은가. 구조화 과제는 JSON을 파싱한 뒤 라벨과 필드 값까지 따로 비교했고, 발주 총금액은 반복 여부와 별개로 검산했습니다.

기본값과 온도 0의 차이는 과제에 따라 갈렸습니다

과제·모델 기본값 온도 0 온도 0+시드 42
문의 분류 · gemma3:4b 100% 100% 100%
발주 추출 · gemma3:4b 100% 100% 100%
자유 제목 · gemma3:4b 0% 100% 100%
문의 분류 · qwen3-vl:8b 75% 100% 100%

주의.

이 표에서 가장 조심해서 봐야 할 칸은 발주 추출입니다. 문자열 재현율만 보면 가장 깨끗한 성공처럼 보이는 칸.

자유 생성에서는 온도 0의 역할이 선명했습니다

첫 출력 변화 — REP-03 A · 2회차가 1회차와 다름

자영업자용 블로그 제목 다섯 개를 만드는 과제는 가능한 답의 폭이 넓었습니다. 기본값에서는 회차마다 다른 출력. 제목 단위로는 40개 가운데 39개가 서로 달랐습니다.

온도를 0으로 바꾸자 모든 출력이 하나로 모였습니다. 고정 시드를 추가해도 결과는 같았습니다.

이 차이는 활용 목적을 가립니다. 여러 후보가 필요한 초안 발산 단계에서는 기본값의 변동이 재료가 됩니다. 반대로 입력이 같을 때 출력도 같아야 하는 회귀 테스트라면, 이번 비교에서 어느 조건을 기준선으로 삼아야 할까요?

분류의 기본값은 런과 모델에 따라 달랐습니다

고객 문의 10건을 배송·교환·환불·상품문의·기타로 나누는 과제를 gemma3:4b에 반복해서 맡겼습니다.

하루 전 기본값 조건에서는 답변 문자열의 쌍 일치율이 57.1%였습니다. 출력 형태가 두 종류로 갈렸기 때문입니다. 다만 JSON을 파싱해 분류 라벨만 비교하면 모든 회차의 결과가 같았습니다.

그런데 이번 런은 달랐습니다. 같은 모델과 프롬프트인데 기본값 출력의 문자열까지 하나로 모였습니다.

저는 하루 전 결과 JSON과 이번 결과를 나란히 놓고, 기본값 출력이 두 형태에서 한 형태로 바뀐 것을 확인했습니다.

기본값은 한 번의 짧은 반복에서 안정적으로 보여도 그 상태가 다음 런까지 이어진다고 볼 수 없었습니다.

온도 0은 두 날 모두 문자열을 한 종류로 모았습니다. 기본값의 흔들림을 줄이는 용도에서 드러난, 이번 테스트의 분명한 차이.

qwen3-vl:8b에 넣은 과제는 문의 분류 하나. 기본값에서는 열 번째 문의가 일곱 번은 환불, 한 번은 기타로 갈렸지만, 온도 0을 적용한 조건에서는 모든 출력이 같았습니다.

재현성 측정 집계 — 모델 qwen3-vl-8b · 성공 24회 · 생성 실패 0회

이 교차확인이 뜻하는 범위는 좁습니다. "모든 과제에서 모든 모델이 같은 방식으로 흔들린다"는 근거가 아니며, qwen3-vl:8b에서는 문의 분류 한 과제만 측정했습니다. 그래도 gemma3:4b의 분류가 기본값에서 깨끗하게 모인 바로 그 상황에서, 다른 모델의 기본값에는 실제 라벨 변화가 남았습니다.

이번 측정은 한 번의 호출을 반복한 경우입니다.

관련 글: AI 멀티턴 지시 지속성 실험

온도를 고정한 뒤 시드의 추가 효과는 가르지 못했습니다

비교표의 두 열은 같은 모양입니다. 하나는 온도만 낮춘 조건, 다른 하나는 고정 시드를 더한 조건. 이미 모든 출력이 한 종류로 모여 있어, 시드가 재현성을 더 높였는지는 이번 반복 자료로 가를 수 없었습니다.

자유 생성도 마찬가지. 시드를 추가한 조건과 온도만 낮춘 조건의 출력이 같았고, 두 결과가 하나로 모인 뒤에는 차이를 판단할 여지가 남지 않았습니다.

이번 측정에서 온도 0과 고정 시드는 같은 출력으로 모였고, 시드의 추가 효과를 비교할 차이는 나타나지 않았습니다.

오답도 흔들림 없이 반복됐습니다

첫 총금액 정답 실패 — REP-02 A · 1회차 · 두 발주 건 검산을 통과하지 못함

발주 이메일에는 품목 두 개의 수량과 단가가 들어 있었습니다. 모델이 업체명, 담당자, 품목, 수량, 단가, 납기일을 일정한 JSON 형태로 뽑은 뒤 내놓은 총금액은 아래 두 개.

수량 1200 x 단가 7200 = 총금액 864000

수량 450 x 단가 15400 = 총금액 681000

저는 출력에 적힌 수량과 단가를 다시 곱해 두 총금액이 모두 틀렸음을 확인했습니다.

같은 잘못된 값이 기본값의 모든 회차에서 되풀이됐습니다. 온도를 낮춰도, 고정 시드를 더해도 그대로였습니다. 총금액 검산 결과는 각 조건에서 0/8이었습니다.

재현성 채점만 보면 만점. 그러나 실제 발주 데이터로 넘기는 순간, 같은 잘못된 금액이 매번 전달됩니다. 일관성 검사는 변동을 잡고, 정답 검사는 오류를 잡습니다. 둘은 서로 대신할 수 없습니다.

온도와 시드는 답을 다시 계산하게 만들지 않았습니다. 이번 과제에서 시드를 추가해 얻은 변화도 없었습니다.

기다린 시간의 대부분은 생성 시간이 아니었습니다

이번 런은 모델을 메모리에 상주시킨 속도 측정이 아닙니다. 호출이 끝날 때마다 모델을 내리는 설정.

gemma3:4b의 문의 분류와 발주 추출은 조건 평균 총소요가 5.25~5.61초였습니다. 이 가운데 생성은 1.08~1.43초였고, Ollama가 기록한 첫 호출 로딩 구간은 3.99~4.14초였습니다. 약 5.5초를 전부 답변 생성 시간으로 읽으면 로딩 비용까지 모델의 작성 속도에 더하게 됩니다.

qwen3-vl:8b의 문의 분류는 조건 평균 17.35~24.00초가 걸렸습니다. 생성 구간은 13.89~19.82초였습니다. 두 모델의 소요시간은 같은 작업에서 기록했지만, 이번 글의 중심 판정은 속도 우열이 아니라 조건별 출력 재현성입니다.

이 결과가 서 있는 범위

축 이번 측정 범위
주 모델 gemma3:4b
교차확인 모델 qwen3-vl:8b
반복 조건마다 8회
조건 기본값 · 온도 0 · 온도 0+시드 42
과제 분류 · 구조화 추출 · 자유 생성
측정 시점 2026년 9월
실행 환경 로컬 Ollama · RTX 4070 Ti SUPER

이번 수치는 2026년 9월의 로컬 Ollama 환경에서 실행한 gemma3:4b와 qwen3-vl:8b에 한정됩니다. 하루 전후의 비교는 기본값 문자열의 관찰 결과가 달라졌다는 기록입니다.

남는 기준은 재현성과 정확성을 따로 검사하는 것입니다

간단합니다.

이번 기록에서 확인한 효과만 놓고 보면, 운영 기준은 아래 두 갈래입니다.

서로 다른 문장 후보가 필요하면 기본값을 선택하세요. 자유 제목 과제에서는 기본값을 쓴 40개 제목 가운데 39개가 서로 달랐습니다.

같은 입력의 회귀 결과를 비교하려면 온도 0을 선택하세요. 이번 두 모델의 측정 범위에서는 온도 0 뒤의 출력이 모두 고정됐고, 시드 42를 더해도 결과는 달라지지 않았습니다.

구조화 데이터를 업무에 넘길 때는 재현성 검사만으로 끝내면 안 됩니다. JSON 형식과 필드 고정만 검사하면 이번 발주 오답을 통과시킵니다. 수량과 단가로 총금액을 다시 계산하는 규칙처럼, 업무 규칙에 맞춘 정답 검산을 반드시 추가하세요.

이 검산을 같은 모델의 자기평가에만 맡기는 방법도 별도 검증이 필요합니다. 모델이 자기 답을 얼마나 일관되게 채점하는지는 이 글 마지막에 언급한 자가채점 실험에서 따로 확인했습니다.

이 글이 직접 측정한 범위는 조건별 출력의 재현성과 총금액 검산 결과까지. 검산 절차는 반복된 오답을 실제 업무 값으로 넘기지 않기 위한 운영 제안입니다. 기본값을 계속 쓴다면 대표 출력을 저장하고, 다음 런에서는 문자열과 의미 값을 함께 비교하세요.

선택 기준은 위 두 문장으로 정리됩니다. 이번 자료에서는 고정 시드의 추가 효과가 관찰되지 않았으므로, 시드가 재현성을 더 높였다고 확대하지 않는 편이 맞습니다.

구조화 데이터를 업무에 넘길 때는 출력 고정과 정답 검산을 함께 두어야 합니다. 수량과 단가처럼 규칙으로 다시 계산할 수 있는 값은 별도 검사로 확인하세요. 같은 모델의 자기평가에 맡길 때는 AI 자가채점 신뢰도 실험도 함께 보세요. 같은 답이 나왔다는 이유만으로 그 답이 맞다고 처리하고 있지는 않은지 마지막으로 확인해야 합니다.


이 글의 반복 실행은 로컬에서 gemma3:4b와 qwen3-vl:8b로 돌렸습니다. 측정 스크립트와 글 작성에 AI 도구를 활용했고, 같은 답으로 볼 기준의 승인과 발행 전 검수는 제가 맡습니다.

재현: cinevyze-bench에 run_repro.py와 채점기 repro_score.py가 있습니다. 다만 공개된 run_repro.py는 이 저장소 밖의 내부 모듈을 불러 그대로는 돌지 않고, 채점 기준과 조건은 읽어 볼 수 있습니다. 본문의 test_runs/… 원자료 경로는 비공개 작업 폴더라 외부에서 열 수 없습니다.

cinevyze 운영자 — 로컬에서 AI 도구를 반복 실행해 출력 재현성과 정답 검증을 분리해 측정합니다. 이번 측정은 RTX 4070 Ti SUPER 한 장에서 gemma3:4b와 qwen3-vl:8b를 순차 실행했습니다. 운영자 소개

같은 답이 나오기만 확인하고 계신가요, 그 답이 맞는지도 따로 확인하고 계신가요?

댓글

이 블로그의 인기 게시물

AI 프롬프트를 영어로 바꿔도 60쌍 중 우열이 갈린 건 9쌍뿐이었습니다

AI가 준 출처 링크 37개를 다시 열었더니, 판정 가능한 35개가 모두 깨졌습니다