AI-training versus inferentie: rekenwerk, geheugen, formaten en hardware

Training is het proces waarbij de gewichten van een model worden bepaald door heel vaak te herhalen: data door de forward pass sturen om het verlies te berekenen, met de backward pass de gradiënten bepalen en met een optimizer de gewichten bijwerken. Inferentie is het proces waarbij met vaste gewichten alleen de forward pass wordt uitgevoerd om een antwoord op nieuwe invoer te geven. Bij training worden naast de gewichten ook gradiënten, de optimizertoestand en activaties voor de backward pass bewaard, zodat veel meer geheugen en rekenwerk nodig is dan bij inferentie met hetzelfde model. Eén inferentieberekening is klein, maar wordt bij elk gebruik uitgevoerd, en de reactiesnelheid is daarbij belangrijk.

KenmerkTrainingInferentie
DoelDe gewichten van het model uit data bepalenMet vaste gewichten een antwoord geven op nieuwe invoer
Soort berekeningHerhaling van forward pass → verliesberekening → gradiënten via de backward pass → gewichten bijwerken met de optimizerAlleen de forward pass
Indicatie van het rekenvolumePer invoer ongeveer 3 keer de forward pass (de backward pass kost ongeveer 2 keer de forward pass). Bij transformers in totaal ongeveer 6 × aantal parameters × aantal tokensVoor een model met N parameters ongeveer 2N per token
Benodigd geheugenGewichten, gradiënten, optimizertoestand (twee bij Adam) en activaties voor de backward pass. Alles in FP32 betekent 16 bytes per parameter, plus de activatiesGewichten en activaties tijdens de berekening (bij grote taalmodellen ook de KV-cache). In FP16 2 bytes per parameter
GetalformatenGemengde precisie met BF16 of FP16 (masterweights in FP32)FP16 of BF16, of gekwantiseerde formaten zoals INT8 of INT4
BatchgrootteGrote batches om de bezetting van de rekeneenheden te verhogenKlein als een snel antwoord nodig is (soms 1). Servers bundelen meerdere verzoeken om de efficiëntie te verhogen
Belangrijkste prestatiemaatDoorvoer (tijd tot de training klaar is, bezetting van de rekeneenheden)Een evenwicht tussen latentie (reactietijd op één verzoek) en doorvoer, en kosten per verwerking
HardwareGrote aantallen GPU's of accelerators met veel HBM en hoge rekenkracht, verbonden via een snel netwerkBreed: van datacenter-GPU's en accelerators voor inferentie tot NPU's in smartphones en microcontrollers
ParallellisatieDataparallellisme, tensorparallellisme en pipelineparallellisme. Gradiënten worden met all-reduce verzameldMeerdere verzoeken parallel verwerken. Grote modellen worden met onder meer tensorparallellisme over meerdere chips verdeeld
EnergieEén trainingsrun laat veel chips lange tijd draaien en verbruikt veel elektriciteitPer keer klein, maar wordt bij elk gebruik uitgevoerd; bij intensief gebruik wordt het totaal groot

De getalswaarden zijn typische ordegroottes en variëren per procesgeneratie en product.

Wanneer welke variant?

Training
Bij het maken van een nieuw model, of bij het verder trainen van een bestaand model op eigen data (finetuning).
Inferentie
Bij het gebruik van een getraind model in een dienst of product. Beeldherkenning, tekstgeneratie, spraakherkenning en dergelijke.
Optimalisaties
Bij inferentie worden modellen lichter gemaakt met kwantisatie, pruning en knowledge distillation. Bij training besparen gemengde precisie en gradient checkpointing geheugen en rekenwerk.

Veelgestelde vragen

Waarom gebruikt training veel meer geheugen dan inferentie?

Omdat training naast de gewichten evenveel gradiënten en de optimizertoestand (twee bij Adam) bijhoudt, en daarbovenop de tussentijdse activaties van de forward pass bewaart voor de backward pass. Bij een model met 7 miljard parameters bijvoorbeeld komt dit, allemaal in FP32 en zonder activaties, uit op ongeveer 112 GB, terwijl inferentie met alleen FP16-gewichten met ongeveer 14 GB toekan.

Wat gebeurt er als je bij inferentie de batchgrootte vergroot?

Eenmaal ingelezen gewichten kunnen voor de berekening van meerdere invoeren worden gebruikt, zodat de rekeneenheden beter worden benut en de totale doorvoer stijgt. Anderzijds nemen de wachttijd tot alle invoer binnen is en de verwerkingstijd per keer toe, zodat het antwoord op één verzoek (latentie) trager wordt en er ook meer geheugen wordt gebruikt.

Kan dezelfde hardware voor training en inferentie worden gebruikt?

Ja. GPU's worden zowel voor training als voor inferentie gebruikt. Voor alleen inferentie zijn de backward pass en een groot geheugen echter niet nodig, dus wordt ook hardware gebruikt die op energie-efficiëntie is gericht, zoals inferentieaccelerators met veel rekeneenheden voor lage precisie zoals INT8 en de NPU's in smartphones.

Hoeveel rekenwerk vraagt training?

Voor transformermodellen wordt vaak de benadering gebruikt dat het totale aantal bewerkingen ongeveer 6ND is, met N het aantal parameters en D het aantal trainingstokens. Dat komt doordat de forward pass ongeveer 2N per token kost en de backward pass ongeveer het dubbele daarvan.

Test uw begrip

