Мозг промышленного масштаба или как воплотить мечту в реальность?

c321aecb1697041e0cf9706dfe267a77.png

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

При работе над сложными проектами обычно вовлечена команда разработчиков и специалистов по обработке данных, у которых сразу возникают вопросы: как управлять проектом, совместно разрабатывать модель машинного обучения (Machine Learning model), проводить ее тестирование, каким образом синхронизировать код и результаты экспериментов? После разработки и оптимизации ML-модели возникает необходимость ее развертывания в промышленной среде. Все эти проблемы могут казаться менее увлекательными, чем решение самой задачи машинного обучения, но они имеют критическое значение для успешной реализации ML-проектов. 

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

План статьи

Жизненный цикл и участники ML-проекта

Проекты искусственного интеллекта могут казаться новым миром, но на практике они следуют стандартным этапам IT-проекта. На этапах, связанных с машинным обучением, необходимо использовать специализированные инструменты, которые на сегодняшний день являются достаточно продвинутыми. На схеме представлены основные этапы IT-проекта, зеленым выделена ML-специфика:

9fa2fcf4406e0234d48cf675b5f1c0bb.png

На этом этапе происходит постановка бизнес целей.

Это ключевая специфика ML-проектов. Результаты этого этапа влияют на жизнеспособность всего проекта, поэтому он стоит в начале проекта, к нему сразу привлекаются специалисты по анализу данных и выделяется специальное время на изучение данных. 

  • Инициирование проекта, с принятием решения Go / No-Go также стандартный этап в проектном управлении. 

  • Формализация требований и критериев приемки работы. На этом этапе происходит:

    • Выработка и согласование с заказчиком функциональных и нефункциональных требований в виде документов: ТЗ, ПМИ, требования по производительность и т.д. 

    • Определение бюджета и необходимого оборудования.

  • Этап разработки и тестирования ML-моделей и кода является самым объемным по ресурсам и времени. 

  • Если результаты предыдущих этапов выполняют поставленные бизнес требования, то принимается решение о промышленном развертывании решения. 

  • Далее следует эксплуатация, мониторинг и обновление решения и ML-модели.

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

1887efa6be2591d9d173e633963fff72.png

  • Business Stakeholder / Data Science Managers — наблюдают за процессом в целом и контролируют всю деятельность.

  • Machine Learning Engineer / MLOps Professionals

    • Обеспечивают техническую реализацию обучения моделей. 

    • Развертывают их в промышленную эксплуатацию с помощью средств CI / CD.

    • Мониторят и переобучают ML-модели на новых данных.

  • Data Scientists занимаются анализом данных и построением моделей с научной точки зрения. Такие сотрудники называются по-разному в зависимости от области, в которой работают:

    • Deep Learning Engineer — инженер глубокого обучения.

    • Computer Vision Researcher — исследователь компьютерного зрения.

    • NLP Scientist — ученый по обработке естественного языка.

  • Data Engineers занимаются сбором и подготовкой данных с технической точки зрения:

    • Разрабатывают инфраструктуру работы с данными.

    • Контролируют и поддерживают потоки данных и работоспособность систем, настраивают системы мониторинга.

Далее подробно рассмотрим ключевые этапы ML-проекта.

Оценка, анализ и подготовка данных

В общем виде анализ и подготовка данных состоит из следующих этапов:

Получение данных (Ingestion)

  • Получение и обогащение данных из разных источников.

  • Анонимизация данных — очистка от персональных и чувствительных для бизнеса данных.

  • Разделение данных (Data Splitting) на данные для обучения, проверки и тестирования.

Хорошая практика на данном этапе — всегда сохранять исходные данные без изменений, а эксперименты проводить с копиями данных. 

Исследование и проверка (Exploration and Validation)

  • Исследование структуры данных — min, max, среднее, статистическое распределение.

  • Проверка данных на корректность типов и форматов.

  • Визуализация данных.

  • Определение зависимостей между атрибутами (attribute correlation).

На этом этапе необходимо определить нужны ли какие-нибудь дополнительные данные или можно двигаться дальше. 

Очистка данных (Data Cleaning)

  • Трансформация данных. 

  • Заполнение пропусков.

  • Удаление выбросов в данных.

  • Удаление данных, которые не имеют отношения к решаемой задаче.

После подготовки данных начинается этап разработки кода и ML-модели.

Разработка и тестирование ML-моделей

Разработка ML-моделей

Разработка ML-моделей обычно состоит из следующих шагов:

Model Training

  • Feature Engineering, уменьшение размерности, нормализация данных;

  • Подбор гиперпараметров модели. 

Model Engineering

  • Выбор подходящей ML-модели или комбинации моделей;  

  • Разработка, ревью, версионирование кода ML-модели;

  • Оценка качества и выбор лучшей модели;

  • Оптимизация гиперпараметров модели.

Model Evaluation & Testing

  • Проверка модели, что она выполняет бизнес задачу;  

  • Тестирование на проверочных данных.

Model Packaging

Автоматизация процесса разработки и тестирования ML-моделей (MLOps)

Для выполнения задач в рамках ML проектов необходимо использовать специализированные инструменты. Использование таких средств позволяет обеспечить воспроизводимость результатов на всех этапах жизненного цикла ML-модели:  

  • Repeatability — воспроизводимость экспериментов во время разработки 

  • Reproducibility — прозрачный перенос ML-модели на промышленную площадку

  • Replicability — тиражирование общего решения

