A/B टेस्ट और ऑनलाइन मेट्रिक्स
Offline evals आपको बताते हैं कि क्या हो सकता है। असली यूज़र्स के साथ A/B टेस्ट आपको बताते हैं कि असल में क्या होता है। Guardrail मेट्रिक्स, सैंपल साइज़ का अंदाज़ा और novelty effects के बारे में जानें।
60 सेकंड में
A/B टेस्ट और ऑनलाइन मेट्रिक्स
Offline evals आपको बताते हैं कि क्या हो सकता है। असली यूज़र्स के साथ A/B टेस्ट आपको बताते हैं कि असल में क्या होता है। Guardrail मेट्रिक्स, सैंपल साइज़ का अंदाज़ा और novelty effects…
| Offline evals | ऑनलाइन (A/B) टेस्ट | |
|---|---|---|
| डेटा | आपका तय किया गया टेस्ट सेट | असली यूज़र्स, असली ट्रैफ़िक |
| स्पीड | मिनटों से लेकर घंटों में | दिनों से लेकर हफ़्तों में |
| जोखिम | कोई भी यूज़र खराब वर्शन नहीं देखता | कुछ यूज़र्स नया वर्शन देखते हैं |
| क्या मापता है | जाने-पहचाने मामलों पर सही होना, फ़ॉर्मैट, और सुरक्षा | यूज़र का बर्ताव: समस्या सुलझना, यूज़र का टिके रहना, शिकायतें, लागत |
| मुख्य कमज़ोरी | हो सकता है असली इस्तेमाल से मेल न खाए | धीमा और शोरगुल वाला (noisy); इसके लिए काफ़ी यूज़र्स की ज़रूरत होती है |
A/B टेस्ट कैसे काम करता है
- 1
पहले offline evals पास करें
ऐसे किसी भी वर्शन का A/B टेस्ट कभी न करें जो आपके ज़रूरी (must-pass) टेस्ट में फ़ेल हो जाए। - 2
एक मुख्य मेट्रिक चुनें
पहले से तय करें, जैसे "इंसान की मदद के बिना सुलझाई गई चैट्स का हिस्सा"। - 3
Guardrail मेट्रिक्स चुनें
ऐसी चीज़ें जो बिल्कुल खराब नहीं होनी चाहिए: शिकायतें, सुरक्षा से जुड़े फ़्लैग, लेटेंसी (देरी), हर चैट की लागत। - 4
यूज़र्स को बिना किसी क्रम के (randomly) बांटें
हर यूज़र को बिना किसी तय नियम के A (मौजूदा) या B (नया) ग्रुप दिया जाता है, और वह उसी ग्रुप में रहता है। - 5
एक तय समय के लिए चलाएं
शुरू करने से पहले अवधि और सैंपल साइज़ तय कर लें। जैसे ही B अच्छा दिखने लगे, उसी पल टेस्ट बीच में ही न रोकें। - 6
फ़ैसला लें
B को तभी रिलीज़ करें जब मुख्य मेट्रिक बेहतर हो और कोई भी guardrail खराब न हो।
Guardrail मेट्रिक्स
सैंपल साइज़ का अंदाज़ा
def users_per_group(p, d):
"""Rule of thumb: about 80% power, 5% significance, two groups."""
return round(16 * p * (1 - p) / d ** 2)
print(users_per_group(0.20, 0.02)) # detect 20% -> 22%: 6400 per group
print(users_per_group(0.20, 0.05)) # detect 20% -> 25%: 1024 per groupकिन गलतियों से बचें
| गलती | क्या होता है | बचाव |
|---|---|---|
| बार-बार झांकना (Peeking) | हर दिन नतीजे देखना और जैसे ही B बेहतर दिखे टेस्ट रोक देना — इससे ऐसी "जीत" मिलती है जो सिर्फ़ संयोग (noise) होती है। | समय और सैंपल साइज़ पहले से तय कर लें। |
| Novelty effect (नया होने का असर) | यूज़र्स किसी नए फ़ीचर को सिर्फ़ इसलिए आज़माते हैं क्योंकि वह नया है; बाद में इस्तेमाल कम हो जाता है। | टेस्ट काफ़ी समय तक चलाएं; समय के साथ आते बदलावों और दोबारा आने वाले यूज़र्स पर ध्यान दें। |
| Change aversion (बदलाव नापसंद होना) | शुरुआत में यूज़र्स को कोई भी बदलाव पसंद नहीं आता, भले ही वह अच्छा हो। | वही तरीका: इसे तब तक चलाएं जब तक यूज़र्स का बर्ताव सामान्य न हो जाए। |
| बहुत सारे मेट्रिक्स | अगर आप 30 मेट्रिक्स देखेंगे, तो उनमें से कुछ तो सिर्फ़ तुक्के से ही "बेहतर" दिखने लगेंगे। | पहले से एक मुख्य मेट्रिक तय करें; बाकी को सिर्फ़ संकेतों की तरह देखें। |
| असमान ग्रुप्स | एक ग्रुप में ज़्यादा हिंदी यूज़र्स आ जाते हैं, या वीकेंड का ट्रैफ़िक ज़्यादा आ जाता है। | यूज़र के हिसाब से रैंडम ग्रुप बनाएं, और जांचें कि दोनों ग्रुप्स एक जैसे दिखें। |
और देखें और पढ़ें
लैब
मेट्रिक्स, guardrails और सैंपल साइज़ के अंदाज़े के साथ एक पेज का A/B टेस्ट प्लान।
समस्या
स्थिति: एक रेलवे पूछताछ बॉट बिना किसी इंसान की मदद के लगभग 25% चैट्स सुलझाता है। आपके पास एक नया प्रॉम्प्ट है जिससे आपको इसे बढ़ाने की उम्मीद है।
- मुख्य मेट्रिक को बिल्कुल साफ़-साफ़ लिखें ("सुलझाई गई" किसे माना जाएगा?)।
- तीन guardrail मेट्रिक्स की सूची बनाएं और बताएं कि हर एक क्यों मायने रखता है।
- नियम (rule of thumb) का इस्तेमाल करके, 27% और 30% तक की बढ़त का पता लगाने के लिए हर ग्रुप में ज़रूरी यूज़र्स की संख्या निकालें। अपना कैलकुलेशन भी दिखाएं।
- हर दिन लगभग 2,000 चैट्स को देखते हुए, अंदाज़ा लगाएं कि हर टेस्ट में कितने दिन लगेंगे। क्या इनमें से कोई भी प्रैक्टिकल है?
- लिखें कि novelty effects से निपटने के लिए आप टेस्ट को कितने समय तक चलाएंगे, और टेस्ट रोकने का आपका नियम क्या होगा।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1आपके A/B test से पता चलता है कि नए प्रॉम्प्ट ने रेजोल्यूशन (समस्या सुलझाने की दर) बढ़ा दिया, लेकिन शिकायतें भी थोड़ी बढ़ गईं, हालांकि आंकड़ों के हिसाब से यह अंतर पूरी तरह साफ नहीं है। आप क्या करेंगे?दिखाएं
बिना सोचे-समझे इसे तुरंत रोल आउट (ship) न करें। अगर कोई गार्डरेल गलत दिशा में जा रहा है, तो यह एक चेतावनी है, भले ही वह आंकड़ों में पूरी तरह साफ न दिख रहा हो। ग्रुप B की कुछ शिकायतों और सुलझाई गई चैट्स के सैंपल को पढ़ें। अगर नया प्रॉम्प्ट गलत जवाब देकर चैट्स बंद कर रहा है, तो यह "जीत" झूठी है। दोबारा कोशिश करने से पहले आपको शायद लंबा टेस्ट चलाने, रेजोल्यूशन की बेहतर परिभाषा तय करने, या किसी सुधार की ज़रूरत हो सकती है।
Q2ऑफलाइन eval में हुआ सुधार A/B test में गायब क्यों हो सकता है?दिखाएं
हो सकता है कि टेस्ट सेट असली ट्रैफ़िक से मेल न खाता हो: असली यूज़र्स अलग-अलग भाषाओं, छोटे सवालों और अलग विषयों का इस्तेमाल करते हैं। हो सकता है कि सुधार ऐसे मामलों में हुआ हो जो असल में बहुत कम आते हैं। यूज़र्स ऐसी चीज़ों पर प्रतिक्रिया दे सकते हैं जिन्हें टेस्ट सेट नहीं मापता, जैसे स्पीड, लंबाई या बात करने का तरीका (tone)। और ऑफलाइन बढ़त शायद छोटे टेस्ट सेट पर सिर्फ एक तुक्का (noise) रही हो। A/B test असली माहौल को मापता है।
अक्सर पूछे जाने वाले सवाल
अगर offline evals अच्छे हैं, तो फिर A/B टेस्ट चलाने की क्या ज़रूरत है?
क्योंकि आपका टेस्ट सेट असली इस्तेमाल का सिर्फ़ एक अंदाज़ा होता है। असली यूज़र्स अलग-अलग बातें पूछते हैं, बात करने के लहज़े और स्पीड पर अलग प्रतिक्रिया देते हैं, और अपना बर्ताव बदलते हैं। एक A/B टेस्ट असल नतीजे को मापता है। कई टीमों ने देखा है कि जो फ़ायदे ऑफ़लाइन दिखते हैं, वे ऑनलाइन में कम हो जाते हैं या उल्टे भी पड़ जाते हैं।
क्या मुझे हर मैसेज के हिसाब से ग्रुप बांटना चाहिए या हर यूज़र के हिसाब से?
आमतौर पर यूज़र के हिसाब से, ताकि हर इंसान को एक जैसा अनुभव मिले। हर मैसेज को रैंडम करने पर एक ही व्यक्ति दोनों वर्शन देख सकता है, जिससे वह उलझन में पड़ जाएगा और आपकी नाप-जोख भी गड़बड़ हो जाएगी।
अगर मेरे पास A/B टेस्ट के लिए काफ़ी यूज़र्स न हों तो क्या करें?
तो फिर offline evals, असली बातचीत की इंसानों द्वारा ध्यान से की गई समीक्षा, और धीरे-धीरे रोलआउट करने पर ज़्यादा भरोसा करें जहां आप guardrail मेट्रिक्स पर करीब से नज़र रखें। इस बात को लेकर ईमानदार रहें कि आप छोटे बदलावों का पता नहीं लगा सकते।
क्या मैं thumbs up और thumbs down को अपना मुख्य मेट्रिक बना सकता हूँ?
यह एक काम का संकेत है, लेकिन बहुत कम यूज़र्स इस पर क्लिक करते हैं, और जो करते हैं वे शायद सभी यूज़र्स का प्रतिनिधित्व न करते हों। इसे बर्ताव पर आधारित मेट्रिक्स के साथ जोड़ें, जैसे कि क्या समस्या हल हुई या क्या यूज़र उसी समस्या के साथ वापस आया।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।