Deep Learning Academy · Lekcja

Batchowanie, tasowanie i num_workers

Skonfigurować DataLoader pod kątem szybkości

Lekcja 2 z 413 kroki

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. 🎉

Bezpłatny start

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

  1. Napisać własną klasę Dataset
  2. Batchowanie, tasowanie i num_workers
  3. collate_fn dla danych o zmiennej długości
  4. Normalizowanie i standaryzowanie danych wejściowych
← Powrót do Deep Learning Academy