Lesson 113 — Advanced

Experiment Tracking & Prompt Versioning

Bina history ke har change ek guess hai. Is lesson mein hum har run ko MLflow mein record karna, metrics aur prompts ko artifacts banana, runs ko compare karna, aur prompts ko ek registry mein version karke staging/production labels se deploy-rollback karenge.

⏱ 20 min• Advanced• Preparing Your Apps for Production

Experiment kya hai aur kyun track karein

Kya hai?

Experiment tracking matlab har chalne waqt ke configuration, scores aur outputs ko ek jagah record karna — kaunsa change kis run mein hua, uske kaunse numbers aaye. Ye LLM app ka flight recorder hai.

Kab kaam aata hai?

Jab bhi koi knob ghumaao — chunk size, top-k, model, temperature, tool set. Aur tab bhi jab kuch theek karne ki koshish mein kuch bigad jaaye — history tabhi kaam aati hai.

Kahan milta hai?

Tracking servers mein (MLflow jaisa, local ya hosted), prompt registries mein (Langfuse jaisa), aur simple cases mein toh ek JSONL log file bhi chal jaati hai.

Sawaal simple hai: pichhle hafte wala behtar prompt ab kahan hai? Agar iska jawab "chat history mein tha" hai, toh tum experiment nahi, trial-and-error kar rahe ho. Tracking ka matlab hai har run ke saath ek named record jo baad mein compare ho sake.

Baseline pehle: Kuch badalne se pehle current setup ka ek baseline run banao — wahi aapka reference point hai. Bina baseline ke "lagta hai behtar hua" ke alawa kuch prove nahi ho sakta.

MLflow mein run record karna

import mlflow

mlflow.set_experiment("rag-app")

with mlflow.start_run(run_name="chunk400-topk8"):
    # parameters — jo bhi behaviour badalte hain
    mlflow.log_params({
        "chunk_size": 400, "top_k": 8,
        "model": CFG.model, "temperature": 0.0,
        "tools": "search,fetch_doc",
    })
    # metrics — naapne wale numbers
    mlflow.log_metrics({
        "faithfulness": scores.faithfulness,
        "answer_relevance": scores.relevance,
        "p95_latency_s": scores.p95_latency,
        "tokens_per_request": scores.avg_tokens,
    })
    # artifacts — prompts, config, sample outputs
    mlflow.log_artifact("prompts/rag_system_v3.txt")
    mlflow.log_artifact("outputs/sample_run.jsonl")
Config se log karo, yaad se nahi: Params ko config object se log karo jo app ne actually use kiya — manual typing mein ek galat number poori history ko jhoota bana deta hai.

Runs ka comparison aur decision

run              params                    faith  rel    p95    verdict
-------------------------------------------------------------------------------
baseline         chunk500 topk5            0.78   0.81   2.4s   reference
chunk400-topk8   chunk400 topk8            0.82   0.83   2.9s   quality up, slower
chunk400-topk8-r reranker on               0.86   0.84   3.6s   best quality
prompt-v4        v4 prompt, same retrieval 0.80   0.85   2.4s   relevance up, faith down?

# rule: ek metric upar, doosra neeche -> seedha promote mat karo,
# apna priority decide karo (quality-first ya latency-first)
Ek waqt ek knob: Ek experiment mein ek hi badlaav karo. Chaar cheezein badal ke numbers down aaye toh kiska dosh hai pata hi nahi chalega — tracking ka faayda hi khatam.

Prompt registry aur labels

prompt registry (Langfuse jaisa) — structure:

rag/system-prompt
  v1  (retired: faithfulness low)
  v2
  v3  <- label: staging
  v4  <- label: production

# PROMOTIONS sirf label hatti hai:
#   production: v3 -> v4     (text edit nahi, label move)
# ROLLBACK:
#   production: v4 -> v3     (ek API call, rebuild nahi)

fetch at runtime:
  prompt = registry.get("rag/system-prompt", label="production")
  # cache + pinned local fallback (next section)
Review culture: Prompt version banane aur label lagane wala alag ho sakta hai — PR jaisa flow banao: naya version draft, eval report, phir promote. "Maine raat ko badla tha" production ka reason nahi hota.

Runtime fetch, fallback aur rollback

import time

cache = {}

def get_prompt(name: str) -> str:
    try:
        p = registry.fetch(name, label="production", timeout=2.0)
        cache[name] = p          # cache update — kal bhi yahi milega
        return p
    except RegistryDown:
        if name in cache:
            return cache[name]   # stale par chal raha hai
        return PINNED_FALLBACK[name]   # repo mein versioned text

# rollback = ek call:
registry.set_label("rag/system-prompt", "production", to="v3")
# koi rebuild nahi, koi deploy nahi — agli request se hi purana prompt
SLO line: Registry ka fallback path likh kar rakho aur usse bhi test karo — sirf happy path pe chalne wala prompt fetch aadha implementation hai. Interview mein "registry down toh?" ka sawaal aksar aata hai.

Exercise

Question: MLflow mein chunk size, top-k jaise settings kis roop mein log hote hain? (params / metrics / artifacts)

Question: Faithfulness, latency jaise scores kis roop mein log hote hain?

Question: Bad prompt ko theek karne ka tareeka — text in-place edit ya label wapas move?

Question: Registry down ho toh app ka last resort — cache, ya pinned fallback?

Common mistakes

Desi example: Dawai ka batch record

Har dawai batch ka formula card (prompt version), test report (metrics) aur release note (params) file mein rehta hai — galat batch nikle toh seedha us batch number pe rollback hota hai, formula yaad se nahi:

text
batch card  -> run record (params + metrics)
staging pass-> label: staging
approved    -> label: production (batch release)
complaint   -> usi batch ka formula dekho (trace),
              previous batch dobara issue karo (rollback)
Interview angle — yahan se sawaal aate hain
  • Q: Params aur metrics mein farq? — Params = settings jo tune kiye (chunk, top-k, model); Metrics = outcome numbers (scores, latency, tokens).
  • Q: Baseline run kyun? — Har comparison ka reference; bina uske improvement ka koi proof nahi.
  • Q: Prompt registry se kya milta hai? — Versioned, reviewable prompts jo code se independently staging/production mein promote hote hain.
  • Q: Bad prompt deploy ho jaaye toh? — Production label wapas previous version pe move — ek call, no rebuild; phir post-mortem + eval case add.
Lesson complete?

History aur prompt versions dono safe hain. Agla lesson — Evaluation as a Release Gate — mein dekhenge ye scores ko CI mein kaise laate hain taaki kharab change production tak pahunche hi nahi.

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