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

При работе над сложными проектами обычно вовлечена команда разработчиков и специалистов по обработке данных, у которых сразу возникают вопросы: как управлять проектом, совместно разрабатывать модель машинного обучения (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:

Платформа 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-моделей, а также схемы развертывания в промышленной среде. 

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

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

Комментарии (0)