स्टेप 13 · इसे निर्देश मानना सिखाना
एक बेस मॉडल सिर्फ टेक्स्ट को पूरा करता है। वह सवालों के जवाब नहीं देता। सुपरवाइज़्ड फाइन-ट्यूनिंग (Supervised fine-tuning) ही वह कदम है जो इसे एक से दूसरे में बदलता है।
60 सेकंड में
स्टेप 13 · इसे निर्देश मानना सिखाना
एक बेस मॉडल सिर्फ टेक्स्ट को पूरा करता है। वह सवालों के जवाब नहीं देता। सुपरवाइज़्ड फाइन-ट्यूनिंग (Supervised fine-tuning) ही वह कदम है जो इसे एक से दूसरे में बदलता है।
डेटा फॉर्मेट
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.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 | सीमित और फॉर्मेट-प्रधान कामों के लिए बेहतरीन |
हाइपरपैरामीटर्स जो प्री-ट्रेनिंग से अलग होते हैं
- लर्निंग रेट 10–100 गुना कम होता है — आमतौर पर फुल फाइन-ट्यूनिंग के लिए 1e-5 से 2e-5, LoRA के लिए 1e-4 से 2e-4।
- सिर्फ 1–3 epochs। इससे ज्यादा करेंगे तो मॉडल रटने लगेगा (memorisation) और उसकी सामान्य क्षमता में भारी गिरावट आएगी।
- छोटे बैचेस ठीक रहते हैं — 32 से 128 सीक्वेंस सामान्य हैं।
- catastrophic forgetting पर नज़र रखें। सिर्फ अपने काम पर ही नहीं, बल्कि सामान्य बेंचमार्क पर भी टेस्ट करें। एक ऐसा मॉडल जो आपके फॉर्मेट में तो माहिर हो गया लेकिन सोचना-समझना (reasoning) भूल गया, एक बुरा सौदा है।
SFT क्या ठीक कर सकता है और क्या नहीं
- आउटपुट फॉर्मेट और स्ट्रक्चर।
- टोन, पर्सोना और लंबाई।
- डोमेन से जुड़े खास शब्द और जार्गन।
- टूल-कॉल का भरोसेमंद फॉर्मेटिंग।
- तय पॉलिसी के आधार पर मना करने का तरीका।
- नए फैक्ट्स जोड़ना — इसके बजाय retrieval का इस्तेमाल करें।
- रीज़निंग ठीक करना — यह प्री-ट्रेनिंग के स्केल और मॉड्यूल 51 से आती है।
- बदलती जानकारी के साथ खुद को अपडेट रखना।
- ऐसी कोई भी चीज़ जो आप एक बेहतर प्रॉम्प्ट से हासिल कर सकते हैं, जिसे आपको पहले आज़माना चाहिए।
और देखें और पढ़ें
लैब
एक SFT रन जहाँ लॉस मास्क ही पूरा सबक है।
समस्या
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.आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1आपका फाइन-ट्यून आपके काम पर तो बेहतरीन है लेकिन सामान्य रीज़निंग में काफी खराब है। वजह पहचानें और ठीक करें।दिखाएं
अक्सर पूछे जाने वाले सवाल
मुझे कितने उदाहरणों की ज़रूरत है?
किसी सीमित फॉर्मेट वाले काम के लिए, 200–1,000 अच्छे उदाहरण अक्सर काफी होते हैं। एक जनरल असिस्टेंट के लिए, दसियों हज़ार। शुरुआत छोटे से करें, जांचें, और डेटा सिर्फ वहीं जोड़ें जहाँ जांच में कोई कमी दिखे।
फुल फाइन-ट्यून या LoRA?
लगभग सभी के लिए LoRA — मॉड्यूल 52। फुल फाइन-ट्यूनिंग तब काम की होती है जब आपके पास बहुत सारा डेटा हो, व्यवहार में बड़े बदलाव की ज़रूरत हो, और इसके लिए पर्याप्त मेमोरी हो।
मुझे कैसे पता चलेगा कि यह काम कर गया?
आपके असली काम से जुड़े अलग रखे गए डेटा (held-out set) का एक सेट, जिसे किसी पैमाने (rubric) या इंसान द्वारा जांचा गया हो, साथ ही यह देखने के लिए एक सामान्य बेंचमार्क कि वह पुरानी चीज़ें भूला तो नहीं। ट्रेनिंग लॉस कम होने से आपको शायद ही यह पता चलता है कि मॉडल उस काम में बेहतर हुआ या नहीं।
क्या मैं अपनी कंपनी के डॉक्युमेंट्स पर फाइन-ट्यून कर सकता हूँ?
आप कर सकते हैं, और यह आमतौर पर निराश ही करता है। मॉडल लिखने का स्टाइल तो पकड़ लेता है लेकिन फैक्ट्स को भरोसे के साथ याद नहीं रख पाता और डॉक्युमेंट्स बदलने पर इसे अपडेट भी नहीं किया जा सकता। नॉलेज के लिए retrieval सही टूल है; व्यवहार के लिए फाइन-ट्यूनिंग सही टूल है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।