В предыдущей статье мы рассмотрели различные типы нейросетей и обсудили, какие задачи можно решать с их помощью. Теперь рассмотрим задачу искусственного интеллекта с организационной и технической точки зрения.
При работе над сложными проектами обычно вовлечена команда разработчиков и специалистов по обработке данных, у которых сразу возникают вопросы: как управлять проектом, совместно разрабатывать модель машинного обучения (Machine Learning model), проводить ее тестирование, каким образом синхронизировать код и результаты экспериментов? После разработки и оптимизации ML-модели возникает необходимость ее развертывания в промышленной среде. Все эти проблемы могут казаться менее увлекательными, чем решение самой задачи машинного обучения, но они имеют критическое значение для успешной реализации ML-проектов.
В этой статье мы подробно рассмотрим жизненный цикл ML-сервиса от идеи до разработки и внедрения, а также инструменты и принципы, используемые на каждом этапе.
План статьи
Жизненный цикл и участники ML-проекта
Проекты искусственного интеллекта могут казаться новым миром, но на практике они следуют стандартным этапам IT-проекта. На этапах, связанных с машинным обучением, необходимо использовать специализированные инструменты, которые на сегодняшний день являются достаточно продвинутыми. На схеме представлены основные этапы IT-проекта, зеленым выделена ML-специфика:
Этап бизнес анализа является стандартным для всех IT и не IT-проектов.
На этом этапе происходит постановка бизнес целей.
Оценка объема и качества имеющихся данных. Анализ и формирование требований к данным.
Это ключевая специфика ML-проектов. Результаты этого этапа влияют на жизнеспособность всего проекта, поэтому он стоит в начале проекта, к нему сразу привлекаются специалисты по анализу данных и выделяется специальное время на изучение данных.
Инициирование проекта, с принятием решения Go / No-Go также стандартный этап в проектном управлении.
-
Формализация требований и критериев приемки работы. На этом этапе происходит:
Выработка и согласование с заказчиком функциональных и нефункциональных требований в виде документов: ТЗ, ПМИ, требования по производительность и т.д.
Определение бюджета и необходимого оборудования.
Этап разработки и тестирования ML-моделей и кода является самым объемным по ресурсам и времени.
Если результаты предыдущих этапов выполняют поставленные бизнес требования, то принимается решение о промышленном развертывании решения.
Далее следует эксплуатация, мониторинг и обновление решения и ML-модели.
На разных этапах проекта привлекаются специалисты по машинному обучению с разными ролями. В рамках ML-проектов выделяют несколько ключевых ролей, которые могут выполняться как разными, таки и одними и теми же людьми или иметь пересекающиеся обязанности:
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:
Kubeflow - для развертывания в Kubernetes
Платформа MLflow
Рассмотрим подробнее платформу MLflow. Она состоит из следующих основных компонент, предназначенных для работы с ML-проектами:
MLflow Tracking - отслеживает и логирует процесс обучения модели. Сохраняет результаты экспериментов, конфигурационные данные и гиперпараметры модели. Позволяет визуализировать метрики, сравнивать результаты и выбирать наилучший вариант модели.
MLflow Projects - модуль предназначен для сохранения данных, кода и всех зависимостей для возможности повторить эксперименты на разных платформах.
-
MLflow Models - позволяет сохранять ML-модели в стандартных форматах для дальнейшего разворота в различных окружениях. Наиболее распространенные форматы:
MLflow Registry - хранит и управляет версиями ML-моделей в центральном хранилище.
MLflow deployment toolset - позволяет разворачивать модели на облачных и локальных платформах.
Схемы развертывания MLflow
Существуют различные схемы для развертывания и использования MLflow. Приведу наиболее общую схему с выделенным сервером MLflow Server:
При такой схеме процесс разработки и деплоя 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) - для предсказания используются вновь поступающие данные из запроса.
Используя эти типы можно построить следующую матрицу:
В ее клетках помещены названия схем, реализующих требуемую функциональность:
Forecast
Automated machine learning
Web service
Online learning
Также в клетках приведены шаблоны встраивания 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:
Model-as-Dependency - наиболее прямолинейный способ использования ML-модели. При реализации этого шаблона модель встраивается в приложение:
Precompute serving - при реализации шаблона используются заранее подготовленные предсказания:
Model-on-Demand - шаблон похож на Model-as-Dependency, в котором используется архитектура message broker с двумя компонентами:
Message Broker с двумя очередями;
Event processor, который обслуживает запросы.
Заключение
В статье мы рассмотрели этапы реализации проектов машинного обучения и отметили важность всех этапов для достижения успеха. Выяснили, что мир искусственного интеллекта состоит не только из ученых Data Sciences, но и из ML-инженеров, которые воплощают идеи в жизнь. Были подробно рассмотрены этапы анализа и подготовки данных, разработки и тестирования ML-моделей, а также схемы развертывания в промышленной среде.
Без грамотной технической реализации и организации процесса прекрасная идея так и останется лишь абстракцией!
Несколько ссылок для углубленного изучения
Статья от сообщества MLOps (Machine Learning Model Operationalization Management) про данные, ML-модели и код приложения: Three Levels of ML Software;
Лекция в Nexign Анны Авдюшиной, аспиранта и инженер-программиста ИТМО и МФТИ "Как внедрить модели машинного обучения в продакшен";
-
Курсы от сообщества ODS (Open Data Science)
Методы и инструменты MLOps: "MLOps и production подход к ML исследованиям 2.0";
А этот курс только начинается (март 2024), еще можно принять участие вживую: "MLOps и production в DS исследованиях 3.0";
Курс по дизайну систем машинного обучения: "ML System Design".