MLOps с Apache AirFlow: оркестрация ML-конвейеров

AirFlow MLOps инженерия данных примеры курсы обучение, ML, Machine Learning, машинное обучение, Data Science, AirFlow примеры курсы обучение дата-инженеров и ML-специалистов, AirFlow в ML-проектах, MLOps AirFlow машинное обучение, Школа Больших Данных Учебный Центр Коммерсант

Apache AirFlow не зря считается у дата-инженеров самым популярным ETL-оркестровщиком. Сегодня посмотрим, чем этот фреймворк полезен в MLOps и как его использовать для оркестровки конвейеров машинного обучения.

MLOps в конвейерах машинного обучения

Конвейеры машинного обучения в производственной среде обслуживают ML-модели в реальных проектах. Чтобы эффективно управлять такими конвейерами связанных заданий, в MLOps используется прием оркестровки сервисов – централизованный подход организации их взаимодействия. Обычно конвейер Machine Learning начинается с извлечения необработанных данных из источника (база данных, файловая система или API) и выполнения над ними ряда преобразований, чтобы создать признаки (фичи) для ML-модели. На практике при этом часто используются хранилища фичей, которые помогают с воспроизводимостью и избегают повторного определения одних и тех же данных.

Далее модель обучается на представленных данных и в производственной среде ее следует регулярно переобучать из-за дрейфа данных, о чем мы писали здесь. Для этого приходится извлекать и определять новые данные, соединять их с соответствующими ранее представленными данными из хранилища признаков и переобучаем модель. Это напоминает типовой ETL-процесс, с которым отлично справляется оркестратор пакетных заданий Apache AirFlow.

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

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

Все эти шаги упорядочены и каждый из них зависит от предшествующего, а направленный поток данных между ними является центральным элементом архитектуры ML-конвейера и рабочих процессов. Чтобы этот ML-конвейер работал в производственной среде без сбоев, его компоненты должны быть организованы, чтобы зависимости и поток данных между ними координировались надежно, регулярно и наблюдаемо. По сути, это и есть оркестровка машинного обучения, которая повышает производительность специалистов по Data Science. Используя Apache AirFlow в качестве универсальной платформы оркестрации, можно снизить накладные расходы благодаря объединению инструментов и методов, а также оптимизации межфункциональной передачи и масштабирования. AirFlow помогает им реализовать стандартизированный подход к разработке рабочих процессов и повторному использованию кода для различных вариантов использования.

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

Чтобы эффективно ML-систему в production, нужно ответить на следующие вопросы:

  • архитектура и поток данных — как выглядит ML-конвейер, каковы его этапы и их связь между собой, соглашения о транзакциях и схема. Также следует понять, как ML-конвейер вписывается в другие системы и чем среда обучения отличается от продуктивной среды, где будет развернута модель?
  • масштабирование системы и масштабируемость модели – изменятся ли показатели качества работы ML-модели при многократном увеличении количества данных и/или пользователей?
  • доступность и время безотказной работы — насколько сервис доступен для конечного пользователя, как часто возможны сбои, какова длительность простоев и их характер, в т.ч. при выпуске обновлений?
  • Безопасность – каковы уязвимости ML-сервис вносит в общую ИТ-архитектуру?

Как Apache AirFlow помогает ответить на эти вопросы, реализуя оркестровку ML-конвейера согласно концепции MlOps, рассмотрим далее.

Apache AirFlow для оркестровки ML-конвейеров

