Batchning, blandning och num_workers
Konfigurera en DataLoader för högre hastighet
Batchning, blandning och num_workers är en gratis lektion i Deep Learning Academy på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Deep Learning Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Deep Learning Academy innehåller totalt 4 lektioner.
Möt DataLoader
Ett dataset lämnar över ett exempel i taget, men träningen behöver grupper. DataLoader omsluter ditt dataset och levererar det i praktiska batcher. 📦
from torch.utils.data import DataLoader
loader = DataLoader(ds)Batchning sparar tid
Ange batch_size så staplar laddaren så många exempel i en tensor. Större batcher utnyttjar maskinvaran bättre och jämnar ut brusiga uppdateringar.
loader = DataLoader(ds, batch_size=32)En batch, staplad tillsammans
Varje batch lägger till en ny första dimension. Trettiotvå exempel med formen 784 blir en enda tensor med formen 32 gånger 784, redo för modellen.
Iterera över batcher
Du itererar över laddaren som över vilken Python-sekvens som helst. Varje varv i loopen ger en batch med indata och etiketter för ditt träningssteg.
for xb, yb in loader:
pred = model(xb)Blanda vid varje epok
Om du sätter shuffle till True ordnas exemplen om vid varje epok. Det bryter oavsiktliga ordningsmönster så att modellen inte kan memorera ordningen på dina data.
loader = DataLoader(ds, batch_size=32, shuffle=True)Blanda träningen, inte testet
Aktivera blandning för träningsmängden men inte för validering och test. Utvärderingen mäter bara prestandan, så en stabil ordning fungerar bra där.
num_workers läser in data parallellt
Att läsa och avkoda data kan få GPU:n att stå och vänta. Om du sätter num_workers till mer än noll startas hjälpprocesser som förbereder nästa batch medan modellen tränar.
loader = DataLoader(ds, batch_size=32, num_workers=4)Välj ett rimligt antal arbetare
En vanlig startpunkt för num_workers är antalet CPU-kärnor du har. För många kan orsaka minnesproblem, så mät i stället för att gissa blint.
pin_memory snabbar upp GPU-kopior
Ställ in pin_memory på True när du tränar på en GPU. Då placeras batcherna i sidlåst minne, så överföringarna till enheten går märkbart snabbare.
loader = DataLoader(ds, batch_size=32, pin_memory=True)Hantera den sista batchen
Den sista batchen är ofta mindre än de övriga. Använd drop_last True för att kasta bort den när modellen kräver att alla batcher har samma storlek.
loader = DataLoader(ds, batch_size=32, drop_last=True)En laddare per delmängd
I praktiken skapar du en separat loader för träning, validering och test. Var och en får sina egna inställningar, till exempel att blandning endast är aktiverad för träningen.
Snabb kontroll
Vad gör det egentligen att sätta num_workers till mer än noll?
Sammanfattning
En DataLoader delar upp ditt dataset i batcher, blandar träningsdata och använder num_workers för att läsa in batcher parallellt. Den håller modellen försörjd med data och snabb. 🎉
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Batchning, blandning och num_workers” gratis?
Ja – hela texten till ”Batchning, blandning och num_workers” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Deep Learning Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Deep Learning Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Batchning, blandning och num_workers”?
Konfigurera en DataLoader för högre hastighet Ni övar på Deep Learning Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Deep Learning Academy?
Du behöver inga förkunskaper. Utbildningen i Deep Learning Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Batchning, blandning och num_workers”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Deep Learning Academy-lektionen?
Ja. Varje Deep Learning Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skriv en anpassad Dataset-klass
- Batchning, blandning och num_workers
- collate_fn för indata med varierande längd
- Normalisera och standardisera indata