Batchowanie, tasowanie i num_workers
Skonfigurować DataLoader pod kątem szybkości
Batchowanie, tasowanie i num_workers to bezpłatna lekcja Deep Learning Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Deep Learning Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Poznaj DataLoader
Zbiór danych przekazuje próbki pojedynczo, ale trening wymaga ich grup. DataLoader opakowuje zbiór danych i udostępnia go w wygodnych partiach. 📦
from torch.utils.data import DataLoader
loader = DataLoader(ds)Partie oszczędzają czas
Ustaw batch_size, a loader połączy wskazaną liczbę próbek w jeden tensor. Większe partie lepiej wykorzystują sprzęt i wygładzają aktualizacje obarczone szumem.
loader = DataLoader(ds, batch_size=32)Jedna połączona partia
Każda partia dodaje nowy pierwszy wymiar. Trzydzieści dwa przykłady o kształcie 784 tworzą jeden tensor o kształcie 32 na 784, gotowy do przekazania modelowi.
Iteruj po partiach
Po loaderze można iterować tak jak po dowolnej sekwencji w Pythonie. Przy każdym obrocie pętli otrzymujesz jedną partię danych wejściowych i etykiet do kroku treningowego.
for xb, yb in loader:
pred = model(xb)Mieszaj dane w każdej epoce
Ustawienie shuffle na True zmienia kolejność próbek w każdej epoce. Eliminuje to przypadkowe uporządkowanie, dzięki czemu model nie może zapamiętać kolejności danych.
loader = DataLoader(ds, batch_size=32, shuffle=True)Mieszaj dane treningowe, nie testowe
Włącz mieszanie dla zbioru treningowego, ale wyłącz je dla walidacji i testu. Ewaluacja służy tylko do pomiaru jakości, więc stała kolejność jest tam wystarczająca.
num_workers wczytuje dane równolegle
Odczytywanie i dekodowanie danych może blokować GPU. Ustawienie num_workers na wartość większą od zera uruchamia procesy pomocnicze, które przygotowują następną partię podczas trenowania modelu.
loader = DataLoader(ds, batch_size=32, num_workers=4)Wybierz rozsądną liczbę procesów
Dobrym punktem wyjścia dla num_workers jest liczba dostępnych rdzeni procesora. Zbyt duża liczba może przeciążyć pamięć, dlatego zamiast zgadywać, wykonaj pomiary.
pin_memory przyspiesza kopiowanie do GPU
Podczas trenowania na GPU ustaw pin_memory na True. Partie zostaną umieszczone w pamięci zablokowanej, dzięki czemu transfery do urządzenia będą zauważalnie szybsze.
loader = DataLoader(ds, batch_size=32, pin_memory=True)Obsłuż ostatnią partię
Ostatnia partia często jest mniejsza od pozostałych. Ustaw drop_last na True, aby ją odrzucić, gdy model wymaga identycznego rozmiaru każdej partii.
loader = DataLoader(ds, batch_size=32, drop_last=True)Jeden loader na każdy podzbiór
W praktyce tworzysz osobny loader dla danych treningowych, walidacyjnych i testowych. Każdy otrzymuje własne ustawienia, na przykład mieszanie włączone tylko dla treningu.
Szybkie sprawdzenie
Co właściwie robi ustawienie num_workers na wartość większą od zera?
Podsumowanie
DataLoader dzieli zbiór danych na partie, miesza dane treningowe i używa num_workers do równoległego wczytywania partii. Dzięki temu model ma stale dostarczane dane i działa szybciej. 🎉
Ucz się Python dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 30
- Lekcje
- 120
Często zadawane pytania
Czy lekcja „Batchowanie, tasowanie i num_workers” jest bezpłatna?
Tak — pełny tekst „Batchowanie, tasowanie i num_workers” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Deep Learning Academy, przejdź na CoddyKit PRO. Kurs Deep Learning Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Batchowanie, tasowanie i num_workers”?
Skonfigurować DataLoader pod kątem szybkości Ćwiczysz Deep Learning Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Deep Learning Academy?
Nie wymagamy żadnego doświadczenia. Deep Learning Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Batchowanie, tasowanie i num_workers”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Deep Learning Academy?
Tak. Każda lekcja Deep Learning Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Napisać własną klasę Dataset
- Batchowanie, tasowanie i num_workers
- collate_fn dla danych o zmiennej długości
- Normalizowanie i standaryzowanie danych wejściowych