Batching, shuffle e num_workers
Configuri un DataLoader per ottenere maggiore velocità
Batching, shuffle e num_workers è una lezione Deep Learning Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Deep Learning Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Deep Learning Academy include 4 lezioni in totale.
Presentiamo il DataLoader
Un dataset fornisce un campione alla volta, ma l'addestramento richiede gruppi di campioni. Il DataLoader avvolge il dataset e lo fornisce in batch pratici. 📦
from torch.utils.data import DataLoader
loader = DataLoader(ds)I batch fanno risparmiare tempo
Imposti batch_size e il loader raggruppa quel numero di campioni in un unico tensore. I batch più grandi sfruttano meglio l'hardware e rendono più uniformi gli aggiornamenti rumorosi.
loader = DataLoader(ds, batch_size=32)Un batch, tutto insieme
Ogni batch aggiunge una nuova dimensione iniziale. Trentadue campioni di forma 784 diventano un singolo tensore di forma 32 per 784, pronto per il modello.
Iterare sui batch
Iteri sul loader come su qualsiasi sequenza Python. A ogni passaggio del ciclo ottiene un batch di input ed etichette per il passaggio di addestramento.
for xb, yb in loader:
pred = model(xb)Mescolare a ogni epoca
Impostare shuffle su True riordina i campioni a ogni epoca. In questo modo si elimina l'ordine accidentale e il modello non può memorizzare la sequenza dei dati.
loader = DataLoader(ds, batch_size=32, shuffle=True)Mescolare l'addestramento, non il test
Attivi il mescolamento per il set di training, ma lo disattivi per validazione e test. La valutazione misura solo le prestazioni, quindi in quei casi un ordine stabile va bene.
num_workers carica in parallelo
La lettura e la decodifica dei dati possono rallentare la GPU. Impostare num_workers su un valore maggiore di zero avvia processi ausiliari che preparano il batch successivo mentre il modello si addestra.
loader = DataLoader(ds, batch_size=32, num_workers=4)Scegliere un numero ragionevole di worker
Un buon punto di partenza per num_workers è il numero di core CPU disponibili. Un numero eccessivo può sovraccaricare la memoria, quindi misuri invece di procedere alla cieca.
pin_memory accelera le copie verso la GPU
Quando si addestra su una GPU, imposti pin_memory su True. In questo modo i batch vengono collocati in memoria bloccata, rendendo sensibilmente più veloci i trasferimenti verso il dispositivo.
loader = DataLoader(ds, batch_size=32, pin_memory=True)Gestire l'ultimo batch
L'ultimo batch è spesso più piccolo degli altri. Imposti drop_last su True per scartarlo quando il modello richiede batch tutti della stessa dimensione.
loader = DataLoader(ds, batch_size=32, drop_last=True)Un loader per ogni suddivisione
In pratica, crei un loader separato per training, validazione e test. Ognuno avrà le proprie impostazioni, ad esempio il mescolamento attivo solo per il training.
Controllo rapido
Che cosa fa concretamente impostare num_workers su un valore maggiore di zero?
Riepilogo
Un DataLoader raggruppa il dataset in batch, mescola i dati di training e usa num_workers per caricare i batch in parallelo. Mantiene il modello alimentato e veloce. 🎉
Impara Python con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 30
- Lezioni
- 120
Domande Frequenti
La lezione «Batching, shuffle e num_workers» è gratuita?
Sì — il testo completo di «Batching, shuffle e num_workers» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Deep Learning Academy, passa a CoddyKit PRO. Il corso Deep Learning Academy include 4 lezioni in totale.
Cosa imparerò in «Batching, shuffle e num_workers»?
Configuri un DataLoader per ottenere maggiore velocità Eserciti Deep Learning Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Deep Learning Academy?
Non è richiesta alcuna esperienza precedente. Deep Learning Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Batching, shuffle e num_workers»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Deep Learning Academy?
Sì. Ogni lezione Deep Learning Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Scriva una classe Dataset personalizzata
- Batching, shuffle e num_workers
- collate_fn per input di lunghezza variabile
- Normalizzare e standardizzare gli input