Управление данными с LightningDataModule

Масштабируемые модели ИИ с PyTorch Lightning

Sergiy Tkachuk

Director, GenAI Productivity

Подготовка данных для обучения модели

  • Плохо подготовленные данные вызывают проблемы при обучении
    • Низкая скорость обучения
    • Частые прерывания
    • Отсутствие сходимости

Подготовка данных для обучения.

Масштабируемые модели ИИ с PyTorch Lightning

Зачем использовать LightningDataModule?

$$

  • 📂 Централизует работу с наборами данных

$$

  • 📊 Стандартизирует процессы подготовки данных

$$

  • 🚀 Упрощает этапы обучения и оценки
Масштабируемые модели ИИ с PyTorch Lightning

Управление данными с LightningDataModule

Основные методы:

  • prepare_data: загрузка и подготовка данных
  • setup: разбивка данных на обучающую, валидационную и тестовую выборки
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)
Масштабируемые модели ИИ с PyTorch Lightning

Создание обучающего DataLoader

$$

  • Подаёт батчи обучающих данных
  • Оптимизирует использование GPU
  • Обеспечивает эффективный перебор больших наборов данных
def train_dataloader(self):
    return DataLoader(self.train_data, batch_size=self.batch_size, shuffle=True)
Масштабируемые модели ИИ с PyTorch Lightning

Создание валидационного DataLoader

$$

  • Подаёт данные для валидации модели
  • Позволяет отслеживать обобщающую способность
  • Обеспечивает согласованность оценки с помощью перемешивания
def val_dataloader(self):
    return DataLoader(self.val_data, batch_size=self.batch_size)
Масштабируемые модели ИИ с PyTorch Lightning

Создание тестового DataLoader

$$

  • Подаёт данные для финальной оценки модели после завершения обучения
  • Имитирует оценку производительности в реальных условиях
  • Обеспечивает объективное измерение качества
def test_dataloader(self):
    return DataLoader(self.test_data, batch_size=self.batch_size)
Масштабируемые модели ИИ с PyTorch Lightning

Связь DataModule с LightningModule

  • Модульная архитектура разделяет логику данных и модели

Диаграмма PyTorch Lightning

Масштабируемые модели ИИ с PyTorch Lightning

Связь DataModule с LightningModule

  • Модульная архитектура разделяет логику данных и модели
  • LightningDataModule работает в паре с LightningModule
  • Стандартизированный процесс повышает воспроизводимость

Диаграмма PyTorch Lightning с DataModule и LightningModule

Масштабируемые модели ИИ с PyTorch Lightning

Давайте потренируемся!

Масштабируемые модели ИИ с PyTorch Lightning

Preparing Video For Download...