Gå til indhold
atlas

Batchstørrelse

Også kendt som: batch size

Hvor mange eksempler en model ser på samlet, før den opdaterer sig selv én gang under modeltræning.

Kladde - dette opslag er endnu ikke gennemgået.

Formelt

Antallet af eksempler fra træningsdata, der samles i én batch; tabet beregnes som gennemsnit over batchen, og gradientnedstigning laver én opdatering pr. batch, så værdien styrer både hukommelsesforbrug og hvor ujævnt hvert skridt er.

Forklaret enkelt

Som en lærer, der retter lektier - at rette efter hvert eneste ark er langsomt og hoppende, at vente på hele klassen er roligt, men kræver et stort bord.

I praksis

En dataanalytiker på et vandværk træner en model, der skal finde lækager, på flere års målerdata; kørslen stopper med en fejl om for lidt hukommelse på vandværkets eneste GPU, så hun halverer batchstørrelsen og sænker skridtstørrelsen tilsvarende.

Hvorfor det betyder noget

Den afgør, hvor meget hardware en kørsel kræver, og hvor hurtig og stabil læringen er, hvilket styrer både pris og endelig kvalitet.

Teknisk uddybning

Batchstørrelsen B spænder fra gradientnedstigning på hele datasættet (B = N) over mini-batch-træning til ren stokastisk gradientnedstigning (B = 1). Mini-batch-gradienten er et middelret estimat af den fulde gradient, hvis varians falder omtrent proportionalt med 1/B, og én epoke rummer ⌈N/B⌉ optimeringsskridt. Billedmodeller bruger typisk fra titals til nogle tusinde billeder pr. batch; store sprogmodeller måler batches i tokens, og GPT-3's største model blev trænet med batches på cirka 3,2 millioner tokens. Ved distribueret træning er det den globale (effektive) batch, der tæller: mikrobatch pr. enhed × antal skridt med gradientakkumulering × antal dataparallelle replikaer.

Batchstørrelse og læringsrate hænger sammen. Goyal m.fl. (2017) foreslog den lineære skaleringsregel - gang læringsraten med k, når batchen vokser med faktor k, med en opvarmningsfase i starten - og brugte den til at træne ResNet-50 på ImageNet med en batch på 8.192 på én time. Reglen holder ikke over en kritisk batchstørrelse, som McCandlish m.fl. (2018) koblede til gradientens støjskala: under den halverer en fordobling af B omtrent antallet af nødvendige skridt; over den tilføjer ekstra eksempler pr. skridt mest beregning uden at spare skridt. Den kritiske batchstørrelse har en tendens til at vokse, efterhånden som tabet falder, hvilket er én grund til, at store træningskørsler øger batchstørrelsen undervejs.

Effekten på generalisering er omdiskuteret. Keskar m.fl. (2017) rapporterede, at store batches har tendens til at konvergere mod skarpe minima med en generaliseringskløft, mens Hoffer m.fl. (2017) viste, at meget af kløften lukkes, når antallet af opdateringer og læringsrateplanen justeres, og Smith m.fl. (2018) viste, at en voksende batchstørrelse kan erstatte en faldende læringsrate. Den praktiske lære er, at batchstørrelsen ikke kan ændres isoleret; læringsrate, opvarmning og plan skal tunes igen samlet.

Hukommelse er som regel den bindende begrænsning, fordi de gemte aktiveringer vokser lineært med B (og med sekvenslængden). Standardløsningen på fejl om for lidt hukommelse er at mindske mikrobatchen og tilføje gradientakkumulering, hvor gradienter summeres over flere forlæns-baglæns gennemløb før ét optimeringsskridt, så den effektive batch og dermed optimeringsdynamikken bevares. Undtagelsen er batchnormalisering, hvis statistik beregnes pr. mikrobatch og forringes ved meget små batches; gruppe- eller lagnormalisering undgår den afhængighed. Batchstørrelser, der er multipla af 8, hjælper udnyttelsen af tensor-kerner på NVIDIA-GPU'er, mens forkærligheden for potenser af to mest er folklore. Batching ved inferens er en separat sag, hvor latenstid byttes for gennemløb i model serving.

Hvad du bør lære først

Alt det, dette bygger på - grundlaget først.

  1. Træningsdata
  2. →Modeltræning
  3. →Batchstørrelse

Relationer

Forudsætter
Modeltræning

Kilder og videre læsning

Hvor dataene kommer fra

Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.

Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON

Test dig selv

Indlæser…

Atlas er i beta.