छोटे और ऑन-डिवाइस मॉडल्सएडवांस्डपाठ 2306 मिनट का पाठ

Distillation: एक छोटे मॉडल को सिखाना

एक बड़ा teacher मॉडल किसी एक काम के लिए छोटे student मॉडल को ट्रेन करने में मदद कर सकता है। जानें कि knowledge distillation और synthetic data कैसे काम करते हैं, और वे लाइसेंस नियम जो इस पर रोक लगा सकते हैं।

पाठ वीडियो में

60 सेकंड में

Distillation: एक छोटे मॉडल को सिखाना

एक बड़ा teacher मॉडल किसी एक काम के लिए छोटे student मॉडल को ट्रेन करने में मदद कर सकता है। जानें कि knowledge distillation और synthetic data कैसे काम करते हैं, और वे लाइसेंस नियम…

1/5
आसान शब्दों में
एक सीनियर छात्र किसी जूनियर को परीक्षा की तैयारी में मदद करता है। सीनियर अपनी पढ़ी हुई हर किताब उसे नहीं सौंप देता। वे केवल परीक्षा में आने वाले टॉपिक समझाते हैं, हल किए गए उत्तरों के साथ। जूनियर जल्दी सीख जाता है क्योंकि पढ़ाई एकदम काम की चीज़ों पर केंद्रित होती है। यही distillation है।
Knowledge distillation का मतलब है एक छोटे student मॉडल को किसी बड़े teacher मॉडल के बर्ताव की नकल करने के लिए ट्रेन करना। यह विचार जेफ्री हिंटन और उनके साथियों के 2015 के एक पेपर से लोकप्रिय हुआ था। आज यह छोटे मॉडलों को खास कामों के लिए उपयोगी बनाने के मुख्य तरीकों में से एक है।

दो आम तरीके

तरीकाStudent किससे सीखता हैज़रूरत
पारंपरिक (soft labels)हर संभावित उत्तर के लिए teacher की पूरी संभावना (probability), केवल सबसे ऊपर वाले उत्तर की नहींTeacher के आउटपुट की संभावनाओं (probabilities) तक पहुँच, आम तौर पर एक open-weight teacher जिसे आप खुद चलाते हैं
Synthetic data (केवल टेक्स्ट)Teacher द्वारा लिखे गए उदाहरण उत्तर, जिन्हें सामान्य ट्रेनिंग डेटा की तरह इस्तेमाल किया जाता हैकेवल teacher के टेक्स्ट आउटपुट, जैसे कि किसी API के ज़रिए, अगर शर्तें इसकी इजाज़त देती हों
पारंपरिक तरीका ज़्यादा जानकारी आगे पहुँचाता है: अगर teacher सोचता है कि "cat" होने की संभावना 70% है और "tiger" की 20%, तो student सीख जाता है कि बिल्ली और बाघ आपस में मिलते-जुलते हैं। Synthetic-data तरीका ज़्यादा आसान है और भाषा मॉडलों के लिए ज़्यादा आम है: आप teacher से कई अच्छे उदाहरण तैयार करवाते हैं, उन्हें जाँचते हैं, और student को उन पर fine-tune करते हैं।

एक synthetic-data पाइपलाइन

  1. 1

    एक काम तय करें

    उदाहरण के लिए: किसी हिंदी या अंग्रेज़ी कस्टमर मैसेज को पाँच श्रेणियों में बाँटें और एक छोटा कारण दें।
  2. 2

    असली इनपुट इकट्ठा करें

    सहमति से लिए गए और निजी जानकारी हटाए गए असली मैसेज, या असल जैसे दिखने वाले बनाए गए मैसेज।
  3. 3

    Teacher से पूछें

    बड़े मॉडल से कहें कि वह एक तय फॉर्मेट में हर इनपुट के लिए जवाब दे।
  4. 4

    फ़िल्टर करें और जाँचें

    गलत फॉर्मेट वाले उत्तर हटा दें। कुछ सैंपलों को लोगों से चेक करवाएँ। डुप्लीकेट हटाएँ।
  5. 5

    Student को ट्रेन करें

    जाँचे गए उदाहरणों पर छोटे मॉडल को fine-tune करें (अगला सबक देखें)।
  6. 6

    Held-out डेटा पर मूल्यांकन करें

    ऐसे उदाहरणों पर टेस्ट करें जो teacher ने कभी नहीं देखे थे, जिनका मूल्यांकन इंसानों या साफ़ नियमों द्वारा किया गया हो।
