Как перенести код из Jupyter-ноутбука в рабочий проект?
- Почему ноутбук нельзя отдавать в продакшен?
Ноутбук хорош для исследования, но плох для работы: скрытое состояние (порядок ячеек), нет тестов, сложное ревью, параметры зашиты в код. Перенос: вынести логику в функции в модулях (загрузка, признаки, обучение, оценка), параметры — в конфигурацию, точку входа — в скрипт с аргументами, добавить тесты на признаки и обработку данных, зависимости — в lock-файл. Ноутбук остаётся для анализа и импортирует функции из модулей.
- Функции признаков должны быть одни и те же при обучении и в сервисе
- Пути и константы — не в коде, а в конфигурации
- Тест на маленьком наборе данных ловит поломки до долгого обучения
А ещё Инструменты: nbconvert для черновика, но структура пишется руками
Подробно
Структура проекта:
churn/
data.py # загрузка и очистка
features.py # признаки
train.py # обучение, точка входа
evaluate.py # метрики
configs/train.yaml
tests/test_features.py
notebooks/eda.ipynb # импортирует churn.*
Порядок: сначала выделить функции признаков (их будет использовать сервис), покрыть тестами на крайних случаях (пропуски, пустые группы), затем обучение и оценку.
Что хотят услышать
- Проблемы ноутбуков в продакшене.
- Функции, модули, конфигурация, точка входа.
- Тесты и общий код признаков.
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Запускать ноутбук в продакшене по расписанию как есть
- ✓Логику — в функции модулей, параметры — в конфиг, добавить тесты
- ✗Скопировать все ячейки подряд в один файл main.py без изменений
- ✗Тесты для кода признаков не нужны — модель всё равно обучается
Связанные вопросы
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.