Hoppa till innehållet
AI-grafen
F· AI engineeringmodelltraning-finjustering· ca 90 min· volatil — kontrolleras ofta· verifierad 2026-09-20

Förträning i praktiken

Kunna beskriva datablandning, skalningslagar och beräkningsbudget för förträning av en liten språkmodell.

Förkunskaper

Intuition

Förträning är att lära en modell språk från grunden — nästa-token-förutsägelse på hundratals miljarder tokens. Det är en annan verksamhet än finjustering: månader av GPU-tid, ett datateam, och beslut som inte går att ångra i efterhand.

De tre besluten som avgör resultatet:

  1. Datablandningen. Inte «all text vi kan hitta» utan viktade andelar: webbtext, kod, böcker, vetenskap, flerspråkigt. Kod i blandningen förbättrar resonemang även för modeller som inte ska skriva kod.
  2. Beräkningsbudgeten och hur den fördelas mellan modellstorlek och datamängd.
  3. Datakvaliteten — deduplicering, filtrering, och att testdata hålls utanför.

Formellt

Skalningslagar. Kaplan m.fl. (2020) visade att testförlusten följer en potenslag i parametrar N, data D och beräkning C. Hoffmann m.fl. (2022, «Chinchilla») korrigerade fördelningen: för en given budget C≈6NDC \approx 6ND ska N och D skalas proportionellt — ungefär 20 tokens per parameter.

Det betyder att GPT-3 (175 B parametrar, 300 B tokens) var kraftigt undertränad; en 70 B-modell på 1,4 T tokens presterade bättre till samma beräkningskostnad.

I dag tränas modeller ofta långt bortom Chinchilla-optimum (Llama 3: 8 B parametrar på 15 T tokens ≈ 1 875 tokens/parameter). Skälet är inferensekonomi: en mindre modell som tränats längre kostar mindre per anrop i all framtid, och den kostnaden dominerar totalen för en modell som används mycket.

Databearbetning i storleksordning:

StegEffekt
Språkidentifiering och filtrering−50–70 % av rå webbdata
Deduplicering (exakt + fuzzy/MinHash)−20–30 %, förbättrar mätbart
Kvalitetsfiltrering (klassificerare, heuristik)−30–50 %
Borttagning av benchmark-överlapplitet i volym, avgörande för trovärdighet
PII-borttagningkrav, inte optimering

FineWeb och Dolma visar att filtreringen ofta gör större skillnad än arkitekturvalet.

Kod

def chinchilla(budget_flops):
    """C ≈ 6ND och D ≈ 20N → N = sqrt(C / 120)"""
    N = (budget_flops / 120) ** 0.5
    return {"parametrar_B": round(N / 1e9, 2), "tokens_B": round(20 * N / 1e9, 1)}

for timmar, gpus in ((1_000, 8), (10_000, 64)):
    flops = timmar * 3600 * gpus * 300e12 * 0.4        # H100 ~300 TFLOPs bf16, 40 % MFU
    print(timmar, gpus, chinchilla(flops))
# 1000 8   {'parametrar_B': 0.29, 'tokens_B': 5.9}
# 10000 64 {'parametrar_B': 2.63, 'tokens_B': 52.5}

# Exempel på datablandning (viktade andelar, inte råa storlekar)
BLANDNING = {"webb_filtrerad": 0.55, "kod": 0.15, "bocker": 0.12,
             "vetenskap": 0.08, "flersprakigt": 0.08, "samtal": 0.02}
assert abs(sum(BLANDNING.values()) - 1.0) < 1e-9

Räkneexemplet visar varför få tränar egna basmodeller: 10 000 GPU-timmar räcker till en 2,6 B-modell — betydligt sämre än öppna modeller du kan ladda ner gratis. Förträning lönar sig bara vid unik data eller unika krav.

Behärskning innebär

  • Beskriver datablandning och beräkningsbudget för förträning
  • Använder skalningslagar för att fördela budget
  • Vet vad som skiljer förträning från finjustering

Logga in för att göra övningarna och bygga upp din behärskning.

Källor

Alla källor och licenser