Descriere & Utilizare
Antrenarea unei rețele neuronale nu poate încărca un set de date de 50 GB direct în memoria RAM a calculatorului. PyTorch separă curat stocarea datelor de alimentarea modelului prin două clase fundamentale:
Dataset este containerul care știe să furnizeze un singur exemplu la un index dat. Trebuie să implementezi doar două metode Python: __len__(self) (returnează numărul total de mostre) și __getitem__(self, idx) (încarcă și prelucrează exemplul de la poziția idx).
DataLoader preia instanța de Dataset și se ocupă de toată complexitatea de producție: împarte datele în loturi (batch_size), le amestecă aleator la fiecare epocă (shuffle=True) și folosește procese secundare în paralel (num_workers > 0) pentru a citi de pe disc în timp ce GPU-ul calculează, eliminând gâturile de sticlă.
Cum să o reții ușor
💡 Dataset este meniul unui restaurant care descrie fiecare fel de mâncare în parte, iar DataLoader este chelnerul care aduce la masă platouri complete cu câte 32 de porții simultan, pregătite din timp de echipa din bucătărie (num_workers).
Opțiuni și parametri tehnici
batch_size: numărul de exemple procesate simultan într-un pas de antrenare (ex: 16, 32, 64).shuffle=True: amestecă ordinea datelor la începutul fiecărei epoci (obligatoriu pe setul de antrenare, dezactivat pe validare).num_workers: câte sub-procese CPU citesc datele în paralel (recomandat: 2–4).pin_memory=True: alocă memoria într-o zonă blocată non-paginabilă, permițând transferul ultra-rapid pe GPU prinnon_blocking=True.collate_fn: funcție personalizată pentru alinierea secvențelor de lungimi diferite (padding dinamic pe batch).
Exemple practice și cazuri de utilizare
- Iterarea prin DataLoader în buclă:
for batch_x, batch_y in loader: ... - Împărțirea automată train/test:
torch.utils.data.random_split(dataset, [0.8, 0.2]). - Padding dinamic la nivel de lot: pasează
collate_fn=DataCollatorWithPadding(...)din Hugging Face.
Sfaturi de configurare & capcane
Pe Windows sau în scripturi scurte de testare, lasă num_workers=0 pentru a evita erorile de multiprocessing; pe Linux/macOS în producție, setează num_workers=2 sau 4 pentru a nu ține GPU-ul în așteptare.
Comenzi și ghiduri înrudite
torch-training-loop: Resursă asociată din acest modul.torch-nn-module: Resursă asociată din acest modul.torch-device-gpu-mps: Resursă asociată din acest modul.