Lesson 114 — Advanced

Evaluation as a Release Gate

Eval set tab tak paperwork hai jab tak uska result kuch roke na sake. Is lesson mein hum evaluation suite ko automated tests mein badalna, thresholds set karna, non-determinism se kaise deal karna, aur fast subset versus full suite ka budget dekhenge — jisse ek kharab change CI mein hi ruk jaaye.

⏱ 20 min• Advanced• Experiment Tracking & Prompt Versioning

Release gate kyun chahiye

Kya hai?

Release gate matlab CI ka ek step jo quality score check karta hai — threshold se neeche gaya toh build fail, change aage nahi badhta. Prompt change bhi code change ki tarah gate se guzarta hai.

Kab kaam aata hai?

Har pull request pe (fast subset) aur har release se pehle (full suite). Tab bhi zaroori jab "sirf prompt hi toh badla hai" wali feeling aaye — feelings gate nahi hote.

Kahan milta hai?

Test runner ke andar (pytest + DeepEval jaisi libraries), CI job ke roop mein, aur report ke roop mein jo PR pe dikhta hai.

Socho ek neeche-wala bandaa prompt edit karta hai, local pe 3 sawaal dekhta hai, "sahi lag raha hai", merge kar deta hai — aur faithfulness gir jaati hai. Gate ka kaam hai wo teen sawaal nahi, poora eval set chalana aur decide karna. Insan thakta hai, gate nahi.

Mindset line: Jaise type check ya linter ke bina code merge nahi hota, waise hi quality gate ke bina prompt/model/retrieval change merge nahi hoga. Ye hi LLMOps ka "release engineering" wala hissa hai.

Eval suite = automated tests (DeepEval)

from deepeval import evaluate
from deepeval.metrics import AnswerRelevancyMetric, FaithfulnessMetric
from deepeval.test_case import LLMTestCase

def build_cases(dataset):        # tumhara Level 7 ka eval set
    cases = []
    for row in dataset:
        out = rag_app(row["question"])
        cases.append(LLMTestCase(
            input=row["question"],
            actual_output=out.answer,
            retrieval_context=out.contexts,
            expected_output=row.get("gold"),
        ))
    return cases

def test_faithfulness():
    cases = build_cases(FAST_SUBSET)
    evaluate(cases, [FaithfulnessMetric(threshold=BASELINE.faithfulness - TOL)])

def test_answer_relevancy():
    cases = build_cases(FAST_SUBSET)
    evaluate(cases, [AnswerRelevancyMetric(threshold=BASELINE.relevancy - TOL)])
Suite = code review: Naye synthetic cases (LLM se generate karke) test suite mein daalne se pehle ek insaan review kare — bina review ke judge-model ki apni bias suite mein chhip jaati hai.

Thresholds — baseline se tie karo

baseline.json (recorded):
  faithfulness   = 0.81
  relevancy      = 0.83
  p95_latency_s  = 3.0

policy.yaml (gate rules):
  faithfulness   : >= baseline - 0.02   # chhoti girawati chalegi
  relevancy      : >= baseline
  p95_latency_s  : <= baseline + 0.5
  tokens_avg     : <= baseline * 1.2

# gate = run ke numbers vs policy — fail toh build red
# threshold baseline se hai, "0.8 achha hai" ke belief se nahi
Thresholds ka drama test: Suite ko deliberately kharab karke chalao — prompt mein se instructions hata do, top-k 1 kar do. Gate fail nahi hua toh metric hi kaam nahi kar rahe. Ye "kya gate sach mein chal raha hai" ka test hai.

Non-determinism se deal karna

problem: same change do baar run -> do alag scores -> gate kabhi pass kabhi fail

fix ke tareeke (priority order):
1. temperature 0 rakho jahan task allow kare (classification, extraction)
2. ek case ko N baar chalao -> median lo, single sample nahi
3. tolerance band: baseline - margin (gate ko thoda elasticity do)
4. flaky metric ko quarantine karo, ignore mat karo — usse fix karo

gate rule: ek baar fail = signal, teen baar fail = pattern
Interview favourite: "LLM evals toh non-deterministic hain, gate kaise lagao?" — Temperature control, repetitions + median, tolerance bands, flake tracking. Ye char jawaab ek line mein aane chahiye.

Fast subset vs full suite

Har PR pe poora eval set = ghanton ka CI aur kharcha. Isliye do gears: fast subset (chhota, har change pe) aur full suite (poora, release se pehle). Subset ke cases representative hone chahiye — hamesha wahi 10 easy sawaal nahi.

PR (har push pe):
  unit tests -> FAST subset (representative, minutes) -> build?

release (tag pe):
  FULL suite (poora eval set, multiple runs) -> gate -> deploy?

# gated run ka result MLflow mein log:
# metric history mein dikhega ki kaunsa release kis number ko le gaya
Budget rule: Full suite ka kharcha per release hisaab se dekho, per PR nahi — phir uska premium bharne mein jhijhak nahi hoti. Gate sasta isliye nahi, zaroori isliye hai.

Exercise

Question: Gate ke thresholds kahan se aate hain — belief ya recorded baseline?

Question: Non-determinism kam karne ke liye task allow kare toh temperature kya rakhein? (number)

Question: Har PR pe chalne wala chhota eval set kya kehlata hai? (fast subset / nightly)

Question: LLM ke repeated runs ke scores ko combine karne ka robust summary — median ya best-of-n?

Common mistakes

Desi example: Border checkpoint vs gate

Border pe gaadi rukti hai, papers check hote hain, tabhi aage. Eval gate bhi yahi hai — sirf iss baar papers hain tumhare scores aur rules threshold:

text
gaadi (change) -> checkpoint (CI gate)
papers        -> fast subset report
rule book     -> policy.yaml (thresholds)

pass -> aage (build + deploy)
fail -> wapas (PR red, reason report mein)
# aur: koiVIP entry nahi — prompt change bhi same checkpoint
Interview angle — yahan se sawaal aate hain
  • Q: Eval gate kaise lagate ho CI mein? — Eval set ko automated tests (DeepEval jaisa) mein badal ke test runner me chalao, threshold fail pe build red.
  • Q: Threshold kaise set karte ho? — Recorded baseline se relative policy, per-metric; absolute magic numbers nahi.
  • Q: Non-determinism ko gate mein kaise handle karte ho? — Temperature 0 jahan possible, repetitions + median, tolerance bands, flake tracking.
  • Q: Fast subset aur full suite ka farq? — PR pe representative chhota set (tez feedback), release pe poora set (final check); dono logged.
Lesson complete?

Ab kharab change production tak pahunchne se pehle ruk jaata hai. Agla lesson — Runtime Guardrails — mein dekhenge gate ke baad bhi kuch cheezein runtime pe check karni padti hain — input, output aur agent limits.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course