Для автоматизации анализа данных используются средства для построения конвейеров (pipelines), которые позволяют версионировать данные и модели, автоматически выполнять необходимые шаги. Примером такой системы является Data Version Control (DVC), которую называют Git для данных.

Для автоматизации разработки и развертывания  ML-моделей появилось понятие MLOps. Средства MLOps используется для сохранения результатов ML-экспериментов, версий моделей, для тестирования и развертывания моделей. Сейчас существует несколько средств, реализующих основную функциональность MLOps:

Платформа MLflow

Рассмотрим подробнее платформу MLflow. Она состоит из следующих основных компонент, предназначенных для работы с ML-проектами:

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

  • MLflow Projects — модуль предназначен для сохранения данных, кода и всех зависимостей для возможности повторить эксперименты на разных  платформах. 

  • MLflow Models — позволяет сохранять ML-модели в стандартных форматах для дальнейшего разворота в различных окружениях. Наиболее распространенные форматы:  

Схемы развертывания MLflow

Существуют различные схемы для развертывания и использования MLflow. Приведу наиболее общую схему с выделенным сервером MLflow Server:

d93adfe87628565cc29236adf136feab.png

При такой схеме процесс разработки и деплоя ML-модели выглядит следующим образом:

  • ML-модель разрабатывается и тестируется на локальном оборудовании, которое интегрировано с сервером MLflow Tracking. 

  • Исходные коды и данные для построения ML-модели хранятся в Git-е.

  • Реализованные ML-модели сохраняются в MLflow Registry. 

  • MLflow Models переносит модель в виртуальное окружение (virtual environment) для локального развертывания или docker контейнер для развертывания в облачных платформах и Kubernetes. 

  • С помощью MLflow Deployment toolset  осуществляется  развертывание модели в промышленную среду.

Мониторинг работы ML-модели осуществляется с помощью специальных платформ, например,  Evidently.

Развертывание ML-моделей

Схемы развертывания в зависимости от типа обучения и предсказания

Различают следующие типы обучения и предсказания:

  • ML-model Training:

    • Offline Training — модели тренируются на уже собранных (исторических) данных, при работе модель остается валидной какое-то время, но потом необходим процесс переобучения на актуальных данных.

    • Online Training — постоянное переобучение модели на вновь поступающих данных.

  • ML-model Prediction:

    • Offline (batch prediction) — в этом случае для предсказания используются заранее сгенерированные данные. 

    • Real-time prediction (On-demand predictions) — для предсказания используются вновь поступающие данные из запроса.

Используя эти типы можно построить следующую матрицу:

8b93ff26177a0feeacfe7d14a345c641.png

В ее клетках помещены названия схем, реализующих требуемую функциональность:

Также в клетках приведены шаблоны встраивания ML-моделей в промышленные системы, с помощью которых возможно реализовать перечисленные схемы:

  • Model-as-Service

  • Model-as-Dependency

  • Model-on-Demand

  • Precompute serving

Далее кратко опишу схемы и шаблоны:

Forecast — для построения модели обычно используются статические данные в виде файлов. Предсказание также осуществляется на статических данных. В таком режиме работают BI системы и научные исследования данных. Схема не предназначена для работы в промышленных системах. 

Web service — наиболее популярная схема использования. В ней ML-модель строится на исторических данных, но информация для предсказания берется из запроса в реальном времени. Переобучение модели на актуальных данных можно запускать периодически или же сам запрос может запускать процесс обучения на актуальных данных (batch run).

Online learning — наиболее динамичная схема. Обычно используется на потоковых данных, когда модель должна постоянно изменяться. Переобучение может происходить не на промышленной системе, а параллельно и тогда для этой схемы больше подходит наименование «инкрементальное обучение». В таких системах есть риски, что пришедшие некачественные данные ухудшат качество модели.

Automated machine learning — в этой схеме происходит автоматическое обучение, оптимизация результатов и выбор ML-модели. Реализация таких систем зачастую более сложная задача, чем online learning, т.к.требует от пользователя только предоставление данных, а ML-модель автоматически подбирается самой системой. Обычно реализуется крупными провайдерами ИИ, такими как Google или Microsoft.

Шаблоны встраивания ML-моделей (Model Serving Patterns)

Каждая схема предсказания и обучения может быть реализована разными техническими шаблонами:  

Model-as-Service — наиболее простой шаблон. ML-модель работает как сервис, к которому приложение делает запросы с помощью REST API:

c87cdc48e12a64be3fb3c909fc5206aa.png

Model-as-Dependency — наиболее прямолинейный способ использования ML-модели. При реализации этого шаблона модель встраивается в приложение:

773726b715f57a31e568edde85974afe.png

Precompute serving — при реализации шаблона используются заранее подготовленные предсказания:

Model-on-Demand — шаблон похож на Model-as-Dependency, в котором используется архитектура message broker с двумя компонентами:

  • Message Broker с двумя очередями;

  • Event processor, который обслуживает запросы.

42b4c7627b1ed5909cb63461bc40e965.png

Заключение

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

Без грамотной технической реализации и организации процесса прекрасная идея так и останется лишь абстракцией!

Несколько ссылок для углубленного изучения

© Habrahabr.ru