Gestire i dati con LightningDataModule

Modelli di AI scalabili con PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Preparare i dati per l’addestramento del modello

  • Dati preparati male causano problemi in training
    • Training lento
    • Interruzioni frequenti
    • Mancata convergenza

Preparazione dei dati per l’addestramento.png

Modelli di AI scalabili con PyTorch Lightning

Perché usare LightningDataModule?

$$

  • 📂 Centralizza la gestione dei dataset

$$

  • 📊 Standardizza i workflow di preparazione dati

$$

  • 🚀 Semplifica training e valutazione
Modelli di AI scalabili con PyTorch Lightning

Gestire i dati con LightningDataModule

Metodi chiave:

  • prepare_data: scarica e configura i dati
  • setup: divide in train, validation e test
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)
Modelli di AI scalabili con PyTorch Lightning

Creare il DataLoader di training

$$

  • Fornisce batch di dati di training
  • Aiuta a ottimizzare l’uso della GPU
  • Consente iterazioni efficienti su dataset grandi
def train_dataloader(self):
    return DataLoader(self.train_data, batch_size=self.batch_size, shuffle=True)
Modelli di AI scalabili con PyTorch Lightning

Creare il DataLoader di validazione

$$

  • Fornisce i dati per la validazione del modello
  • Aiuta a monitorare la generalizzazione
  • Garantisce coerenza tra esecuzioni con lo shuffling
def val_dataloader(self):
    return DataLoader(self.val_data, batch_size=self.batch_size)
Modelli di AI scalabili con PyTorch Lightning

Creare il DataLoader di test

$$

  • Fornisce i dati per la valutazione finale dopo l’addestramento
  • Simula la valutazione in condizioni reali
  • Garantisce misure imparziali delle prestazioni
def test_dataloader(self):
    return DataLoader(self.test_data, batch_size=self.batch_size)
Modelli di AI scalabili con PyTorch Lightning

Collegare DataModule a LightningModule

  • Un design modulare separa logica dei dati e del modello

Diagramma PyTorch Lightning

Modelli di AI scalabili con PyTorch Lightning

Collegare DataModule a LightningModule

  • Design modulare separa logica dati e modello
  • LightningDataModule si abbina a LightningModule
  • Workflow standardizzato migliora la riproducibilità

Diagramma PyTorch Lightning con DataModule e LightningModule

Modelli di AI scalabili con PyTorch Lightning

Ayo berlatih!

Modelli di AI scalabili con PyTorch Lightning

Preparing Video For Download...