पाठ 8 / 27

Supervised Fine-Tuning (SFT) सरल शब्दों में

प्रशिक्षण loop मॉडल के साथ वास्तव में क्या करता है।

उदाहरण दिखाएँ, weights खिसकाएँ, दोहराएँ

Supervised fine-tuning (SFT) पहले से प्रशिक्षित मॉडल को इनपुट और वांछित आउटपुट की जोड़ियों पर प्रशिक्षित करती है। हर उदाहरण पर मॉडल उत्तर के tokens अनुमानित करता है, loss लक्ष्य से दूरी मापता है, backpropagation हर weight का योगदान निकालता है, और optimiser (जैसे Adam) loss घटाने को weights खिसकाता है। यह batches पर एक या कुछ epochs तक दोहराया जाता है। मॉडल मज़बूत सामान्य क्षमता से शुरू करता है इसलिए scratch से कहीं कम उदाहरण चाहिए, पर बड़े क़दम या ख़राब डेटा उसके जाने हुए को बिगाड़ सकते हैं। Loss आम तौर पर सिर्फ़ सहायक के उत्तर tokens पर निकाला जाता है।

पहले से प्रशिक्षित मॉडल पर छोटे क़दम

Fine-tuning आपके उदाहरणों पर gradient descent जारी रखती है, आदर्श रूप से weights का सिर्फ़ छोटा हिस्सा बदलते हुए।

पाँच विचार: SFT, learning rate, LoRA, preferences, distillation।
चित्र 3.1 — SFT, learning rate, LoRA, preferences और distillation।

एक चित्र में प्रशिक्षण loop

अवधारणात्मक, किसी एक library से बँधा नहीं।

for epoch in 1..E:
    for batch in shuffled(training_examples):
        predictions = model(batch.input)                        # forward pass
        loss = cross_entropy(predictions, batch.answer_tokens)  # only the answer part counts
        gradients = backward(loss)                              # how each weight affects the loss
        weights -= learning_rate * adjust(gradients)            # small step (Adam etc.)
    check validation loss on held-out examples                  # stop early if it stops improving

Prompt को mask करें

सिर्फ़ उत्तर tokens पर प्रशिक्षित करें; वरना मॉडल उपयोगकर्ता prompts की नक़ल सीखने में क्षमता लगाता है।

त्वरित जाँच: SFT क्या optimise करती है?

  • प्रति token क़ीमत
  • User prompt की लंबाई
  • Weights, वांछित उदाहरण आउटपुट पर loss घटाने के लिए
  • GPU पंखे की गति
Answer

Weights, वांछित उदाहरण आउटपुट पर loss घटाने के लिए — प्रशिक्षण weights को इस तरह समायोजित करता है कि लक्ष्य उत्तर अधिक संभावित हों।