Python: generate labelled examples with a teacher (provider-neutral sketch)python
import json

LABELS = ["order", "complaint", "delivery", "refund", "other"]

def call_model(prompt: str) -> str:
    ...  # plug in your provider or local teacher model here

def teacher_label(message: str) -> dict | None:
    prompt = (
        "Classify this customer message into one of: " + ", ".join(LABELS) + ".\n"
        'Reply only with JSON like {"label": "...", "reason": "..."}.\n\n'
        "Message: " + message
    )
    try:
        out = json.loads(call_model(prompt))
    except (json.JSONDecodeError, TypeError):
        return None                      # drop badly formatted answers
    if out.get("label") not in LABELS:
        return None                      # drop invalid labels
    return {"input": message, "label": out["label"], "reason": out.get("reason", "")}

def build_dataset(messages: list[str], path: str) -> None:
    with open(path, "w", encoding="utf-8") as f:
        for m in messages:
            row = teacher_label(m)
            if row:
                f.write(json.dumps(row, ensure_ascii=False) + "\n")

पहले लाइसेंस और शर्तें जाँचें

ख़तरा
कुछ मॉडल लाइसेंस और कुछ प्रोवाइडरों की सेवा की शर्तें किसी मॉडल के आउटपुट का इस्तेमाल दूसरा मॉडल ट्रेन करने के लिए करने से रोकती हैं या सीमित करती हैं, खासकर किसी प्रतिस्पर्धी मॉडल के लिए। शुरू करने से पहले, teacher का लाइसेंस, उसकी स्वीकार्य-उपयोग नीति (acceptable-use policy) और किसी API के लिए प्रोवाइडर की शर्तें पढ़ें। अगर वे इस पर रोक लगाते हैं, तो कोई दूसरा teacher चुनें जिसकी शर्तें इसकी अनुमति देती हों। नियम अलग-अलग होते हैं और बदलते रहते हैं, इसलिए मौजूदा वर्ज़न ज़रूर जाँचें।

क्या गड़बड़ हो सकती है

  • नकल की गई गलतियाँ: student, teacher की गलतियों और पूर्वाग्रहों (biases) को भी सीख लेता है। सैंपलों को खुद हाथ से जाँचें।
  • सीमित डेटा: अगर सभी उदाहरण एक जैसे दिखते हैं, तो student ऐसे असली संदेशों पर फेल हो जाता है जो अलग दिखते हैं। असली और अलग-अलग तरह के इनपुट का इस्तेमाल करें।
  • लीक हुआ टेस्ट डेटा: अगर आपके टेस्ट उदाहरण ट्रेनिंग में भी शामिल थे, तो आपके स्कोर ज़रूरत से ज़्यादा अच्छे दिखेंगे।
  • निजी डेटा: सहमति और किसी साफ़ वजह के बिना लोगों के निजी संदेश किसी बाहरी teacher को न भेजें। पहले नाम और नंबर हटा लें।
नोट
किसी एक काम के लिए तैयार (distill) किया गया student आम तौर पर उसी काम में अच्छा होता है और बाकी चीज़ों में नहीं। यही इसका मुख्य मकसद है: छोटा, काम पर केंद्रित और चलाने में किफ़ायती।
यह करके देखें। ऐसा कोई काम चुनें जो आप अक्सर करते हैं, जैसे ईमेल छाँटना। पाँच उदाहरण इनपुट लिखें और वह सटीक आउटपुट फॉर्मेट लिखें जो आप teacher से बनवाना चाहते हैं।

और देखें और पढ़ें

लैब

किसी एक तय काम के लिए लिखित distillation योजना, जिसमें लाइसेंस की जाँच और मूल्यांकन का डिज़ाइन शामिल हो।

~35 min

समस्या

