<style> .reveal { font-size: 28px; } /* .reveal p { text-align: left; } */ .reveal section img { background:none; border:none; box-shadow:none; } </style> # Monitoring Machine Learning Models in Production <!-- [v1] --> Филиппова Ольга DMIA Production ML :rocket: весна 2021 [TOC] --- ## Three pillars of observability - **Metrics** <--- эта лекция - Tracing - Logs --- ## Мотивация ![](https://i.imgur.com/h9cm4fF.png) https://storage.googleapis.com/pub-tools-public-publication-data/pdf/0d556e45afc54afeb2eb6b51a9bc1827b9961ff4.pdf --- ## Что особенного в мониторинге ML системы? Мониторинг ML системы состоит из двух частей: - Service health - совпадает с мониторингом любого ИТ сервиса - Model health - проверка на то, что модель в проде делает **полезные** предсказания --- ## Software systems monitoring - RED method (Rate, Errors, Duration) - USE method (Utilization, Saturation и Errors) - The Four Golden Signals by Google (Latency, Traffic, Errors, Saturation) - … https://nklya.medium.com/ключевые-метрики-в-мониторинге-b6f184cf1154 --- ## ML systems monitoring - Data monitoring - Model monitoring --- ## Data monitoring - что-то изменили в схеме данных - один из источников данных внезапно отвалился - пришла только часть данных или неправильные данные --- ## Data monitoring Что можно проверить? * Совпадают ли типы данных? * Не изменилась ли доля пропусков в данных? * Значения признаков остались в "нормальном" диапазоне: Появились ли новые категории? Непрерывные признаки принимают значения, которых модель раньше не видела? * Изменились ли статистики по признакам, распределение признаков? --- ## Model monitoring - Shifts in the environment - Changes in customers behavior - Adversarial scenarios --- ## Model monitoring Что можно проверить? - Control ML quality metrics - Compare model prediction distributions with statistical tests: - Basic statistics - Full-blown statistical tests --- ## Key Monitoring-Related Principles from the Papers - Dependency changes result in [a] notification - Data invariants hold in training and serving inputs, i.e. monitor Training/Serving Skew - Training and serving features compute the same values - Models are not too stale - The model is numerically stable - The model has not experienced dramatic or slow-leak regressions in training speed, serving latency, throughput, or RAM usage - The model has not experienced a regression in prediction quality on served data --- ## Если вы только задумались о мониторинге - даже базовый мониторинг лучше чем его отсутствие - думайте о своей задаче - следите за блогами стартапов --- ![](https://i.imgur.com/iBncx6J.png) --- ## Prometheus ![](https://i.imgur.com/S0btNPD.png) https://prometheus.io/docs/introduction/overview/ --- ## Prometheus ![](https://i.imgur.com/JJzngwt.png) --- ## В чем особенность Prometheus? **push mechanism** примеры: Amazon watch, New relic, etc Нюансы: - на каждый объект, который нужно отслеживать (target) необходимо установить ПО которое будет отправлять push запросы - Если необходимо отслеживать много микросервисов и каждый из них отправляет данные в систему мониторинга, может возникнуть высоконагруженный трафик и система мониторигна становится узким местом. (инфраструктура перегружена постоянными push запросами) - если мы перестали получать метрики от сервиса, это не может однозначно трактоваться как остановка сервиса (может что-то с сетью, или потерялся пакет, итд) --- ## В чем особенность Prometheus? **pull mechanism** Нюансы: - нет неопределенности, которая возникает в push mechanism системах, если запрос не пришел - мы можем регулировать нагрузку на сеть - микросервисы для работы с Prometheus должны иметь endpoint, кроме того для многих решений есть готовые exporters (об этом дальше) - если нам критична точность и мы хотим учитывать каждое значение метрики, pull mechanism не лучший выбор --- ## Что может мониторить Prometheus? ![](https://i.imgur.com/XHQuA9w.jpg) --- ## Типы метрик - counter - счетчики (the number of requests served, tasks completed, or errors) - gauge - число которое может увеличиваться или уменьшаться (temperatures, current memory usage, but also "counts" that can go up and down, like the number of concurrent requests) - Histogram - histograms, quantiles are calculated on the Prometheus server(request durations or response sizes) - Summary - histograms, quantiles are calculated on the application server https://prometheus.io/docs/practices/histograms/ --- ## Как все устроено? ![](https://i.imgur.com/rj6YqN8.png) --- ## Как все устроено? ![](https://i.imgur.com/EEp89ZR.png) --- ## Как все устроено? ![](https://i.imgur.com/a8QbkrU.png) --- ## Как задать что и с какой частотой мониторить? ```powershell= # my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] ``` --- ## Что делать с метриками? ![](https://i.imgur.com/eORY7j2.png =x500) --- ## Grafana ![](https://i.imgur.com/Rj1px54.png =100x) allows you to query, visualize, alert on and understand your metrics no matter where they are stored --- ## Grafana - позволяет легко делать дашборды - комбинировать на них данные из разных источников (можно на графиках по метрикам из Prometheus нанести события из логов, собранных в Loki) - совместима с множеством источников - позволяет настраивать alerts --- ## Полезные ссылки https://christophergs.com/machine%20learning/2020/03/14/how-to-monitor-machine-learning-models/ https://evidentlyai.com/blog https://www.youtube.com/watch?v=h4Sl21AKiDg
{"metaMigratedAt":"2023-06-15T19:18:35.899Z","metaMigratedFrom":"YAML","title":"Monitoring Machine Learning Models in Production","breaks":true,"slideOptions":"{\"theme\":\"white\",\"transition\":\"slide\"}","contributors":"[{\"id\":\"e0bc91de-98f7-46f8-a3a9-852912833a93\",\"add\":806,\"del\":372},{\"id\":\"6045d9a3-720e-430a-aedb-7786a9a0f1cc\",\"add\":10544,\"del\":4434}]"}
    268 views
   Owned this note