C.W.K.
Stream
Lesson 09 of 10 · published

Eval Drift — When Your Test Set Lies

~12 min · evaluation, drift

Level 0Apprentice
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

Eval sets get stale

A golden set built in 2025 may not represent 2026 traffic. The categories shifted, the language changed, the user base grew, the policies were updated. A prompt that scores 95% on the old set can be measurably worse on the actual current traffic.

Drift signals

  • Pass rate on the golden set drifts upward over time without prompt changes (the model got better at answering yesterday's questions).
  • Production complaint rate rises while eval pass rate stays constant.
  • New intents appear in production that aren't represented in the golden set.
  • Reference outputs become stale (policy changes; the "correct" answer is now different).

Maintenance routine

  • Quarterly: sample 100 production cases, classify them, compare distribution to the eval set.
  • Add cases from new intents.
  • Retire cases that are no longer representative.
  • Re-review reference outputs for currency.

Code

Drift detection sketch·python
from collections import Counter

def intent_distribution(cases):
    return Counter(c["category"] for c in cases)

eval_dist = intent_distribution(load_golden_set())
prod_dist = intent_distribution(sample_production(n=200))

# Symmetric KL or just diff per category
for cat in set(eval_dist) | set(prod_dist):
    e = eval_dist.get(cat, 0) / sum(eval_dist.values())
    p = prod_dist.get(cat, 0) / sum(prod_dist.values())
    if abs(e - p) > 0.05:
        print(f"drift: {cat} eval={e:.2%} prod={p:.2%}")

External links

Exercise

Compare your golden set's category distribution against the last 30 days of production traffic. Identify and add three categories that are under-represented in the golden set.

Progress

Progress is local-only — sign in to sync across devices.
Spotted a bug or have feedback on this page?Report an Issue

Comments 0

🔔 Reply notifications (sign in)
Sign inPlease sign in to comment.

No comments yet — be the first.