Завершающие этапы ML проектов. A/B тестирование и внедрение

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

A/B тестирование

A/B-тестирование позволяет проверить, есть ли вообще выгоды от применения машинного обучения в работе заказчика. Его можно сравнить с пилотным запуском в производстве.

A/B-тестирование - это сравнения двух версий работы системы.
Версия А - система заказчика опирается на модель на основе машинного обучения.
Версия B - не опирается на модель.

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

Ошибки первого и второго рода

A/B-тестирование позволяет проверить, есть ли вообще выгоды от применения машинного обучения в работе заказчика. Его можно сравнить с пилотным запуском в производстве.

A/B-тестирование - это сравнения двух версий работы системы.
Версия А - система заказчика опирается на модель на основе машинного обучения.
Версия B - не опирается на модель.

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

Результаты A/B тестирования

Если по итогам A/B тестирования мы выяснили, что модель не работает, то необходимо разобраться по какой причине. Типичный пример проблемы - мы запустили рекомендательную систему, но заказчик параллельно продавал товары со скидкой. В итоге рекомендуемые товары попадали в акционные и из-за этого наложения уже не интересовали покупателей.

Если же по итогу A/B тестирования мы подтвердили, что модель на основе машинного обучения работает, то мы можем приступать к этапу внедрения.

Внедрение ML методов в производство

Ранее мы создали минимальную рабочую версию продукта. По окончанию A/B тестирования мы возвращаемся к масштабированию MVP. Условно, если MVP модель обрабатывает данные 1 000 пользователей, то в производстве система будет обрабатывать уже 1 000 000. Необходимо, чтобы инфраструктура компании это позволяла. Соответственно, необходимо готовить новое окружение и разворачивать на нём проект.

Система должна стать отказоустойчивой. Для этого необходимо внедрить систему тестирования, чтоб каждое изменение не отменяло предыдущие наработки. Например, сотрудник заказчика применил новый и неточный алгоритм и захотели выложить на рабочую базу. При попытке появилась ошибка тестирования, потому что точность для на группы товаров должна быть не ниже 6%. Пока сотрудник не исправит алгоритм - выложить он его не сможет.

Проводится интеграция со всеми сервисами заказчика. Встраивание ML-модели как микросервиса в систему заказчика.

Для соблюдений принципов непрерывной интеграцией и непрерывной поставкой CI/CD проводится проверка и стандартизация кода.

Если же по итогу A/B тестирования мы подтвердили, что модель на основе машинного обучения работает, то мы можем приступать к этапу внедрения.

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

Как итог

В двух статьях мы постарались рассказать о сквозном процессе создания и внедрения ML - моделей. Проверка гипотезы, минимально жизнеспособный продукт, A/B тестирование - только такая последовательность гарантирует доставку результата, а этап внедрения обеспечивает независимость от конкретного разработчика.