Finjustering av språkmodeller
Kunna finjustera en liten modell med instruktionsdata, välja hyperparametrar och mäta förbättring mot basmodellen.
Förkunskaper
Intuition
Finjustering = fortsätt träna en förtränad modell på din data. Modellen kan redan språk; du lär den format, domän och beteende.
Instruktionsfinjustering (SFT): data är (instruktion, svar)-par. Loss räknas oftast bara på svarstokens. Modellen lär sig att svara i din stil. 500–5 000 bra exempel gör större skillnad än 50 000 dåliga.
Hyperparametrar som spelar roll: inlärningstakt (1e-5 till 2e-4 beroende på full/LoRA), 1–3 epoker (mer → memorering), effektiv batch 16–64, promptmall identisk vid träning och inferens.
Mät alltid: samma eval före och efter. Ingen förbättring på evalen = finjusteringen gjorde inget (eller gjorde skada på annat — kontrollera också en generell eval).
Kod
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
namn = "Qwen/Qwen2.5-0.5B"
tok = AutoTokenizer.from_pretrained(namn); m = AutoModelForCausalLM.from_pretrained(namn)
MALL = "### Instruktion:\n{q}\n### Svar:\n"
def koda(q, a):
p = tok(MALL.format(q=q))["input_ids"]; s = tok(a + tok.eos_token)["input_ids"]
ids = torch.tensor(p + s); labels = ids.clone(); labels[: len(p)] = -100 # ingen loss på prompten
return ids, labels
opt = torch.optim.AdamW(m.parameters(), lr=1e-5)
for epok in range(2):
for q, a in data:
ids, labels = koda(q, a)
loss = m(input_ids=ids[None], labels=labels[None]).loss
loss.backward(); opt.step(); opt.zero_grad()
# inferens — SAMMA mall
x = tok(MALL.format(q="Vad är en tensor?"), return_tensors="pt")
print(tok.decode(m.generate(**x, max_new_tokens=60)[0][x["input_ids"].shape[1]:]))
I praktiken: LoRA (nästa nivå) för minne, gradient accumulation för batch, bf16, och en eval-harness som körs före/efter.
Behärskning innebär
- Finjusterar en liten modell på instruktionsdata
- Väljer lr, epoker och formaterar data med prompt-mall
- Mäter förbättring mot basmodellen med en eval
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Hugging Face — dokumentation (Apache-2.0) — Apache-2.0
- arXiv — Training language models to follow instructions with human feedback — arXiv (öppen åtkomst; licens per artikel)
- arXiv — LIMA: Less Is More for Alignment — arXiv (öppen åtkomst; licens per artikel)