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

Как сделать ML-эксперимент воспроизводимым?

JuniorMLOps и модели в продакшене
Ещё спрашивают так:
  • Зачем фиксировать random seed?
  • Почему у меня каждый раз разные результаты обучения?
Коротко

Результат зависит от кода, данных, параметров, окружения и случайности. Фиксировать: seed для всех генераторов (random, numpy, torch, параметр random_state в sklearn), версии библиотек (lock-файл), версию данных (снимок, хеш или инструмент вроде DVC), коммит кода и параметры запуска. Тогда повторный запуск даёт тот же результат, а различия между экспериментами объясняются изменениями, а не случаем.

  • На GPU часть операций недетерминирована — нужны отдельные флаги и потеря скорости
  • Разбиение на обучение и тест тоже случайно — фиксировать seed и сохранять разбиение
  • Сравнивать модели стоит на нескольких seed: разброс показывает шум

А ещё «Работало в ноутбуке вчера» — частый результат незафиксированного окружения и порядка ячеек

Подробно

Фиксация случайности:

import random, numpy as np, torch
SEED = 42
random.seed(SEED); np.random.seed(SEED); torch.manual_seed(SEED)
train, test = train_test_split(df, test_size=0.2, random_state=SEED)

Что сохранять для каждого запуска:

  • коммит кода;
  • версию или хеш данных;
  • конфигурацию параметров;
  • версии пакетов;
  • seed;
  • метрики и артефакт модели.

Ноутбуки. Перед сохранением результата — перезапустить ядро и выполнить все ячейки сверху вниз.

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

  • Источники невоспроизводимости.
  • Seed, окружение, версии данных и кода.
  • Проверка разброса на нескольких seed.

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

Несколько верных вариантов. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓Фиксировать seed всех генераторов случайных чисел
  • ✓Фиксировать версии библиотек и данных
  • ✓Сохранять коммит кода и параметры запуска
  • ✗Выполнять ячейки ноутбука в произвольном порядке

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

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

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

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

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