एक LLM बनाएँमध्यमपाठ 496 मिनट का पाठ

स्टेप 13 · इसे निर्देश मानना सिखाना

एक बेस मॉडल सिर्फ टेक्स्ट को पूरा करता है। वह सवालों के जवाब नहीं देता। सुपरवाइज़्ड फाइन-ट्यूनिंग (Supervised fine-tuning) ही वह कदम है जो इसे एक से दूसरे में बदलता है।

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

60 सेकंड में

स्टेप 13 · इसे निर्देश मानना सिखाना

एक बेस मॉडल सिर्फ टेक्स्ट को पूरा करता है। वह सवालों के जवाब नहीं देता। सुपरवाइज़्ड फाइन-ट्यूनिंग (Supervised fine-tuning) ही वह कदम है जो इसे एक से दूसरे में बदलता है।

1/6
आसान शब्दों में
बेस मॉडल ने सब कुछ पढ़ा है लेकिन उसे कभी यह नहीं बताया गया कि उसका काम क्या है। उससे कोई सवाल पूछें और हो सकता है कि वह दस और सवाल लिख दे, क्योंकि सवालों की लिस्ट ऐसी ही दिखती है। SFT उसे यह सिखाना है कि "जब कोई पूछे, तो आपको जवाब देना है"।
प्री-ट्रेनिंग आपको बुनियादी क्षमता (raw capability) देती है। सुपरवाइज़्ड फाइन-ट्यूनिंग (SFT), जिसे इंस्ट्रक्शन ट्यूनिंग भी कहा जाता है, अच्छी बातचीत के उदाहरणों पर ट्रेन करके इसे एक असिस्टेंट का रूप देती है।

डेटा फॉर्मेट

One SFT examplepython
example = {
  "messages": [
    {"role": "system", "content": "You are a careful assistant."},
    {"role": "user", "content": "Why is the sky blue?"},
    {"role": "assistant", "content": "Sunlight contains all colours. Air "
     "scatters short wavelengths more than long ones, so blue light bounces "
     "around the sky and reaches your eyes from every direction."}
  ]
}

# Rendered with the model's chat template, then tokenised. Each role turn
# is wrapped in special tokens, and the newlines matter:
#
#   <|im_start|>system      + newline + You are a careful assistant. + <|im_end|>
#   <|im_start|>user        + newline + Why is the sky blue?        + <|im_end|>
#   <|im_start|>assistant   + newline + Sunlight contains...        + <|im_end|>
#
# Use tokenizer.apply_chat_template() rather than building this by hand --
# every model family differs, and a mismatch degrades quality silently.
ख़तरा
ज्यादातर असफल फाइन-ट्यून के पीछे यहाँ की दो गलतियाँ होती हैं। पहली: गलत चैट टेम्पलेट का इस्तेमाल करना — हर मॉडल फैमिली का अपना टेम्पलेट होता है, और मेल न खाने पर सब कुछ "काम करते हुए" दिखने के बावजूद क्वालिटी बहुत खराब हो जाती है। दूसरी: सिर्फ असिस्टेंट के टोकन्स के बजाय पूरे सीक्वेंस पर लॉस (loss) कैलकुलेट करना।
Mask the loss to assistant tokens onlypython
def build_labels(input_ids, assistant_spans, ignore=-100):
    """Only the assistant's own tokens contribute to the loss."""
    labels = torch.full_like(input_ids, ignore)
    for start, end in assistant_spans:
        labels[start:end] = input_ids[start:end]
    return labels

# cross_entropy ignores -100 by default, so the model is never
# trained to generate the user's questions back at you.

क्वालिटी, क्वांटिटी से कहीं बेहतर साबित होती है

डेटासेटसाइज़नतीजा
स्क्रैप किए गए चैट लॉग्स500,000औसत दर्जे का — असंगत स्टाइल, गलत तथ्यों को ही सही मानकर सीख लेना
सावधानी से चुना और संवारा गया (Carefully curated)1,000–10,000अक्सर हर मामले में बेहतर
क्यूरेटेड + परखा हुआ सिंथेटिक20,000–100,000मौजूदा मुख्यधारा का तरीका
आपके अपने डोमेन के उदाहरण200–2,000सीमित और फॉर्मेट-प्रधान कामों के लिए बेहतरीन
यह करें
यह बात लोगों को हर बार हैरान करती है: हजार बेहतरीन उदाहरण आमतौर पर एक लाख औसत उदाहरणों पर भारी पड़ते हैं। मॉडल यहाँ फैक्ट्स नहीं सीख रहा है — वे तो उसके पास पहले से हैं। वह फॉर्मेट, टोन, मना करने का तरीका (refusal behaviour) और मददगार बनना सीख रहा है। ये चीजें बहुत कम उदाहरणों से भी सीखी जा सकती हैं।

हाइपरपैरामीटर्स जो प्री-ट्रेनिंग से अलग होते हैं

  • लर्निंग रेट 10–100 गुना कम होता है — आमतौर पर फुल फाइन-ट्यूनिंग के लिए 1e-5 से 2e-5, LoRA के लिए 1e-4 से 2e-4।
  • सिर्फ 1–3 epochs। इससे ज्यादा करेंगे तो मॉडल रटने लगेगा (memorisation) और उसकी सामान्य क्षमता में भारी गिरावट आएगी।
  • छोटे बैचेस ठीक रहते हैं — 32 से 128 सीक्वेंस सामान्य हैं।
  • catastrophic forgetting पर नज़र रखें। सिर्फ अपने काम पर ही नहीं, बल्कि सामान्य बेंचमार्क पर भी टेस्ट करें। एक ऐसा मॉडल जो आपके फॉर्मेट में तो माहिर हो गया लेकिन सोचना-समझना (reasoning) भूल गया, एक बुरा सौदा है।

