Hvad betyder Batch size?
Batchstørrelse er antallet af eksempler, som en træningsberegning bruger sammen til at danne en opdatering. En mini-batch er et udsnit af det samlede datasæt. Træningsforløbet arbejder gennem flere sådanne udsnit og gentager ofte processen over flere epochs.
Størrelsen påvirker, hvor meget hukommelse der kræves, og hvordan beregningen udnytter hardwaren. Den påvirker også variationen i de gradienter, som opdateringerne bygger på. Der findes derfor ikke én størrelse, som er optimal for alle modeller og opgaver.
Batchstørrelse ved træning skal skelnes fra batch inference, hvor mange færdige modelopgaver behandles samlet eller asynkront. Begge handler om at gruppere arbejde, men kun træningsvarianten beskriver, hvordan modelparametre tilpasses.
Kapacitet og læring skal afvejes sammen
En større batch kan udnytte visse beregningsressourcer effektivt, men kræver typisk mere hukommelse. En mindre batch kan give hyppigere opdateringer for samme antal sete eksempler. Effekten på træningstid og kvalitet afhænger af den konkrete opsætning.
Mål derfor både ressourceforbrug og valideringsresultat. Hvis batchstørrelsen ændres, kan det også være nødvendigt at genoverveje learning rate og andre træningsindstillinger.
Sammenlign et ensartet træningsbudget
Et fast antal opdateringer betyder ikke samme antal sete eksempler ved forskellige batchstørrelser. Et fast antal epochs betyder heller ikke nødvendigvis samme køretid. Beskriv derfor, hvad der holdes ens i sammenligningen.
Gradient accumulation kan i nogle opsætninger samle bidrag fra flere mindre beregninger før en opdatering. Det kan hjælpe med hukommelsesbegrænsninger, men indstillingerne skal dokumenteres, så den effektive batchstørrelse er forståelig.
Et eksempel fra praksis
Forestil jer et team, der træner en billedklassifikator på en begrænset GPU. En stor batch giver hukommelsesfejl, mens en mindre kan køre. Teamet justerer opsætningen og registrerer både fysisk og eventuel effektiv batchstørrelse.
De sammenligner derefter modeller ved et tydeligt defineret budget og på samme valideringsmateriale. Målet er en stabil træning med tilstrækkelig kvalitet. En konfiguration, der maksimerer GPU-udnyttelsen, er ikke automatisk den mest nyttige, hvis den kræver længere udvikling eller giver dårligere resultater.
Typiske faldgruber
- Antal opdateringer kan blive sammenlignet uden at medregne, hvor mange eksempler hver opdatering bruger.
- En ændret batchstørrelse kan påvirke andre indstillingers virkning.
- Effektiv batchstørrelse kan blive uklar, hvis gradient accumulation ikke er dokumenteret.
Det skal I afklare
- Hvilken batchstørrelse kan hardwaren håndtere stabilt?
- Hvad holdes konstant, når træningsforsøg sammenlignes?
- Er effekten på valideringskvalitet vurderet sammen med tid og hukommelse?
Spørgsmål og svar
Er større batches altid hurtigere?
Ikke nødvendigvis. Det afhænger af hardware, model og dataflow. Selv hvis gennemløbet stiger, kan den samlede tid til et bestemt kvalitetsniveau udvikle sig anderledes.
Er en batch det samme som en epoch?
Nej. En batch er en gruppe eksempler til en beregning. En epoch betegner typisk én gennemgang af hele træningsdatasættet.
Kilder og videre læsning
De tekniske begreber bygger på nedenstående kilder. Eksemplerne er illustrative og viser, hvordan I kan arbejde med emnet.
- Google: Hyperparameters ↗Batchstørrelse og sammenhængen med træningsopdateringer.
- Google: Gradient descent ↗Gradientbaseret optimering og træningsforløb.

