Тестирование пайплайнов в продакшене

Поздравляем! Вы развернули свой глобальный предсказатель появления единорога. Вы хотите, чтобы ваш предиктор работал 24x7 без сбоев. Вы быстро понимаете, что вам нужно следить за конвейером машинного обучения. Хотя мониторинг всех ваших компонентов может показаться сложной задачей, давайте рассмотрим требования и решения.

Проверка перекоса между обучением и обслуживанием

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

Тип Определение Пример Решение
Перекос схемы Обучение и обслуживание входных данных не соответствуют одной и той же схеме. Формат или распределение данных обслуживания меняется, пока ваша модель продолжает обучаться на старых данных. Используйте одну и ту же схему для проверки данных обучения и обслуживания. Убедитесь, что вы отдельно проверяете статистику, не проверенную вашей схемой, например, долю пропущенных значений.
Перекос функции Спроектированные данные различаются между обучением и обслуживанием. Инженерный код функций различается для обучения и обслуживания, создавая разные инженерные данные. Аналогично перекосу схемы, применяйте одни и те же статистические правила при обучении и обслуживании инженерных данных. Отслеживайте количество обнаруженных искаженных функций и соотношение искаженных примеров на функцию.

Мониторинг возраста модели по всему конвейеру

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

Проверьте, что веса и выходные данные модели численно стабильны

Во время обучения модели ваши веса и выходные данные слоя не должны быть NaN или Inf. Напишите тесты для проверки значений NaN и Inf ваших весов и выходных данных слоя. Кроме того, проверьте, что более половины выходных данных слоя не равны нулю.

Мониторинг производительности модели

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

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

Проверка качества живой модели на обслуживаемых данных

Вы подтвердили свою модель. Но что, если реальные сценарии, такие как поведение единорога, изменятся после записи ваших проверочных данных? Тогда качество вашей обслуживаемой модели ухудшится. Однако проверить качество обслуживания сложно, потому что реальные данные не всегда помечены. Если ваши данные о показе не помечены, рассмотрите эти тесты:

  • Создавайте метки, используя человеческие оценщики .

  • Исследуйте модели, которые демонстрируют значительную статистическую погрешность в прогнозах. См. Классификация: систематическая ошибка прогноза .

  • Отслеживайте реальные показатели вашей модели. Например, если вы классифицируете спам, сравните свои прогнозы со спамом, о котором сообщают пользователи.

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

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