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.
- Træningsdata
- →Modeltræning
- →Batchstørrelse
Relationer
- En slags
- Hyperparameter
- Del af
- Modeltræning
- Forudsætter
- Modeltræning
- Bruges sammen med
- LæringsrateGradientnedstigning (gradient descent)
Kilder og videre læsning
Opslagsværker
Lærebøger
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…