Зачем нужен мониторинг ML-систем в production, чем он отличается от простого отслеживания метрик ПО и при чем здесь MLOps. Как настроить телеметрию ML-приложений в New Relic: 5 простых шагов для специалистов по Machine Learning и дата-инженеров.
Зачем нужен мониторинг ML-систем и при чем здесь MLOps
В реальных системах машинного обучения важно вести непрерывное наблюдение за данными и моделями. Это является одной из идей MLOps-концепции. Даже сама ML-модель осталась прежней, характер данных мог измениться, что может непосредственно повлиять на пользователей. Мониторинг ML-моделей позволяет ответить на следующие вопросы:
- какова производительность модели в производственной среде;
- насколько точны прогнозы;
- снижается ли производительность модели со временем;
- нужно ли повторное обучение;
- изменилось ли распределение входных данных и фичей модели;
- изменилось ли прогнозируемое распределение классов с течением времени.
Также мониторинг модели Machine Learning помогает отслеживать обучение и переобучение модели, в т.ч. просматривать кривые обучения, распределение прогнозов обученной модели и матрицу ошибок во время обучения и переобучения. Еще это дает возможность отслеживать оценку, результаты тестирования и особенности развертывания ML-модели: регистрировать метрики, диаграммы, прогнозы и другие метаданные автоматизированных конвейеров, включая CI/CD. Наконец, мониторинг нужен, чтобы отслеживать показатели оборудования: сколько CPU/GPU и памяти используют модели во время обучения и логических выводов.
Сегодня на рынке существует множество платформ, предназначенных для мониторинга инженерных систем, куда собираются различные системные и бизнес-метрики, чтобы отражать наиболее важные данные на наглядных дэшбордах и генерировать уведомления. Например, Grafana, Datadog, Graphite и пр. Также есть средства для мониторинга ML-систем машинного обучения типа Neptune, Amazon SageMaker Model Monitor, Censius и прочие MLOps-средства. А как объединить наблюдение за работой системы машинного обучения с классическим инженерным мониторингом ПО согласно концепции MLOps в рамках единого инструмента на платформе New Relic, рассмотрим далее.
Телеметрия production-приложений Machine Learning с New Relic: 5 шагов
New Relic – это телеметрическая платформа удаленного мониторинга мобильных и веб-приложений, которая позволяет собирать, исследовать и получать оповещения обо всех данных телеметрии из любого источника в одном месте. Благодаря интеграции со многими open-source инструментами New Relic может работать с различными источниками и приемниками данных, о чем мы писали здесь на примере коннектора для Kafka. А наглядные дэшборды в веб-GUI в режиме онлайн визуализируют все важные метрики, события, пользовательских и системные данные, упрощая работу администратора и дата-инженера.
Для сбора данных New Relic использует .NET Profiling API, когда агенты мониторинга регистрируются как профайлеры CLR при запуске приложения. Это не требует изменения кода приложения. Агенты New Relic перехватывают CLR вызовы и сохраняют их в репозиторий. В New Relic есть 4 категории данных мониторинга:
- метрики – числовые показатели, агрегированные по времени, например, количество событий в секунду, или температура процессора в настоящий момент;
- события – действия, случившиеся в системе, например, изменение настройки сервера или пользовательский клик на элемент UI;
- логи о производительности приложений и инфраструктуры, куда пишутся события и ошибки;
- трассировки, которые показывают путь запроса через несколько приложений и сервисов, от начала до конца, чтобы найти узкие места и ошибки производительности. Поскольку запросы перемещаются между сервисами, каждый сегмент записывается как интервал, который представляет время, потраченное на сервисы или их ресурсы. Все отрезки запроса объединяются в единую распределенную трассировку, предоставляя целостную картину всего запроса.
New Relic предлагает объединить мониторинг ML-моделей с инженерным наблюдением за ПО, чтобы специалисты по обработке и анализу данных могли отправлять метрики и выходные данные своих моделей на ту же платформу, которую используют разработчики. Это согласуется с концепцией MLOps и дополняет ее. Отправка данных машинного обучения упрощается благодаря использованию Python-библиотеки ml-performance-monitoring с открытым исходным кодом, которая доступна на GitHub.
Этот набор инструментов позволяет отслеживать различные выходные данные машинного обучения непосредственно из программного кода. Для этого сперва следует зарегистрировать бесплатную учетную запись New Relic, которая дает до 100 ГБ трафика в месяц. После этого можно напрямую отслеживать ML-метрики из Python-скрипта или записной книжки Jupyter, используя предварительно созданные дэшборды и генерацию оповещений.
Реализация сводится к следующим шагам:
- установить пакет Python-библиотеки ml-performance-monitoring с GitHub:
$ pip install git+https://github.com/newrelic-experimental/ml-performance-monitoring.git
- взять ключ вставки, который позволяет отправлять данные на платформу New Relic, и поместить его в переменную среды NEW_RELIC_INSERT_KEY. Ключ можно найти в следующем пользовательском интерфейсе ключей API для аутентификации пользователей. Различают первичные ключи, которые являются лицензионными и нужны для создания отчетов, и пользовательские ключи для работы с NerdGraph, собственным API GraphQL. Ключи позволяют утвержденным пользователям сообщать данные в New Relic, получать доступ к этим данным и настраивать функции. NerdGraph предоставляет единый интерфейс API для возврата данных из различных API и микросервисов New Relic.
- отправить данные ML-модели в New Relic, создав словарь с набором значений ключей метаданных и подготавливаем сами данные для отправки. Можно использовать метод wrap_model() для обертывания модели или конвейера, чтобы иметь возможность также использовать их в обычном режиме. Эта оболочка автоматически отправит данные вывода и data_metrics в New Relic.
- также необходимо передать в платформу мониторинга системные данные (метрики производительности, текущие значения показателей программно-аппаратной инфраструктуры, пользовательские события и т.д.)
- наконец, следует настроить графическое отображение всех важных метрик на дэшбордах в виде наглядных диаграмм, графиков и таблиц.
Как внедрить лучшие практики MLOps для эффективной аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
Источники
- https://towardsdatascience.com/monitor-easy-mlops-model-monitoring-with-new-relic-ef2a9b611bd1
- https://neptune.ai/blog/ml-model-monitoring-best-tools
- https://newrelic.com/platform/telemetry-data-platform
- https://github.com/newrelic-experimental/ml-performance-monitoring
- https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/