काम: "एक छोटा मॉडल जो किसान के सवाल (हिंदी, मराठी या अंग्रेज़ी) को पढ़ता है और उसे इनमें से किसी एक रूप में टैग करता है: फसल की बीमारी, मौसम, बाज़ार भाव, सरकारी योजना, अन्य।"

  1. एक teacher मॉडल चुनें। उसका लाइसेंस और शर्तें पढ़ें और ठीक-ठीक लिखें कि वे दूसरे मॉडलों को ट्रेन करने के लिए आउटपुट का उपयोग करने के बारे में क्या कहते हैं। यदि इसकी अनुमति नहीं है, तो दूसरा teacher चुनें।
  2. Teacher का prompt और सटीक आउटपुट फॉर्मेट लिखें।
  3. बताएँ कि आपके इनपुट कहाँ से आते हैं और आप सहमति और निजी डेटा को कैसे संभालते हैं।
  4. Teacher के खराब उत्तरों के लिए तीन फ़िल्टरिंग नियम लिखें।
  5. टेस्ट डिज़ाइन करें: कितने held-out उदाहरण होंगे, उन्हें कौन लेबल करेगा, और teacher की जगह लेने के लिए student को कितने स्कोर तक पहुँचना होगा।

आपको कुछ भी चलाने की ज़रूरत नहीं है। अगर आप कोड आज़माना चाहते हैं, तो किसी लोकल मॉडल के साथ सबक में दिए गए स्केच का इस्तेमाल करें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1केवल teacher के सबसे भरोसेमंद (most confident) उत्तरों पर ट्रेन किया गया student असली ट्रैफ़िक पर खराब प्रदर्शन क्यों कर सकता है?दिखाएं

Confident उत्तर आम तौर पर आसान मामले होते हैं। अगर आप केवल उन्हीं पर ट्रेन करते हैं, तो student कभी भी वे कठिन और अस्पष्ट मैसेज नहीं देख पाता जो असली यूज़र भेजते हैं, इसलिए उसने उन्हें संभालना नहीं सीखा होता है। इंसानों द्वारा जाँचे गए कुछ कठिन उदाहरणों को शामिल रखने से student को स्थिति की ज़्यादा असली तस्वीर मिलती है।

Q2आपके टेस्ट सेट पर आपके distilled student का स्कोर teacher से ज़्यादा आया है। जश्न मनाने से पहले आपको क्या जाँचना चाहिए?दिखाएं

जाँचें कि कोई भी टेस्ट उदाहरण (या उससे मिलती-जुलती नकल) ट्रेनिंग डेटा में शामिल तो नहीं था। जाँचें कि टेस्ट लेबल इंसानों की तरफ से आए हों, न कि teacher से, वरना आप सिर्फ़ teacher से उसकी सहमति माप रहे हैं। दोनों मॉडलों की गलतियों को खुद हाथ से देखें, और ताज़ा असली ट्रैफ़िक का एक सैंपल जाँचें। अगर यह नतीजा फिर भी बना रहता है, तो किसी खास काम के लिए यह सचमुच बेहतर हो सकता है।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या कोई student अपने teacher से बेहतर हो सकता है?

कुल मिलाकर, आम तौर पर नहीं। किसी एक छोटे और तय काम पर, सावधानीपूर्वक फ़िल्टरिंग और इंसानों द्वारा जाँचे गए कुछ डेटा के साथ, एक student कभी-कभी उस काम में teacher की बराबरी कर सकता है या उससे बेहतर हो सकता है। Held-out उदाहरणों पर इसे मापें; पहले से मान न लें।

मुझे कितने उदाहरणों की ज़रूरत होगी?

इसकी कोई तय संख्या नहीं है। एक आसान क्लासिफिकेशन काम के लिए, कुछ सौ से लेकर कुछ हज़ार अच्छे और अलग-अलग तरह के उदाहरण शुरुआत करने के लिए काफ़ी होते हैं। छोटे स्तर से शुरू करें, नतीजा मापें, और जहाँ student गलतियाँ करे, वहाँ और उदाहरण जोड़ें।

क्या distillation और fine-tuning एक ही चीज़ हैं?

Distillation इस बारे में है कि ट्रेनिंग सिग्नल कहाँ से आता है: एक teacher मॉडल से। Fine-tuning खुद ट्रेनिंग का कदम है। Synthetic-data तरीके में आप आम तौर पर student को teacher के उदाहरणों पर fine-tune करते हैं, इसलिए दोनों साथ-साथ चलते हैं।

क्या मैं किसी open-weight मॉडल को teacher के तौर पर इस्तेमाल कर सकता हूँ?

हाँ, और इससे आपको ज़्यादा नियंत्रण मिलता है, जिसमें आउटपुट की संभावनाओं (probabilities) तक पहुँच भी शामिल है। इसका लाइसेंस अब भी लागू होता है, इसलिए जाँचें कि यह दूसरे मॉडलों को ट्रेन करने के लिए आउटपुट के उपयोग के बारे में क्या कहता है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें