Что необходимо проверить до, во время и после развертывания моделей машинного обучения в рабочей среде

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

Предполагаемая аудитория:

  • Исследователи данных, которые хотят убедиться, что их код/модель можно легко развернуть без каких-либо обстоятельств, которые могут сделать результаты модели невоспроизводимыми.
  • Инженеры по машинному обучению, которым нужен краткий список вещей, которые могут пойти не так при перемещении модели между средами/платформами.

Эти проверки лучше выполнять последовательно, чтобы убедиться, что проблема из предыдущего сценария не переносится на следующий шаг

Ключевое слово, которое нужно запомнить для удобства:

Сценарий — 1:

Невоспроизводимость данных

  • Модели машинного обучения работают с данными. Если базовые данные не совпадают с исследовательской средой, модель не может генерировать такие же результаты.
  • Вы можете подумать, что это здравый смысл. Но на практике одна из недооцененных проблем, которую часто упускают из виду специалисты по данным и инженеры по машинному обучению (я тоже виноват в этом), — это небольшие изменения в базовых данных и их влияние на гипотезу, выводимую моделью.
  • Базовые необработанные данные, поступающие в систему перед предварительной обработкой/проектированием, должны соответствовать исследовательской среде. Никакая разработка функций не компенсирует неверные/невоспроизводимые необработанные данные.
  • Люди, работающие с большими данными, часто считают удобным сказать, что невозможно сопоставить такие большие объемы данных. Было бы невозможно сопоставить ряд за рядом. Но для того, чтобы сделать разумные сравнения, должен быть установлен набор статистических показателей.
  • Процесс ETL, настроенный на загрузку данных в среду, должен быть сравнен, и каждый результат процесса должен быть проверен. Не забывайте о точности и ее влиянии при выполнении больших агрегаций.
  • Проверьте потенциальную потерю пакетов/данных во время передачи данных в среду.
  • Если у вас есть несколько источников данных, передающих данные в модель, проверки должны выполняться для каждого из них.

Сценарий — 2:

Разные результаты этапов разработки признаков

  • После того, как вы убедились, что необработанные данные воспроизводимы, следующим шагом будет проверка воспроизводимости после разработки функций.
  • Одной из распространенных ошибок является не установка начального значения при использовании функции проектирования, включающей выборку данных.
  • Проверка логических несоответствий предварительной обработки (обработка нулей, NAN, экстремальных значений и т. д.), несоответствий агрегации, точности данных
  • Проверьте версию Python и версии базовых библиотек в обеих средах, а также изменились ли значения по умолчанию в библиотеках.
  • Как и в предыдущем шаге, используйте статистические показатели/КПЭ для сравнения спроектированных/обработанных данных между средами.

Сценарий — 3:

Разное разделение поезд-тест

  • Ужасы невоспроизводимого раскола не знают границ. На этапе непосредственно перед загрузкой данных в любую модель ML мы разделяем данные на обучающие, проверочные и тестовые наборы данных. Необходимо убедиться, что эти наборы данных воспроизводимы внутри и между средами.
  • Чаще всего специалисты по данным забывают установить начальное значение при разделении.
  • Если вы выполняете перекрестную проверку, особенно важно установить начальное значение в случае RepeatedKFold, ShuffleSplit, GroupShuffleSplit.
  • Если вы используете СУБД, убедитесь, что поддерживается правильный порядок данных, и убедитесь, что установлена ​​логика для сортировки или сохранения порядка данных.

Сценарий — 4:

Несоответствия прогнозов

Если модель генерирует NaN или бесконечность в качестве прогнозов:

  • Данные среды могут содержать нулевые данные, которые не обрабатываются в коде.
  • Данные (особенно тестовые или потоковые данные) могут содержать категории, которые ранее не наблюдались.
  • Неверные данные при потоковой передаче/тестировании

Эти проблемы можно решить, охватив эти сценарии в коде. Хотя может потребоваться участие SME в данных и обработке

Если предсказания модели не совпадают или совпадают частично:

  • Не задано начальное значение во время исследовательской/производственной среды для базового алгоритма или выборки.
  • Различные версии Python или библиотеки могли изменить способ обработки данных алгоритмом.

Сценарий — 5:

Эффективность ниже ожидаемой:

  • Поскольку ключевые показатели эффективности и ожидания быстро меняются в определенных сценариях, вполне вероятно, что к тому времени, когда ваша модель будет запущена в производство, она может не соответствовать ожиданиям.
  • Мы должны сделать проверки, чтобы убедиться, что распределение между обучением и прогнозами в реальном времени не сильно отличается. Дрейф данных и концепций может быстро меняться с течением времени для нескольких вариантов использования.
  • В случае обучения с учителем мы также должны проверить, остается ли цель истинным ожиданием результата. Если цель ненадежна или меняется со временем, производительность модели также со временем ухудшится или станет ненадежной.

Сценарий — 6:

Переменная недоступность или нечастые функции

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

Это одни из наиболее частых сценариев, которые практически наблюдаются и часто упускаются из виду специалистами по данным и инженерами по машинному обучению при разработке и развертывании моделей в рабочей среде. Развертывать и поддерживать модели машинного обучения так же сложно (если не сложнее), как и их разрабатывать. Надеюсь, эта короткая статья помогла вам избежать распространенных ошибок на рабочем месте. Есть ли сценарий, который, по вашему мнению, должен быть освещен? Пожалуйста, не стесняйтесь оставить комментарий. Буду рад перенять ваш опыт.