모델 운영

MLOPS / 69번째 글

평가 루브릭 설계 — 채점 기준이 흔들리면 점수도 흔들린다

「5점: 매우 좋음」이라고 적힌 척도는 사람마다 다른 답을 냅니다. 축을 나누고 눈금마다 확인할 수 있는 조건을 붙여, 누가 채점해도 같은 점수가 나오는 기준을 만드는 방법을 정리합니다.

PALDYN Team10 MIN READ

지난 글까지는 점수가 이미 손에 있다고 치고 그 차이를 읽는 이야기를 했다. 이번에는 그 점수를 만들어 내는 자리다. 루브릭은 답을 몇 점으로 칠지 정해 둔 채점 기준표를 말한다.

여기가 평가 전체에서 가장 조용히 망가지는 자리다. 오차 폭 계산이 아무리 정확해도 채점 기준이 흔들리면 그 흔들림이 통째로 점수에 들어가고, 통계는 그것을 알아채지 못한다. 실력 차이로 보이던 것이 사실은 채점 기준 차이였던 경우가 드물지 않다.

「좋음」이라고 쓰지 않는다

가장 흔한 루브릭은 5점 척도에 형용사를 붙인 것이다. 그리고 그것이 가장 흔한 실패다.

「좋음」을 적지 말고 무엇이 보이는지를 적는다

왼쪽 척도에서 「4점」이 무슨 뜻인지는 적혀 있지 않다. 「좋음」이라고 적혀 있지만 그것은 4점을 다시 말한 것뿐이다. 그래서 채점하는 사람이 각자 자기 기준을 만들어 쓴다.

오른쪽처럼 눈금마다 조건을 적어 둔 것을 앵커라 부른다. 좋은 앵커에는 성질이 셋 있다.

  • 답을 보고 확인할 수 있다. 「사실 오류가 없다」는 확인할 수 있고 「신뢰가 간다」는 확인할 수 없다
  • 이웃한 눈금과 확실히 갈린다. 3점과 4점의 조건이 겹치면 그 자리에서 채점자가 갈린다
  • 답 안에 있는 것만 본다. 「사용자가 만족할 것이다」는 답 밖의 일이라 채점자가 상상해야 한다

앵커를 쓰다 보면 눈금이 다섯 개나 필요 없다는 것을 알게 되는 경우가 많다. 갈래를 확실히 적을 수 있는 만큼만 눈금을 둔다. 3점 척도로 명확하게 갈리는 기준이 5점 척도로 애매하게 갈리는 것보다 낫다.

눈금 수 어울리는 자리
2단계 (통과·실패) 규정 위반, 형식 준수, 도구 호출 정확성
3단계 대부분의 품질 축. 좋다·애매하다·나쁘다
5단계 앵커 다섯을 실제로 다르게 쓸 수 있을 때만

축을 하나로 합치지 않는다

두 번째로 흔한 실패는 「전반적인 품질」 한 축으로 채점하는 것이다. 한 답 안에서 좋은 점과 나쁜 점이 섞여 있을 때, 채점자는 그것을 머릿속에서 알아서 평균 내야 한다. 그 평균 내는 방식이 사람마다 다르다.

평균이 같아도 모양이 다르다

축을 나눠 두면 두 가지가 좋아진다. 채점이 쉬워지고 — 한 번에 하나만 보면 된다 — 결과를 보고 무엇을 고칠지 알 수 있다. 평균 3.5점은 어디를 고치라는 말도 아니지만, 「지시 준수 2점」은 프롬프트를 어디부터 봐야 할지 알려 준다.

축을 고를 때 쓸 만한 출발점이 넷이다.

축 묻는 것
사실 정확성 틀린 말이 있는가
지시 준수 요청한 것을 했는가
형식 정한 모양대로 나왔는가
안전 하지 말라고 한 것을 했는가

여기서 안전은 다른 셋과 성격이 다르다. 점수로 세지 말고 통과·실패로 세는 편이 낫다. 안전 2점짜리 답이 다른 축에서 점수를 벌어 평균을 넘기면 안 되기 때문이다. 이런 축을 따로 두고 하나라도 걸리면 전체를 실패로 치는 방식을 흔히 쓴다.

평균 점수 하나로 보고해야 할 때도 축별 점수를 함께 남긴다. 축마다 가중치를 다르게 줄 수도 있지만, 가중치를 정하는 순간 그 숫자가 무엇을 근거로 나왔느냐는 질문이 따라온다. 가중치 없이 축별로 나란히 보이는 편이 대개 정직하다.

모델에게 채점을 시킬 때

사람이 전부 채점할 수 없으므로 결국 모델에게 시키게 된다. 루브릭이 있다면 그것을 채점 프롬프트에 그대로 넣으면 되는데, 몇 가지가 달라진다.

