Ответ вслух Junior PyTorch на практике спрашивают часто обновлено

Напишите цикл обучения на словах

Вопрос

Опишите правильный цикл обучения и валидации на PyTorch: что и в каком порядке вызывается.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

Сначала переношу модель на устройство и создаю оптимизатор с её параметрами, при необходимости scheduler. Каждая эпоха: model.train(), проход по обучающему DataLoader с shuffle=True.

Что должно прозвучать в ответе

  • Модель и данные на одно устройство, оптимизатор и, если есть, scheduler

  • Трейн: model.train(), shuffle, zero_grad, forward, loss, backward, step

  • Валидация: model.eval(), torch.no_grad(), метрики по всем объектам

  • Логирование loss.item(), сохранение лучшего чекпоинта

  • Возврат в train() после валидации, сиды для воспроизводимости

Что могут спросить следом

  • Где вызывать scheduler.step()?
  • Что сохранить в чекпоинте, чтобы продолжить обучение?

Разбор

Сначала переношу модель на устройство и создаю оптимизатор с её параметрами, при необходимости scheduler. Каждая эпоха: model.train(), проход по обучающему DataLoader с shuffle=True. На шаге: батч на устройство, optimizer.zero_grad(), forward, loss, loss.backward(), при необходимости клиппинг, optimizer.step(), scheduler.step(), если расписание пошаговое. Для логов копирую loss.item(), а не сам тензор. Затем валидация: model.eval() и torch.no_grad(), проход по валидации без перемешивания и аугментаций, метрики считаю по всем объектам, а не усредняю по батчам с разным размером. Сохраняю лучший чекпоинт: state_dict модели, оптимизатора, scheduler, номер эпохи. Перед следующей эпохой снова model.train(). Фиксирую сиды для воспроизводимости.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.