Что делают с кодом из Jupyter ноутбука дальше
Что проверяют
Доводили ли вы исследование до состояния, которое запускается по расписанию и чинится не только автором. Вопрос отделяет тех, кто отдаёт ноутбук как результат, от тех, кто понимает, что ноутбук это черновик эксперимента.
Как отвечать
Опишите путь, а не инструмент.
- Разбор на модули. Ячейки превращаются в функции с понятными входами: загрузка, признаки, обучение, инференс. Ноутбук остаётся тонкой обёрткой, которая эти функции вызывает и рисует графики.
- Чистка окружения. Пути к домашнему каталогу и токены уходят в конфиг и переменные окружения, сиды фиксируются, зависимости пиннятся.
- Проверка воспроизводимости. Перезапуск ядра и прогон всех ячеек подряд: ноутбук со скрытым состоянием, где ячейки выполнялись вразнобой, у коллеги просто не заведётся.
- Git. Ноутбук плохо диффится, поэтому вывод и метаданные вычищают перед коммитом либо держат парный
.pyчерез jupytext. - Тесты. Не на значение метрики, а на препроцессинг и контракт признаков: типы, диапазоны, обработка пропусков.
- Запуск. Скрипт или пакет вызывается из оркестратора, регулярный прогон ноутбука с параметрами делают через papermill. Модель уходит в реестр, инференс в сервис или в батч.
- Наблюдение после выката. Качество на проде, дрейф входных данных, доля пропусков и незнакомых категорий.
Где спотыкаются
Отвечают «прогоню nbconvert и получу скрипт». На выходе тот же линейный код с глобальными переменными, просто без ячеек: ни переиспользовать, ни протестировать его нельзя.
Забывают про расхождение обучения и применения. Препроцессинг написан дважды, в ноутбуке и в сервисе, и со временем расходится: модель на проде получает не те признаки, на которых училась.
Не могут объяснить, как повторить обучение. Нет версии данных, нет сида, нет записанных гиперпараметров, и вопрос «почему получилось другое качество» остаётся без ответа.