Eval 은 testing 이 아니야 — benchmark 도 아니야
'eval' 한 단어 아래 세 가지 활동이 겹쳐 있어서 사람들이 서로 딴 얘기 하게 돼. 셋을 헷갈리면 매번 잘못된 도구를 고르게 돼.
- Testing 은 코드가 시킨 대로 동작하는가? 에 답해. input/output 이 deterministic. assert add(2, 3) == 5 는 pass 아니면 fail.
- Benchmarking 은 이 모델이 공개 dataset 에서 다른 모델 대비 어떻게 ranking 되는가? 에 답해. 모델 선택엔 유용, product quality 엔 무관.
- Evaluation 은 내 system 이 내 user 의 input 같은 input 에 대해 좋은 output 을 내는가? 에 답해. output 은 non-deterministic, 'good' 은 contextual, user 는 계속 골대를 옮겨.
LLM eval 이 실제로 측정하는 것
eval 은 네 가지 재료를 측정으로 합쳐:
- Test dataset — 실제 workload 닮은 input + 선택적 reference 답.
- System under test — prompt, model, retrieval pipeline, tool loop, multi-agent system, 또는 그 조합.
- Grader — output 이 acceptable 한지 결정하는 함수. exact-match, regex, embedding similarity, LLM judge, Python validator, 인간 rater 다 가능.
- Reporting layer — 숫자를 의사결정으로 바꾸는 dashboard / CI gate / notebook.
원칙: Eval 은 가장 약한 재료만큼만 honest 해. 완벽한 grader + junk dataset = 아무것도 측정 안 함. 완벽한 dataset + 엉성한 grader = 엉성한 grader 측정.
Online vs offline eval
Offline eval 은 deploy 전 고정된 dataset 위에서 돌아. CI/CD 라고 생각하면 돼. 명백한 regression 막아줘. Online eval 은 deploy 후 실제 traffic — production log sampling, A/B 비교, 사용자 feedback, telemetry — 위에서 돌아. offline dataset 이 대표하지 못하는 걸 잡아. 둘 다 필요해. offline 만 하는 팀은 drift 에 눈이 먼 거고, online 만 하는 팀은 user 가 불평할 때까지 regression 에 눈이 먼 거야.