KYUN chahiye yeh: cost, storage (ek adapter per task = few MB vs full model copies), aur speed.
KYA karta hai LoRA: original weights ko freeze karta hai, ek trainable low-rank correction inject karta hai.
KAISE QLoRA extend karta hai: woh frozen base ko bhi quantize karta hai 4-bit mein taaki chhote GPU pe fit ho sake.
Ek linear layer compute karta hai h=W0x jahan W0∈Rd×k.
Fine-tuning mein ek naya weight chahiye W=W0+ΔW. Poora update ΔW mein d×k parameters hain — utne hi jitne W0 mein hain.
Yeh factorization kyun? Rank r ki koi bhi matrix r outer products ke sum ke roop mein likhi ja sakti hai. BA exactly wohi hai: B ke r columns times A ke r rows. Toh BA kisi bhi rank-≤r matrix ko represent kar sakta hai, aur usse zyada kuch nahi — yahi poora point hai (hum deliberately khud ko restrict kar rahe hain).
Parameter count:d⋅k ki jagah hum sirf r(d+k) train karte hain.
d=k=4096, r=8 ke liye: full =16.7M vs LoRA =65k — ek 256× reduction.
B=0 init pe kyun? Agar A,B dono random hote, toh step 0 pe model output corrupt ho jata. ΔW=0 se shuru karna matlab pehla gradient step ek pure improvement direction mein hota hai.
r se divide kyun karte hain? Jaise r badhate ho, BAx ka sum zyada terms accumulate karta hai aur barhta hai. r se divide karna normalize karta hai taaki har baar rank change karne pe learning rate re-tune na karna pade.
Training ke baad merge kar sakte ho: W←W0+rαBA. Ab yeh ek normal weight matrix hai — zero extra latency. Yeh LoRA ki killer feature hai adapter layers ke comparison mein (jo compute add karte hain).
QLoRA ka goal: ek 65B model ko single 48GB GPU pe fine-tune karna. Teen ingredients hain:
Key trick yeh hai: base weights 4-bit (frozen) mein store hote hain. Forward pass ke dauran unhe on the fly bf16 mein dequantize kiya jata hai sirf matmul ke liye. Sirf LoRA matrices A,B full precision mein rakhe jaate hain aur gradients receive karte hain.
Frozen base ko quantize karna safe kyun hai: hum usmein backpropagate nahi kar rahe. Frozen weights pe quantization noise ek fixed, chhoti perturbation hai jiske liye adapters compensate karna seekh lete hain. Tum kabhi bhi un weights ko quantize nahi karoge jinhe precisely train kar rahe ho.
Usme gradients flow nahi karte; adapters fixed quantization noise ko compensate karna seekh lete hain.
NF4 kis cheez ke liye optimal hai aur kyun?
Normally-distributed data ke liye; iske bins normal distribution ke quantiles hain, jo weight distribution se match karte hain.
α aur r ko link karne ka rule of thumb kya hai?
α≈2r set karo taaki effective update strength consistent rahe.
Recall Feynman: explain to a 12-year-old
Socho ek bada finished LEGO castle hai (pretrained model). Tum use birthday party ke liye change karna chahte ho, lekin poora castle rebuild karna bahut expensive hai. Uski jagah tum ek chhoti si removable decorations set add karte ho (chhoti A,B matrices) — saste banane mein, store karna easy, aur alag-alag parties ke liye swap kar sakte ho. LoRA = chhoti decorations. QLoRA = tum original castle bricks ko bhi shrink karte ho (4-bit) taaki poori cheez tumhare chhote table pe fit ho sake, phir bhi high-quality add-ons se decorate karte ho.