Projekt 4: Finjustera en modell med LoRA
Förträna en liten teckenmodell på en text, finjustera den med LoRA på en annan stil, jämföra rank 1/4/16 och full finjustering på perplexitet, tränade parametrar och katastrofal glömska — och skriva ner slutsatsen i labbjournalen.
Lär ut: capstone-f-finjustering · Kräver: lorabygg-gpt-fran-grundenmodellutvardering
Teori
Basmodellen kan bara det den förtränats på. LoRA lägger till BA i attention-projektionerna (och ev. MLP) och tränar bara dem. Mät på tre saker: perplexitet på den nya stilen, parametrar som tränats, och perplexitet på den gamla texten efteråt (glömska).
Deluppgifter
- LoRA-injektion — `inject_lora(model, r, alpha, targets)` byter angivna nn.Linear (namn innehåller 'qkv'/'proj'/'mlp') mot LoRALinear och fryser resten; `count_trainable(model)`.
- perplexitet — `perplexity(model, data, ctx)` = exp(medel-cross-entropy) över löpande fönster.
- experimentet — `experiment(ranks, steps, seed)` → dict per konfiguration {ppl_new, ppl_old, trainable}, inklusive 'full'.
Evals: lora-r4-forbattrar (ppl_gain_r4 >= 1.2)
Logga in för att köra laborationen.
Förväntade resultat
LoRA r=4 sänker perplexiteten på nya stilen med minst 20 % jämfört med basmodellen, tränar < 15 % av parametrarna, och glömmer mindre än full finjustering (ppl_old lägre).
Vanliga fel
- Injicerar LoRA i embeddings/head också — då tränas för mycket.
- Glömmer frysa basen → 'LoRA' blir full finjustering.
- Mäter perplexitet på träningsfönstren.