पाठ 20 / 29

Drift: जब दुनिया या मॉडल बदलता है

Users के शिकायत करने से पहले इनपुट और गुणवत्ता में बदलाव पहचानें।

कल का मूल्यांकन आज का वर्णन न करे

जो system launch पर अच्छा score करता था वह बिना किसी कोड बदलाव के बिगड़ सकता है: product launch के बाद users नए विषयों पर पूछते हैं, provider मॉडल अद्यतन करता है, index के दस्तावेज़ पुराने पड़ते हैं, मौसमी traffic मिश्रण बदलता है, या भाषा मिश्रण बदलता है। इसे ऐसे पहचानें: इनपुट monitoring (विषयों, भाषाओं, लंबाइयों का वितरण baseline से तुलना, जैसे population stability index से, जहाँ PSI 0.1 से कम स्थिर और 0.25 से अधिक बड़ा बदलाव है); गुणवत्ता sampling (live traffic का random नमूना नियमित score करें, judge और मानव spot checks से); आउटपुट monitoring (इनकार दर, validation विफलताएँ, लंबाई, प्रति अनुरोध लागत); और user प्रतिक्रिया (thumbs, संपादन, escalations)। पूरा मूल्यांकन निर्धारित समय पर और किसी भी provider सूचना के बाद दोबारा चलाएँ, और नए देखे विफलता-प्रकार test set में लौटाएँ।

Population stability index, चलाकर

मैंने यह सादे Python 3 (सिर्फ़ standard library) से चलाया। इस हफ़्ते के विषय मिश्रण की launch baseline से तुलना PSI 0.002 देती है (स्थिर)। Product launch लोगों के पूछने का तरीक़ा बदले तो PSI 0.559 है, बड़ा बदलाव जो मूल्यांकन दोबारा चलाने और prompts व दस्तावेज़ों की समीक्षा को ट्रिगर करे।

import math

def psi(expected, actual):
    """Population Stability Index between two distributions given as proportions per bucket."""
    return sum((a - e) * math.log(a / e) for e, a in zip(expected, actual))

baseline = [0.50, 0.30, 0.15, 0.05]       # share of queries by topic when the app launched
this_week = [0.48, 0.31, 0.16, 0.05]
new_topic = [0.30, 0.25, 0.15, 0.30]      # a new product launch changed what people ask
for name, dist in (("this week", this_week), ("after product launch", new_topic)):
    v = psi(baseline, dist)
    verdict = "stable" if v < 0.1 else "moderate shift" if v < 0.25 else "large shift: re-run evals, review prompts"
    print(f"{name:21} PSI {v:.3f} -> {verdict}")

Output:

this week             PSI 0.002 -> stable
after product launch  PSI 0.559 -> large shift: re-run evals, review prompts

विफलताएँ test set में लौटाएँ

असली विफलताएँ सबसे अच्छे नए test मामले हैं।

त्वरित जाँच: किसी system की गुणवत्ता गिरती है जबकि कोई कोड नहीं बदला। कौन-सा कारण संभावित है?

  • कोड अलग compile हुआ
  • Provider ने मॉडल अद्यतन किया, या users अब नए विषय पूछते हैं
  • Python चलना भूल गया
  • ऐसा नहीं हो सकता
Answer

Provider ने मॉडल अद्यतन किया, या users अब नए विषय पूछते हैं — इनपुट, डेटा और मॉडल सब आपके नीचे बदल सकते हैं।