Как ответить
Нет, напрямую направлять модель в production нельзя. Между обучением и эксплуатацией лежит целый слой инженерных задач — MLOps. Даже если модель показывает 99% accuracy на тесте, в продакшене она может упасть из-за дрейфа данных, задержек или несовместимости окружений.
Вот что обязательно нужно проверить и настроить:
- Совместимость окружений: версии библиотек, Python, системные зависимости. Используйте Docker или Conda с фиксированными версиями. Пример: модель, обученная на sklearn 1.0, может не загрузиться на окружении с 0.24.
- Валидация входных данных: в продакшене приходят сырые данные с пропусками, неверными типами, лишними фичами. Обязательно ставить schema validation (pydantic, Great Expectations). Иначе модель может молча выдать мусор.
- Стратегия деплоя: не выкатывайте на всех пользователей сразу. Используйте canary (5-10% трафика) или shadow mode (модель предсказывает параллельно, но результат не влияет на пользователя). Позволяет отловить ошибки без ущерба.
- Мониторинг: нужно следить не только за latency и ошибками 500, но и за data drift (статистики фич изменились) и concept drift (связь X->Y перестала работать). Ставьте логирование предсказаний и регулярно сверяйте распределения (например, PSI, KS-тест).
- A/B-тестирование: чтобы объективно оценить, лучше ли новая модель старой. Нужен рандомизированный эксперимент с достаточной выборкой и контрольными метриками (ROI, retention и т.д.).
- Инфраструктура: учтите время инференса. Если модель тяжёлая (трансформер, ансамбль), может потребоваться GPU, батчинг, кэширование. Иначе пользователи будут ждать ответ 10 секунд — это недопустимо.
Код для простой проверки входных данных (можно написать в CI/CD):
from pydantic import BaseModel, validator
class InputFeatures(BaseModel):
age: float
salary: float
category: str
@validator('age')
def age_non_negative(cls, v):
if v < 0:
raise ValueError('age cannot be negative')
return v
Ещё важный момент — версионирование. Модель, данные для обучения, код препроцессинга должны быть привязаны к версии. Используйте DVC или MLflow. Если через месяц метрики упадут, вы сможете откатить модель вместе со всеми зависимостями.
Резюмирую: production-ready модель — это не ноутбук. Это контейнер с валидацией, мониторингом, механизмом отката и A/B-тестом. Без этого вы рискуете получить внезапное падение метрик и испорченный пользовательский опыт.