C.W.K.
Stream
Lesson 07 of 07 · published

Benchmark 한계와 Custom Benchmark

~18 min · benchmarks, limitations, custom

Level 0Guesser
0 XP0/55 lessons0/10 achievements
0/150 XP to next level150 XP to go0% complete

왜 public benchmark 가 충분 X

모든 public benchmark 가 product evaluation 에 같은 치명적 결함: public 이라는 거. Model 이 비교에 쓰고 싶은 같은 질문 위에서 evaluate (그리고 자주 train 된다) 의미. 세 가지 구조적 문제 따라:

  1. Contamination — model 이 training 에서 test 항목 봤음.
  2. Goodhart — benchmark 알려지면 model lab 이 그것 specifically optimize.
  3. Distribution mismatch — product 의 input distribution 이 benchmark 와 전혀 안 닮음.

왜 production 에서 custom benchmark 가 항상 이겨

Product 에 중요한 benchmark 는 product 자체의 eval suite. Public benchmark 는 명백히 약한 model 거르는 데 도움; custom benchmark 는 survivor 간 discriminate.

defensible custom benchmark 만드는 방법

  1. 실제 production traffic sample (privacy control 과 함께).
  2. 중요한 차원 (intent, language, length, difficulty) 에 걸쳐 stratify.
  3. Reference 답 또는 rubric grading 있는 500-1000 case curate.
  4. 어떤 model fine-tuning 에도 절대 닿지 않는 100-200 case hold out.
  5. 코드처럼 version; 분기별 refresh.
원칙: Public benchmark 는 어떤 model 이 race 에 있는지 알려주고, custom benchmark 는 어떤 걸 ship 할지 알려줘.

Future-proofing 논거

다음 model 이 도착하면 ("Claude X.Y", "GPT-N+1"), custom benchmark 가 switch 할지 결정하게 해주는 유일한 artifact. 없으면 모든 model upgrade 가 leap of faith. 있으면 upgrade 가 numerical decision: suite 돌렸어, baseline 이겼어, ship.

Code

Custom benchmark 구조·json
{
  "benchmark": "acme-product-v3",
  "version": "2026-q2",
  "description": "500 cases sampled from production logs, stratified by intent and language",
  "strata": {
    "intent": ["qa", "navigation", "transactional", "exploratory"],
    "language": ["en", "es", "fr", "ja"],
    "difficulty": ["easy", "medium", "hard"]
  },
  "holdout_count": 100,
  "refresh_cadence": "quarterly",
  "contamination_policy": "no case ever appears in any fine-tuning corpus"
}
Public-benchmark contamination 감지·python
# A simple test: paraphrase a benchmark question and ask the model both versions.
# If it answers the original near-perfectly but the paraphrase poorly,
# memorization is the likely explanation.
import difflib

def paraphrase_test(model, original_q, paraphrased_q, expected):
    a1 = model.complete(original_q)
    a2 = model.complete(paraphrased_q)
    return {
        "original_correct": expected in a1.lower(),
        "paraphrase_correct": expected in a2.lower(),
        "answer_similarity": difflib.SequenceMatcher(None, a1, a2).ratio(),
    }

External links

Exercise

Product 의 100-case custom benchmark 만들어, 적어도 3 차원에 걸쳐 stratify. 현재와 대안 model 하나 돌려. 같은 model 의 custom-benchmark score 와 MMLU score 비교. Disagreement 가 자체 데이터 보유 가치.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.