Как происходил обмен данными с моделью
Что проверяют
Работали ли вы с моделью за пределами ноутбука: как в неё попадают данные в проде и как возвращается результат. Интервьюер слушает, знаете ли вы про контракт, задержку и расхождение признаков между обучением и инференсом. Следом обычно спрашивают, что происходило, когда модель не отвечала или получала мусор.
Как отвечать
Отвечайте про свой проект и опишите путь данных по шагам, со своими цифрами:
- режим: пакетный (скрипт по расписанию считает прогнозы и пишет в таблицу) или онлайн (сервис отвечает на запрос). Пакетного режима хватает чаще, чем кажется, и об этом стоит сказать;
- транспорт и формат: REST на FastAPI с JSON, gRPC с protobuf для внутренних сервисов с жёсткими требованиями к задержке, очередь вроде Kafka для асинхронной обработки. Из готовых серверов: Triton, TorchServe, BentoML, а для языковых моделей vLLM;
- контракт: схема входа и выхода, валидация через
pydantic, версия модели в ответе, чтобы логи можно было связать с конкретным артефактом; - признаки: одинаковая предобработка при обучении и в проде. Надёжнее всего один и тот же код или
Pipelineиз scikit-learn, сохранённый вместе с моделью, либо feature store; - надёжность: таймауты, пакетирование запросов на GPU, запасной ответ (правило или прошлый прогноз), мониторинг p95 задержки и распределений входных данных;
- логирование: вход и предсказание сохраняются, чтобы потом сопоставить их с фактом и дообучать модель.
Если вы только обучали модель, а интеграцию делали другие, скажите об этом прямо и расскажите, какой артефакт и контракт вы им передавали. Это честный и нормальный ответ для начинающего специалиста.
Где спотыкаются
Рассказывают про pickle и Flask и на этом останавливаются. Без слов о валидации, версиях и мониторинге это звучит как учебный проект.
Не упоминают расхождение признаков: в ноутбуке нормализация одна, в сервисе её переписали вручную иначе, и модель тихо деградирует.
Называют красивую задержку без условий. Если говорите «50 мс», уточните, какой перцентиль, при каком трафике и на каком железе.