Введение в PyTorch Lightning

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

Sergiy Tkachuk

Director, GenAI Productivity

PyTorch и PyTorch Lightning

$$

Стандартный PyTorch:

  • Значительные ручные усилия
  • Явная запись циклов обучения
  • Управление GPU/TPU, логирование и чекпоинтинг

coder.gif

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

PyTorch и PyTorch Lightning

PyTorch Lightning:

  • Надстройка над PyTorch
  • Автоматизирует:
    • Обучение
    • Чекпоинтинг
    • Логирование
  • Сокращает шаблонный код
  • Улучшает масштабируемость и воспроизводимость

Логотип PyTorch Lightning

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

Обзор PyTorch Lightning

  • Пример: оптимизация рабочих процессов в глобальной e-commerce
    • Разработка модели визуального поиска
    • Автоматизированные циклы обучения
    • Быстрая итерация с минимальным шаблонным кодом

$$

  • Ключевые компоненты: LightningModule и Trainer
    from lightning.pytorch import LightningModule
    from lightning.pytorch import Trainer
    
Масштабируемые модели ИИ с PyTorch Lightning

Структура Lightning

Ключевые компоненты:

  • LightningModule: основная логика модели

Лампочка, символизирующая логику

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

Структура Lightning

Ключевые компоненты:

  • LightningModule: основная логика модели
  • Lightning Trainer: управляет обучением

Лампочка, символизирующая логику, и шестерёнка, символизирующая операции

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

Структура Lightning

Ключевые компоненты:

  • LightningModule: основная логика модели
  • Lightning Trainer: управляет обучением
  • DataModule: организует конвейеры данных
  • Callbacks: автоматизирует события
  • Logger: отслеживает эксперименты

Лампочка, символизирующая логику, и шестерёнка, символизирующая операции

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

LightningModule в действии

Ключевые моменты:

  • __init__: задаёт архитектуру модели
  • forward(): передаёт данные через модель
  • training_step(): определяет процесс обучения
  • Доступны пользовательские хуки
import lightning.pytorch as pl

class LightClassifier(pl.LightningModule):
    def __init__(self, model, criterion, optimizer):

super().__init__() self.model = model self.criterion = criterion self.optimizer = optimizer
def forward(self, x): return self.model(x)
def training_step(self, batch, batch_idx): x, y = batch logits = self(x) loss = self.criterion(logits, y) return loss
Масштабируемые модели ИИ с PyTorch Lightning

Lightning Trainer в действии

Ключевые моменты:

  • Управляет циклом обучения
  • Поддерживает распределённое обучение
  • Обрабатывает callbacks и логирование
  • Оптимизирует использование ресурсов
model = LightClassifier()


trainer = Trainer(max_epochs=10, accelerator="gpu", devices=1) trainer.fit(model, train_dataloader, val_dataloader)
Масштабируемые модели ИИ с PyTorch Lightning

Знакомство с набором данных Afro-MNIST

Набор синтетических наборов данных в стиле MNIST для четырёх систем письма афразийских и нигеро-конголезских языков: Гээз (эфиопское письмо), Вай, Османья и Нко.

dataset-cover.png

1 Wu, Daniel J., Andrew C. Yang, and Vinay U. Prabhu. «Afro-MNIST: Synthetic generation of MNIST-style datasets for low-resource languages.» arXiv preprint arXiv:2009.13509 (2020).
Масштабируемые модели ИИ с PyTorch Lightning

Итоги по PyTorch Lightning

Диаграмма PyTorch Lightning

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

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

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

Preparing Video For Download...