SFT क्या ठीक कर सकता है और क्या नहीं

SFT इनके लिए सही टूल है
  • आउटपुट फॉर्मेट और स्ट्रक्चर।
  • टोन, पर्सोना और लंबाई।
  • डोमेन से जुड़े खास शब्द और जार्गन।
  • टूल-कॉल का भरोसेमंद फॉर्मेटिंग।
  • तय पॉलिसी के आधार पर मना करने का तरीका।
SFT इनके लिए गलत टूल है
  • नए फैक्ट्स जोड़ना — इसके बजाय retrieval का इस्तेमाल करें।
  • रीज़निंग ठीक करना — यह प्री-ट्रेनिंग के स्केल और मॉड्यूल 51 से आती है।
  • बदलती जानकारी के साथ खुद को अपडेट रखना।
  • ऐसी कोई भी चीज़ जो आप एक बेहतर प्रॉम्प्ट से हासिल कर सकते हैं, जिसे आपको पहले आज़माना चाहिए।
सावधान रहें
ट्रैक B के लिए एक गंभीर चेतावनी: फाइन-ट्यूनिंग से सेफ्टी बिहेवियर खत्म हो सकता है। रिसर्च से पता चला है कि सीधे-सादे दिखने वाले थोड़े से उदाहरण भी मॉडल की मना करने की ट्रेनिंग (refusal training) को काफी बिगाड़ सकते हैं। अगर आप फाइन-ट्यून करते हैं, तो बाद में अपने सेफ्टी इवैल्यूएशन दोबारा चलाएं — यह मानकर न चलें कि बेस मॉडल की खूबियां बची ही होंगी।

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

State of GPT: pretraining to RLHFAndrej Karpathy · video

लैब

एक SFT रन जहाँ लॉस मास्क ही पूरा सबक है।

~25 min

समस्या

200 बातचीत पर एक छोटे मॉडल को फाइन-ट्यून करें। इसे दो बार चलाएं: एक बार पूरे सीक्वेंस पर लॉस के साथ, एक बार सिर्फ असिस्टेंट टोकन्स तक मास्क करके। आउटपुट्स की तुलना करें।
शुरुआती कोडpython
labels = input_ids.clone()
labels[~assistant_mask] = -100        # cross_entropy ignores -100
# Run once without this line. Read what the model generates. That is the lesson.
Google Colab खोलें ↗इस कोड के लिए आपके अपने सेटअप की ज़रूरत है (एक मॉडल, एक GPU या अतिरिक्त पैकेज)। इसे Google Colab में चलाएं: File → Upload notebook।

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

कठिन सवाल

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

Q1आपका फाइन-ट्यून आपके काम पर तो बेहतरीन है लेकिन सामान्य रीज़निंग में काफी खराब है। वजह पहचानें और ठीक करें।दिखाएं
Catastrophic forgetting: सीमित डेटा पर फुल फाइन-ट्यूनिंग करने से मॉडल के वेट्स (weights) सामान्य क्षमता से दूर चले जाते हैं। लागत के क्रम में समाधान: LoRA का उपयोग करें ताकि बेस वेट्स फ्रीज़ रहें; लर्निंग रेट कम करें और कम epochs ट्रेन करें; अपने डेटा में 10-30% सामान्य निर्देश डेटा मिलाएं; और हमेशा अपने काम के साथ-साथ किसी सामान्य बेंचमार्क पर भी टेस्ट करें, वरना आपको तब तक पता नहीं चलेगा जब तक यूज़र्स को इसका अहसास न हो।

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

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

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

किसी सीमित फॉर्मेट वाले काम के लिए, 200–1,000 अच्छे उदाहरण अक्सर काफी होते हैं। एक जनरल असिस्टेंट के लिए, दसियों हज़ार। शुरुआत छोटे से करें, जांचें, और डेटा सिर्फ वहीं जोड़ें जहाँ जांच में कोई कमी दिखे।

फुल फाइन-ट्यून या LoRA?

लगभग सभी के लिए LoRA — मॉड्यूल 52। फुल फाइन-ट्यूनिंग तब काम की होती है जब आपके पास बहुत सारा डेटा हो, व्यवहार में बड़े बदलाव की ज़रूरत हो, और इसके लिए पर्याप्त मेमोरी हो।

मुझे कैसे पता चलेगा कि यह काम कर गया?

आपके असली काम से जुड़े अलग रखे गए डेटा (held-out set) का एक सेट, जिसे किसी पैमाने (rubric) या इंसान द्वारा जांचा गया हो, साथ ही यह देखने के लिए एक सामान्य बेंचमार्क कि वह पुरानी चीज़ें भूला तो नहीं। ट्रेनिंग लॉस कम होने से आपको शायद ही यह पता चलता है कि मॉडल उस काम में बेहतर हुआ या नहीं।

क्या मैं अपनी कंपनी के डॉक्युमेंट्स पर फाइन-ट्यून कर सकता हूँ?

आप कर सकते हैं, और यह आमतौर पर निराश ही करता है। मॉडल लिखने का स्टाइल तो पकड़ लेता है लेकिन फैक्ट्स को भरोसे के साथ याद नहीं रख पाता और डॉक्युमेंट्स बदलने पर इसे अपडेट भी नहीं किया जा सकता। नॉलेज के लिए retrieval सही टूल है; व्यवहार के लिए फाइन-ट्यूनिंग सही टूल है।

पाठ का टेस्ट

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

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