Welke uitspraak over het verschil tussen "training" en "inferentie" van een neuraal netwerk is juist?

  1. ABij training worden voorwaartse propagatie, terugwaartse propagatie en gewichtsupdate herhaald om de gewichten te bepalen; bij inferentie wordt met vaste gewichten alleen voorwaarts gepropageerd om het antwoord te geven
  2. BZowel bij training als bij inferentie wordt alleen voorwaarts gepropageerd
  3. CBij inferentie worden gewichten bijgewerkt en bij training worden geen gewichten gebruikt
Antwoord en toelichting tonen

Antwoord: A. Bij training worden voorwaartse propagatie, terugwaartse propagatie en gewichtsupdate herhaald om de gewichten te bepalen; bij inferentie wordt met vaste gewichten alleen voorwaarts gepropageerd om het antwoord te geven

Bij training worden de ingangen in volgorde doorgerekend tot de uitgang (voorwaartse propagatie), wordt de fout ten opzichte van het juiste antwoord van de uitgang naar de ingang teruggevoerd om de gradiënt van elk gewicht te bepalen (backpropagation) en worden de gewichten volgens de gradiënt stapsgewijs aangepast; dit wordt met grote hoeveelheden data herhaald. Bij inferentie wordt met de tijdens de training bepaalde gewichten alleen voorwaarts gepropageerd. Backpropagation vergt ongeveer tweemaal zoveel rekenwerk als voorwaartse propagatie en vereist ook het opslaan van tussenresultaten, zodat training veel zwaarder is dan inferentie.

Welke van de volgende is GEEN reden waarom het geheugen voor training veel groter is dan voor inferentie met hetzelfde model?

  1. AOmdat het aantal gewichten bij training een veelvoud is van dat bij inferentie
  2. BOmdat tussenresultaten (activaties) van de voorwaartse propagatie moeten worden opgeslagen voor gebruik bij backpropagation
  3. COmdat evenveel gradiënten als gewichten en de toestand van de optimizer moeten worden bijgehouden
Antwoord en toelichting tonen

Antwoord: A. Omdat het aantal gewichten bij training een veelvoud is van dat bij inferentie

Het aantal gewichten van het model is bij training en inferentie gelijk. Bij training moeten echter voor de gradiëntberekening bij backpropagation de tussenresultaten van de voorwaartse propagatie per laag worden opgeslagen, en zijn evenveel gradiënten als gewichten nodig, plus waarden per gewicht van de optimizer, zoals Adam (twee voortschrijdende gemiddelden). Het trainingsgeheugen is daardoor een veelvoud van dat voor inferentie, waar alleen gewichten volstaan, en voor het trainen van grote modellen zijn veel GPU's nodig.

Een model met 7 miljard (7B) parameters wordt getraind waarbij gewichten, gradiënten en de twee toestanden van Adam allemaal in FP32 (4 bytes) worden bijgehouden. Welke waarde benadert het benodigde geheugen, exclusief activaties, het best?

  1. ACirca 28 GB
  2. BCirca 112 GB
  3. CCirca 14 GB
Antwoord en toelichting tonen

Antwoord: B. Circa 112 GB

Per parameter is dat 4 bytes voor het gewicht, 4 bytes voor de gradiënt en 4 bytes elk voor het eerste en tweede voortschrijdend gemiddelde van Adam, samen 16 bytes. 7 miljard × 16 bytes = 112 miljard bytes, circa 112 GB, waarbij nog het geheugen voor activaties komt. Omdat dit vaak niet in het geheugen van één GPU past, worden maatregelen gebruikt zoals het verdelen van de optimizertoestand over meerdere GPU's en het bijhouden met lagere precisie.

  1. Waarom neemt de efficiëntie van de totale verwerking bij inferentie gemakkelijk toe als de batchgrootte (het aantal gezamenlijk verwerkte ingangen) wordt vergroot?
  2. Welke uitspraak over het nadeel van een te grote batchgrootte bij inferentie is juist?
  3. Wat is een veelgebruikte benadering voor het aantal bewerkingen dat nodig is om een Transformer-model te trainen, bij N parameters en D trainingstokens?

Oefenvragen over AI-hardware en softwarestack

Belangrijke termen uitgelegd

Inferentie (inference)
AI-verwerking waarbij met de tijdens training bepaalde gewichten alleen forward propagation wordt uitgevoerd om uit de invoer een antwoord te geven. Vraagt minder rekenwerk en geheugen dan training.
Backpropagatie
Berekening bij het trainen van neurale netwerken waarbij de fout tussen uitvoer en juist antwoord van de uitgang naar de ingang wordt teruggevoerd om de gradiënt van elk gewicht te bepalen.
Batchgrootte
Aantal ingangen dat gezamenlijk wordt verwerkt. Een grotere batch maakt hergebruik van gewichten en dus hogere efficiëntie mogelijk, maar vergroot de vertraging van de respons en het geheugengebruik.
Gemengde precisie (mixed precision)
Het gebruik van getallen met verschillende precisie voor verschillende delen van een berekening. Vermenigvuldigen gebeurt in bijvoorbeeld FP16 en accumuleren in FP32, zodat snelheid en nauwkeurigheid samengaan.
Gradient checkpointing
Methode waarbij van de tussenresultaten van de voorwaartse doorgang slechts een deel wordt bewaard en de rest bij backpropagation opnieuw wordt berekend wanneer die nodig is, zodat geheugen wordt bespaard ten koste van meer rekenwerk.

Verwante vergelijkingen