Конвейеры машинного обучения динамичны и постоянно изменяются, поэтому при их эффективной эксплуатации в производственной среде рекомендуется учитывать следующие принципы:

  • Планирование – запуск с регулярной частотой всего конвейера целиком или запуск отдельных его компонентов по сложному расписанию. Оркестровка позволяет планировать различные части конвейера по отдельности, при этом определяя зависимости целостно.
  • Синхронизации и зависимости – из-за вышестоящего/нижестоящего характера связи задач в конвейере, нужно убедиться, что все его компоненты правильно взаимодействуют друг с другом. Важно не только указать направление потока данных между компонентами, т.е. сообщить вышестоящей задаче, что отправлять, и нижестоящей задаче, чего ожидать, но и задать правильные моменты этой передачи данных.

  • CI/CD и тестирование, что повышает скорость и надежность развертывания. Частые проверки качества данных делают ML-модель более надежной. Надлежащая обработка исключений и ошибок обеспечивает высокую доступность развернутого конвейера и соответствующей службы. Развернутая модель должна быть наилучшей из возможных итераций и постоянно улучшаться. Экспериментируя с данными и ML-моделью, следует постоянно тестировать конвейер, чтобы убедиться, что он продолжает нормально функционировать как сам по себе, так и с системой в целом. Наряду с ML-конвейером тесты также должны быть организованы и автоматизированы как часть производственного рабочего процесса.
  • Сохранение и управление версиями с использованием хранилища фичей и моделей, которые доступны для оркестратора рабочих процессов. Сюда же входит преобразование типизированных данных и моделей в форматы, эффективные для хранения (например, бинарные), а также обеспечение надлежащего размера и масштабируемости хранилища для конкретного бизнес-сценария. Версии данных и модели должны иметь четкую связь с версиями кода, чтобы понимать производительность и добавленную ценность для бизнеса при регулярном обновлении алгоритмов, данных и кода.
  • график хранения и очистки хранилища фичей и моделей, чтобы освободить место и гарантировать сохранность созданных дата-активов;
  • мониторинг ML-конвейера помогает предотвратить ухудшение и стагнацию моделей, а также отследить данные, пользователей и развивающуюся бизнес-среду, включая дрейф отдельных фичей и всей концепции модели в целом. Это особенно важно в NLP-задачах, где бизнес-вариант использования зависит от понимания контекста. Также необходимо отслеживать, насколько хорошо ML-модель выполняет свою основную функцию — моделирование тенденций в данных путем обучения на них. Обученная на тренировочных данных модель не гарантирует отличного качества в производственной среде, но AirFlow позволяет организовать мониторинг как часть рабочего процесса
  • Управление и наблюдаемость ML-конвейера в производстве. Оркестровка машинного обучения включает в себя реализацию стратегий и протоколов для надежной работы рабочего процесса, обеспечение видимости происходящего в конвейере и разработку инструментов для управления рабочим процессом и вмешательства в него при необходимости. Это можно реализовать через контрольные точки, чтобы кодировать реакции на неожиданные или нежелательные инциденты, выявление наилучших моделей и резервное протоколирование, что позволяет быстро откатиться назад к предыдущей версии при ухудшении показателей. Резервные протоколы полагаются на данные контрольных точек и экземпляры обученной модели, и необходимо организовать эти протоколы как часть рабочего процесса. AirFlow отлично реализует все эти стратегии, а также обеспечивает наблюдаемость в GUI и CLI-интерфейсах.

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

Также этот ETL-оркестровщик упрощает управление зависимостями в конвейере обработки данных, позволяя явно указать связь каждой задачи с остальными и определив транзакции между ними через явную передачу данных с использованием XCom или неявно через API TaskFlow, разветвление пути потока или групп задач. Нижестоящие задачи могут ожидать правильного выполнения вышестоящих задач, гарантируя, что задача будет выполняться только тогда, когда это необходимо, а не слишком рано или слишком поздно. В дополнение к повторным попыткам и пользовательской обработке ошибок, датчикам и отложенным операторам, графическое представление DAG позволяет видеть эти отношения и обновлять их в соответствии с изменениями по мере их внесения.

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

Чтобы разрешить передачу больших артефактов данных между задачами, можно масштабировать XCom с помощью облачных сервисов, таких как GCS и S3. Также AirFlow упрощает реализацию протоколов управления, включая горячую замену ML-моделей в производственной среде. Пока конечные точки компонентов хорошо обмениваются данными, внутреннее выполнение задач не нарушает общую DAG. Так можно встроить потоки управления и утверждения прямо в ML-конвейеры. Так реализуется сквозная оркестровка рабочего процесса в единой структуре, включая часть подготовки данных. Наконец, новая функция динамического сопоставления, добавленная в Apache AirFlow 2.3, о чем мы писали здесь, дополнительно повышает гибкость ML-конвейера.

Читайте в нашей новой статье про централизованное управление ресурсами и конвейерами в MLOps-платформе Tecton с Apache AirFlow.

Как эффективно использовать Apache AirFlow  в MLOps и дата-инженерии для аналитики больших данных, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://www.astronomer.io/blog/machine-learning-pipeline-orchestration/
  2. https://habr.com/ru/company/lamoda/blog/518620/
Поиск по сайту