Lesson 147 — Advanced

Supervised Fine-Tuning (SFT)

SFT wo step hai jahan tumhara dataset actual weight updates mein badalta hai. Is lesson mein hum SFT kya change karta hai, kaunse hyperparameters pehle matter karte hain, full vs parameter-efficient training, ek pehla training run chalana, loss curves padhna, catastrophic forgetting pehchanna, aur validation pe checkpoint chunna dekhenge.

⏱ 20 min• Advanced• Data Curation for Fine-Tuning

SFT kya change karta hai

Kya hai?

Supervised Fine-Tuning = labelled examples ke against model ke weights ko thoda thoda update karna, jisse loss (assistant response ke tokens ka prediction error) kam ho. Base behaviour rehta hai, par naya pattern usmein chadh jaata hai.

Kab kaam aata hai?

Jab dataset ready ho — format, tone, narrow task — aur prompt/retrieval se wo behaviour hold nahi ho raha. Preference tuning aur RFT se pehle ka pehla training stage yahi hota hai.

Kahan milta hai?

Training scripts mein (TRL jaisi libraries), managed fine-tuning APIs mein, ya apni GPU cluster pe. Output: ek checkpoint, jo validation se chunna jaata hai.

SFT ka mechanism simple hai: example aaya → model ne jawab banaya → uske tokens ka loss nikaala → weights thoda adjust. Har example ke baad adjustment bahut chhota hota hai — isliye kuch sau examples ka asar dikhta hai par base model ki aadatein nahi udti. Par "bahut chhota" ka matlab "zero side-effect" nahi — agla section isi liye hai.

Training loss hi manzil nahi: Loss girna zaroori hai, par kaafi nahi. Asli sawaal ye hai ki validation pe kya ho raha hai aur sample outputs padhne mein kaise lag rahe hain. Loss curve aur outputs dono dekho.

Hyperparameters jo pehle matter karte hain

# pehle in 5 knobs ko samjho, baaki defaults pe chhod do
cfg = {
    "learning_rate": 2e-5,   # chhota LR — weights ko nudge karna hai, rewrite nahi
    "epochs": 3,             # zyada epochs = overfit ka darr
    "batch_size": 8,         # per device
    "grad_accum": 4,         # effective batch = 8 * 4 = 32 (GPU chhoti ho toh)
    "max_seq_len": 1024,     # isse lambi example yahan truncate ho jaayegi
}

# decision: loss unstable hai -> LR chhota karo, LR badhane se nahi
Ek waqt ek knob: LR aur epochs dono ek saath badla toh pata nahi chalega kisne asar kiya. Experiments ko chhote splits pe rakho, configuration har run ke saath save karo — warna 3 din baad yaad hi nahi rahega kya chala tha.

Full fine-tuning vs parameter-efficient

FULL TUNE                     ADAPTER (e.g. LoRA)
har param update               chhote trainable matrices
memory: weights+grad+optimizer  base frozen -> memory kaafi kam
storage: poora model per run    adapter chhota, base share
swap: naya run = naya model     kai adapters ek base pe

rule: adapter se shuru, full tabhi jab adapter ki ceiling aa jaaye
Production angle: Adapters ka matlab hai ek base model pe production ke kai versions simultaneously rakh sakte ho (agle lesson mein detail). Full tune ka matlab har version ek poora model hai — storage, deployment aur rollback teeno bhaari.

Pehla SFT run — aur curves padhna

from trl import SFTTrainer, SFTConfig   # example training library

trainer = SFTTrainer(
    model="base/model-name",
    train_dataset=train_ds,
    eval_dataset=val_ds,
    args=SFTConfig(
        output_dir="runs/sft-01",
        learning_rate=2e-5,
        num_train_epochs=3,
        per_device_train_batch_size=8,
        eval_strategy="steps",
        save_strategy="steps",
    ),
)
trainer.train()
print(trainer.evaluate())    # validation loss — yahi asli number hai
reading the curves (illustrative shape, numbers tumhare honge):

