Zarządzanie danymi z LightningDataModule

Skalowalne modele AI z PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Przygotowanie danych do treningu modelu

  • Słabo przygotowane dane powodują problemy z treningiem
    • Wolne tempo treningu
    • Częste przerwy
    • Brak zbieżności

Przygotowanie danych do treningu.png

Skalowalne modele AI z PyTorch Lightning

Dlaczego używać LightningDataModule?

$$

  • 📂 Centralizuje obsługę zbiorów danych

$$

  • 📊 Standaryzuje przepływ przygotowania danych

$$

  • 🚀 Upraszcza fazy treningu i ewaluacji
Skalowalne modele AI z PyTorch Lightning

Zarządzanie danymi z LightningDataModule

Kluczowe metody:

  • prepare_data: pobranie i konfiguracja danych
  • setup: podział danych na zbiory treningowy, walidacyjny i testowy
class ImageDataModule(pl.LightningDataModule):
    def __init__(self, data_dir="./data", batch_size=32):
        super().__init__()
        ...

def prepare_data(self): datasets.MNIST(self.data_dir, train=True, download=True)
def setup(self, stage=None): dataset = datasets.MNIST(self.data_dir, train=True, transform=self.transform) self.train_data, self.val_data = random_split(dataset, [55000, 5000]) self.test_data = datasets.MNIST(self.data_dir, train=False, transform=self.transform)
Skalowalne modele AI z PyTorch Lightning

Tworzenie treningowego DataLoadera

$$

  • Dostarcza partie danych treningowych
  • Pomaga zoptymalizować wykorzystanie GPU
  • Umożliwia efektywne przetwarzanie dużych zbiorów danych
def train_dataloader(self):
    return DataLoader(self.train_data, batch_size=self.batch_size, shuffle=True)
Skalowalne modele AI z PyTorch Lightning

Tworzenie DataLoadera walidacyjnego

$$

  • Dostarcza dane do walidacji modelu
  • Pomaga monitorować wydajność generalizacji
  • Zapewnia spójność oceny dzięki tasowaniu
def val_dataloader(self):
    return DataLoader(self.val_data, batch_size=self.batch_size)
Skalowalne modele AI z PyTorch Lightning

Tworzenie testowego DataLoadera

$$

  • Dostarcza dane do końcowej oceny modelu po treningu
  • Symuluje ocenę wydajności w warunkach rzeczywistych
  • Zapewnia bezstronne pomiary wydajności
def test_dataloader(self):
    return DataLoader(self.test_data, batch_size=self.batch_size)
Skalowalne modele AI z PyTorch Lightning

Łączenie DataModule z LightningModule

  • Modułowa budowa rozdziela logikę danych i modelu

Diagram PyTorch Lightning

Skalowalne modele AI z PyTorch Lightning

Łączenie DataModule z LightningModule

  • Modułowa budowa rozdziela logikę danych i modelu
  • LightningDataModule współpracuje z LightningModule
  • Ustandaryzowany przepływ pracy zwiększa odtwarzalność

Diagram PyTorch Lightning z DataModule i LightningModule

Skalowalne modele AI z PyTorch Lightning

Czas na ćwiczenia!

Skalowalne modele AI z PyTorch Lightning

Preparing Video For Download...