# Minnesbehov vid inferens med transformermodell: så räknar du

*13 november 2026*

> Så räknar du ut hur mycket minne en transformermodell behöver vid inferens — vikter, aktiveringar och KV-cache — och hur precisionen påverkar resultatet.

# Minnesbehov vid inferens med transformermodell: så räknar du

När du kör en transformermodell i inferens — det vill säga genererar text eller gör förutsägelser med en redan tränad modell — behöver du tillräckligt med minne för modellens vikter, de aktiveringar som bildas under framåtpasset och KV-cachen som lagrar tidigare nyckel- och värdevektorer. Minnesbehovet vid inferens ser annorlunda ut än vid träning, och att räkna fel kan leda till att modellen inte får plats på det GPU-kort du har tillgängligt.

## Vad som tar plats i minnet vid inferens

Tre komponenter står för nästan hela minnesåtgången när en transformermodell körs i inferens:

1. **Modellvikter** — alla parametrar i modellen: attentionsmatriser, feedforward-lager, inbäddningar och utmatningslager.
2. **Aktiveringar** — de mellanliggande vektorer som skapas när en token passerar genom lagren. Dessa behövs bara under den aktuella framåtpassningen och kan frigöras därefter.
3. **KV-cache** — för varje genererad token lagras key- och värdevektorer för varje lager så att modellen slipper beräkna om dem för tidigare tokens vid varje nytt steg. Ju längre sekvens, desto större KV-cache.

Till skillnad från träning behöver du inte lagra gradienter eller optimatortillstånd vid inferens. Det gör att minnesbehovet är betydligt lägre, men det innebär inte att det är litet.

## Hur precisionen påverkar minnet

Precisionen bestämmer hur många byte varje parameter och varje aktivering tar i minnet:

- **FP32 (float32)** — 4 byte per parameter. En miljard parametrar kräver 4 GB.
- **FP16 / BF16 (half-precision)** — 2 byte per parameter. En miljard parametrar kräver 2 GB.
- **INT8** — 1 byte per parameter. En miljard parametrar kräver 1 GB.

Ju lägre precision, desto mindre minne. Men aggressiv kvantisering kan påverka modellens precision och kräver ofta kalibrering för att resultatet ska bli användbart.

## Beräkna modellvikternas minne

Modellvikternas storlek beräknas som:

`antal parametrar × byte per parameter`

För en transformermodell med 7 miljarder parametrar i FP16 blir det:

7 000 000 000 × 2 byte = 14 GB

I FP32 skulle samma modell kräva 28 GB, och i INT8 bara 7 GB. Detta är den största enskilda posten i minnesbudgeten vid inferens.

## Beräkna aktiveringarna

Aktiveringarna beror på batchstorlek, sekvenslängd, den dolda dimensionen (d_model) och antalet lager. De skapas på nytt för varje framåtpassning och kan frigöras när passet är klart. Vid inferens med batchstorlek 1 är aktiveringarna ofta mindre än modellvikterna, men de växer snabbt med längre sekvenser och större batchar.

En tumregel är att aktiveringarna för en enda sekvens kan uppgå till några hundra megabyte upp till en gigabyte beroende på modellstorlek och sekvenslängd.

## Beräkna KV-cachen

Vid autoregressiv generering skapar modellen en token i taget. För att slippa räkna om allt från början lagras key- och värdevektorer (KV) för alla tidigare tokens i en KV-cache. Cachen växer linjärt med sekvenslängden.

En ungefärlig formel per sekvens i batchen är:

`2 × sekvenslängd × antal lager × d_model × byte per parameter`

Med en sekvenslängd på 2048 tokens, 32 lager, d_model 4096 och FP16 blir KV-cachen:

2 × 2048 × 32 × 4096 × 2 byte ≈ 1 GB

Kortare kontextfönster ger därmed en märkbart mindre KV-cache.

## Räkneexempel: en 7B-modell i FP16

Här är ett konkret exempel för en 7 miljarder parametrar stor transformermodell i FP16:

- **Modellvikter**: 7 miljarder × 2 byte = 14 GB
- **Aktiveringar** (batch 1, sekvens 2048): ungefär 0,5–1 GB beroende på arkitektur
- **KV-cache** (sekvenslängd 2048): ungefär 1 GB

**Totalt: cirka 16–17 GB minne** behövs för att köra modellen i inferens med en sekvenslängd på 2048 tokens.

Om samma modell i stället körs i INT8 halveras vikternas minnesbehov till 7 GB, medan aktiveringar och KV-cache också kan hanteras med lägre precision.

## Så minskar du minnesbehovet

Om minnet är ett bottleneck finns flera sätt att pressa ned åtgången:

- **Kvantisering**: byt från FP16 till INT8 eller FP8 för att kraftigt minska minnet för modellvikterna.
- **Mindre batchstorlek**: om du kör flera sekvenser parallellt ökar aktiveringarna och KV-cachen per batch.
- **Kortare kontext**: en kortare sekvenslängd ger en mindre KV-cache.
- **Mindre modell**: en modell med färre parametrar och färre lager kräver mindre av allt.

## Vanliga frågor

**Behöver jag lika mycket minne vid inferens som vid träning?**

Nej. Vid träning lagras också gradienter och optimatortillstånd, vilket kan mångdubbla minnesbehovet jämfört med inferens.

**Påverkar sekvenslängden modellvikternas storlek?**

Nej, modellvikterna är fasta oavsett hur lång sekvens du matar in. Det som växer med sekvenslängden är aktiveringarna och framför allt KV-cachen.

**Är BF16 lika med FP16 när det gäller minne?**

Ja, både BF16 och FP16 använder 2 byte per parameter. Skillnaden ligger i hur talen representeras, inte i minnesåtgången.

---

Källor: Wikipedia om stora språkmodeller och transformerarkitektur (precision, minnesanvändning, KV-cache och kvantisering).
