Gerenciando dados com LightningDataModule

Modelos de IA escaláveis com PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Preparação de dados para treinar o modelo

  • Dados mal preparados causam problemas no treino
    • Treino lento
    • Interrupções frequentes
    • Falha de convergência

Preparação de dados para treino.png

Modelos de IA escaláveis com PyTorch Lightning

Por que usar LightningDataModule?

$$

  • 📂 Centraliza o gerenciamento dos dados

$$

  • 📊 Padroniza o preparo dos dados

$$

  • 🚀 Simplifica treino e avaliação
Modelos de IA escaláveis com PyTorch Lightning

Gerenciando dados com LightningDataModule

Métodos principais:

  • prepare_data: Baixa e configura os dados
  • setup: Divide em treino, validação e teste
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)
Modelos de IA escaláveis com PyTorch Lightning

Criando o DataLoader de treino

$$

  • Fornece lotes de dados de treino
  • Ajuda a otimizar o uso da GPU
  • Permite iterar bem em datasets grandes
def train_dataloader(self):
    return DataLoader(self.train_data, batch_size=self.batch_size, shuffle=True)
Modelos de IA escaláveis com PyTorch Lightning

Criando o DataLoader de validação

$$

  • Fornece dados para validação do modelo
  • Ajuda a monitorar a generalização
  • Garante consistência nas execuções com embaralhamento
def val_dataloader(self):
    return DataLoader(self.val_data, batch_size=self.batch_size)
Modelos de IA escaláveis com PyTorch Lightning

Criando o DataLoader de teste

$$

  • Fornece dados para avaliação final após o treino
  • Simula avaliação de desempenho no mundo real
  • Garante medição imparcial do desempenho
def test_dataloader(self):
    return DataLoader(self.test_data, batch_size=self.batch_size)
Modelos de IA escaláveis com PyTorch Lightning

Conectando DataModule ao LightningModule

  • Design modular separa dados da lógica do modelo

Diagrama do PyTorch Lightning

Modelos de IA escaláveis com PyTorch Lightning

Conectando DataModule ao LightningModule

  • Design modular separa dados da lógica do modelo
  • LightningDataModule trabalha com LightningModule
  • Fluxo padronizado melhora a reprodutibilidade

Diagrama do PyTorch Lightning com DataModule e LightningModule

Modelos de IA escaláveis com PyTorch Lightning

Vamos praticar!

Modelos de IA escaláveis com PyTorch Lightning

Preparing Video For Download...