epoch   train_loss   val_loss    reading
1       girta hai    girta hai   dono seekh rahe — aage badho
ditto   girta hai    girta hai   stable, aur improvement — theek
last    girta hai    chadh gaya  train neeche, val upar = OVERFIT
zero    bada hai     bada hai    dono nahi gir rahe = UNDERFIT
zigzag  unstable     unstable     LR zyada hai — chhota karo
Checkpoint validation se chuno, aakhri epoch se nahi: Jo epoch aakhir mein band hua wo zaroori nahi sabse achha ho. Har checkpoint pe val metrics + 10 sample outputs padho, phir decide karo kaunsa rakhna hai — aakhri wala default mat manno.

Outputs padho, sirf loss nahi

# har checkpoint pe blind sample lo — numbers se jhooth bhi milta hai
CHECKS = [
    "format parse hota hai?",        # JSON/schema strictly
    "tone consistent hai?",          # spec ke against
    "length theek hai?",             # over-verbose ya truncated
    "hallucination toh nahi?",       # facts se guess kar raha
    "base wali cheezein bhi hain?",  # general ability intact
]

def read_checkpoint(path, prompts, checks=CHECKS):
    for p in prompts:
        out = generate(path, p)
        log(path, p, out, [c for c in checks if fail(c, out)])
SFT ka output: Ek checkpoint file + uski training config + val numbers. Isko agli lesson ka input maano — adapters isi checkpoint se bante hain, aur evaluation mein isi ko baseline se compare kiya jaayega.

Exercise

Question: Loss curve chhatka raha hai ya NaN aa gaya — pehla knob kaunsa chhota karte hain?

Question: Train loss girta ja raha hai par validation loss chadhne laga — iska naam kya hai? (ek shabd)

Question: Chhote GPU pe effective batch size badhane ke liye kaunsa technique use hoti hai?

Question: Checkpoint kaunsa rakhna chahiye — aakhri epoch wala ya validation behavior dekh kar?

Question: Tune ke baad model apni general abilities khone ko kya kehte hain?

Common mistakes

Desi example: Intern ko approved reports ka pattern sikhana

Naye intern ko tum 500 report nahi dete — 20 achhe approved reports dikhate ho, pattern samjhate ho, phir khud karwate ho. SFT wahi hai: model wahi 20 patterns repeat karke wahi aadat pakadta hai, aur coaching ke dauran jo bekaar likha usse correction (loss) milta hai:

text
approved report (example) -> pattern dekho
meinat (forward pass)     -> jawab banao
correction (loss)         -> weights thoda adjust
test (validation)         -> ab khud likh ke dikhao
best copy (checkpoint)    -> jo sabse achha likhe — wahi rakhna
Interview angle — yahan se sawaal aate hain
  • Q: SFT ka loss kis tokens pe lagta hai? — Assistant response ke tokens pe, prompts ko mask karke.
  • Q: Overfitting aur underfitting curves mein kaise dikhte hain? — Overfit: train neeche, val upar; underfit: dono flat aur high.
  • Q: Full fine-tune aur adapter ka core farq? — Full har param update karta hai (zyada memory/storage), adapter base frozen rakh ke chhota trained hissa jodta hai.
  • Q: Loss kam hai phir bhi model deploy nahi karoge — kyun? — Loss ek proxy hai; outputs, formats aur regressions check kiye bina faisle nahi.
  • Q: Catastrophic forgetting kaise pehchanoge? — Off-task regression pack chalao: base jo karta tha wo tune ke baad bigad gaya.
Lesson complete?

SFT chalana aur curves padhna clear — ab tum ek defendable checkpoint chun sakte ho. Agla lesson — LoRA & QLoRA — mein dekhenge ye training single GPU pe kaise fit hoti hai.

Popular courses: Data Science Course in Lucknow · AI Course in Lucknow · Python Course in Lucknow · Power BI Course · Data Analytics Course