근거를 먼저 쓰게 한다. 점수만 내라고 하면 답의 첫인상으로 숫자가 나온다. 어느 조건에 걸렸는지 적고 나서 점수를 내게 하면 앵커를 실제로 보게 되고, 나중에 채점이 이상할 때 어디서 틀렸는지 읽을 수 있다.

출력 모양을 고정한다. 점수를 문장 속에 섞어 내면 파싱이 매번 깨진다. 정해진 필드로만 받는다.

{
  "factuality": {"score": 4, "evidence": "환불 기한을 14일로 정확히 안내함"},
  "instruction": {"score": 2, "evidence": "세 줄 이내 요청을 어기고 일곱 줄로 답함"},
  "format": {"score": 5, "evidence": "요청한 표 형태를 지킴"},
  "safety": {"pass": true, "evidence": "개인정보 요구 없음"}
}

채점기도 채점한다. 사람이 채점한 문제 100~200개를 따로 두고 모델 채점과 얼마나 맞는지 잰다. 이 수치 없이 모델 채점을 쓰면 점수가 무엇을 재는지 아무도 모르는 상태가 된다. 채점 프롬프트를 고칠 때마다 이 세트로 다시 확인하고, 채점기에도 버전을 붙인다.

모델 채점에 알려진 치우침이 몇 가지 있고, 대부분 루브릭으로 줄일 수 있다.

치우침 무슨 일이 일어나나 대응
길이 긴 답에 높은 점수를 준다 앵커에 길이를 넣지 않고, 형식 축을 따로 둔다
자기 편애 자기 계열 모델의 답을 높게 본다 채점 모델을 평가 대상과 다른 것으로 쓴다
위치 먼저 보인 답을 높게 본다 순서를 바꿔 두 번 채점해 평균한다
중앙 쏠림 3점만 준다 눈금을 줄이고 앵커를 또렷하게 쓴다

기준을 고정하고 기록한다

루브릭도 평가 세트와 똑같이 버전을 붙여 관리한다. 앵커 한 줄을 고치면 점수 전체가 움직이고, 그러면 그 전후의 숫자를 이어 읽을 수 없다.

  • 루브릭을 고친 날에는 직전 버전으로도 한 번 더 채점해 두 점수를 나란히 남긴다
  • 채점자가 갈린 문제는 버리지 말고 모아 둔다. 앵커를 고쳐야 할 자리가 거기 있다
  • 「이건 애매해서 3점 줬다」 같은 메모를 받을 자리를 둔다. 몇 달 뒤 루브릭을 손볼 때 이 메모가 유일한 단서다

기준을 처음부터 완벽하게 쓰려고 하면 오래 걸리고 그래도 안 된다. 문제 스무 개를 두 사람이 각자 채점해 보고, 갈린 자리만 고치는 것을 두세 번 돌리는 편이 빠르다. 갈리는 자리는 늘 예상 못 한 곳에 있다.

정리

루브릭은 평가의 마지막 부품이 아니라 첫 부품이다. 여기서 정한 축과 앵커가 이후 모든 숫자의 뜻을 정하고, 그 뜻이 흔들리면 회귀 테스트도 신뢰구간도 흔들리는 것을 정밀하게 재게 된다.

그러니 규칙은 둘이다. 무엇을 볼지 축으로 나누고, 각 눈금에 답을 보고 확인할 수 있는 조건을 적는다. 「좋음」이라는 말이 기준표에 남아 있으면 아직 안 끝난 것이다.


읽어주셔서 감사합니다. 😊

LATEST

모델 운영의 최신 글

모델 운영2026.09.04

KV 캐시 양자화 — 가중치보다 이쪽이 먼저 넘친다

긴 문맥에서 GPU 메모리를 실제로 잡아먹는 것은 가중치가 아니라 KV 캐시입니다. 캐시 크기를 계산하는 법, K와 V를 다르게 다뤄야 하는 이유, 어디까지 줄여도 되는지를 정리합니다.

16 MIN
모델 운영2026.09.04

양자화 보정 — 데이터 128개가 모델 품질을 정한다

양자화에서 스케일을 정하는 절차가 보정입니다. 무엇을 재는지, 데이터를 어디서 몇 개 뽑아야 하는지, 자르는 지점을 어떻게 고르는지, 그리고 잘못된 보정이 어떤 모양으로 드러나는지를 정리합니다.

21 MIN
모델 운영2026.09.03

과제 특화 증류 — 큰 모델의 답을 작은 모델에 옮긴다

범용 성능이 아니라 우리 과제 하나만 잘하는 작은 모델을 만드는 방법입니다. 교사에게 무엇을 받아야 하는지, 데이터를 어떻게 모으고 거르는지, 손익 분기가 어디인지를 정리합니다.

15 MIN