Основной задачей проекта было реализовать схему мониторинга дообучения модели
путем отправки метрики качества дообучения через push из Prometheus в Grafana.
Общая идея следующая.
Предположим, что новых данных для модели поступает не очень много
и мы можем ее дообучать по расписанию (например, по cron-у) на новых данных,
которые поступают в БД.
Метрику, полученную при дообучении на валидационной выборке, будем отправлять
через push в Prometheus, а затем забирать в Grafana.
Для того, чтобы сделать push в Prometheus, нужен также сервис Pushgateway,
который аккумулирует отправленные через push данные. Эти данные затем забирает Prometheus.
Остальные части системы реализованы достаточно схематично и упрощенно,
т.к. основной идеей было организовать взаимодействие сервисов мониторинга.
Для модели взяты данные об оценке качества вина по его составу.
Исходный датасет находится в файле ./data/winequality-red.csv
Здесь можно почитать подробнее об этих данных.
-
Запускать данный проект нужно из ОС Linux.
# Клонируем проект git clone https://github.com/experiment0/monitoring_model.git # Переходим в папку с проектом cd monitoring_model
-
Проверить, установлена ли утилита
uv:uv --version
Если не установлена, то нужно установить по инструкции.
-
Проверить, установлена ли утилита
makemake --version
Обычно она установлена в дистрибутивах Linux,
но если нет, то чаще всего ее можно установить с помощью:apt-get install make
Или для частных случаев воспользоваться поиском в интернете.
-
Установить зависимости проекта
make install
-
Установить и запустить docker-контейнеры с сервисами мониторинга.
make start-services
Пути к локальным сервисам:
Pushgateway http://localhost:9091/ Prometheus http://localhost:9090/ Grafana http://localhost:3000/ В интерфейсе Grafana нужно указать источник данных
Prometheus: -
Поставить задачу
cronна дообучение модели иpushметрик.make set-cron-job
В файле Makefile добавлены и другие команды, которые могут пригодится.
После добавления задачи в cron, каждую минуту начнет запускаться скрипт для дообучения модели.
В качестве имитации получения новых данных для обучения, из csv-таблицы просто берется
следующий батч данных.
После того, как все данные будут использованы, задача в cron удаляется.
Размер батча 300 строк, количество строк в таблице 1599,
то есть, нужно подождать примерно 5 минут, пока будут использованы все данные
и можно будет смотреть метрики.
Далее пройдем по сервисам и посмотрим, как там собираются метрики.
Открывается здесь http://localhost:9091/
Видим, что метрики попали в сервис.
Открывается здесь http://localhost:9090/
Возможность выбора запушенных метрик появилась в интерфейсе.
Открывается здесь http://localhost:3000/
Построим дашборд с гистограммой по метрике retraining_model_valid_multi_logloss_bucket



