Вопрос с собеседования · AI и LLM

Как написать цикл обучения в PyTorch с валидацией и сохранением лучшей модели?

MiddleНейросети и трансформеры
Ещё спрашивают так:
  • Что такое DataLoader?
  • Зачем model.eval() и torch.no_grad()?
Коротко

Dataset отдаёт пример по индексу, DataLoader собирает батчи и перемешивает. Шаг обучения: optimizer.zero_grad() → прямой проход → loss → loss.backward() → optimizer.step(). Валидация — в режиме model.eval() (выключает dropout, фиксирует batchnorm) внутри torch.no_grad() (не считать градиенты). После каждой эпохи сохранять веса, если метрика на валидации улучшилась; ранняя остановка — если долго не улучшается.

  • Забыть zero_grad — градиенты копятся между шагами
  • Забыть model.train() после валидации — обучение без dropout
  • Модель и данные — на одном устройстве (.to(device))

А ещё Сохраняют state_dict, а не весь объект модели

Подробно

Скелет:

best = float("inf")
for epoch in range(epochs):
    model.train()
    for x, y in train_loader:
        x, y = x.to(device), y.to(device)
        optimizer.zero_grad()
        loss = loss_fn(model(x), y)
        loss.backward()
        optimizer.step()
    model.eval()
    with torch.no_grad():
        val = sum(loss_fn(model(x.to(device)), y.to(device)).item()
                  for x, y in val_loader) / len(val_loader)
    if val < best:
        best = val
        torch.save(model.state_dict(), "best.pt")

Дополнительно: планировщик learning rate, смешанная точность на GPU, логирование метрик по эпохам.

Что хотят услышать

  • Dataset и DataLoader.
  • Порядок шагов обучения.
  • eval, no_grad при валидации.
  • Сохранение лучшей модели, ранняя остановка.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓zero_grad → forward → backward → step; валидация в eval и no_grad
  • ✗zero_grad вызывают один раз перед обучением
  • ✗Валидацию проводят в режиме model.train(), чтобы dropout работал
  • ✗Сохранять нужно веса после последней эпохи, а не лучшие

Связанные вопросы

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования