MLOps и построение конвейеров машинного обучения – одни из самых актуальных задач современной Data Science. Сегодня рассмотрим, чем совместное использование Apache Airflow и Ray полезно для дата-инженера и ML-разработчика. Читайте далее про кластерное развертывание Python-кода ML-моделей и упрощение ETL-процессов с Apache Airflow и Ray.
Apache AirFlow для ML: возможности и недостатки
Современные ML-разработчики думают не только о точности создаваемых алгоритмов, но и заботятся о вопросах сопровождения готового решения. Удобство развертывания, эксплуатации и развития ML-продукта – одна из главных идей концепции MLOps, о чем мы писали здесь. Реализовать эти идеи помогают специальные инструменты, которые автоматизируют рутинные операции машинного обучения, строя единый конвейер от подготовки обучающей выборки до развертывания работающей модели. Apache AirFlow – популярный фреймворк построения конвейеров, применимый не только к задачам дата-инженерии типа ETL-процессов, но и для ML.
В частности, использование DAG для построения ML-моделей дает Data Science специалистам следующие преимущества:
- простая параметризация;
- соглашения об уровне обслуживания;
- оповещения;
- мониторинг данных с помощью водяных знаков и их происхождения;
- надежная масштабируемость.
Порог входа в AirFlow для ML-разработчиков практически отсутствует, т.к. операторы и другие компоненты этого фреймворка используют язык Python, знакомый каждому Data Scientist’у. А наличие графического веб-GUI еще более упрощает работу пользователя. Однако, для создания реальных ML-продуктов в AirFlow не хватает следующих возможностей:
- простой перенос кода прямо из записных книжек Jupyter Notebook, Google Colab и других подобных сред разработки для запуска с минимальными изменениями;
- не очевидная обработка больших наборов данных при переносе их между разными задачами;
- возможность запрашивать и получать по требованию ресурсы для решения конкретной задачи, например, графические процессоры для PyTorch, оперативную память для датафреймов или ядра ЦП для XGBoost;
- экосистемная интеграция средств записи, запроса и воспроизведения ML-экспериментов, регистрации и развертывания полученных моделей.
Поэтому Data Scientist’ы объединяются с дата-инженерами, комбинируя AirFlow с совместимыми фреймворками машинного обучения, одним из которых является Ray. Что это и как работает, мы поговорим далее.
Что такое Ray и зачем он в Data Science проектах
Ray – это платформа кластерных вычислений для распространения и запуска Python-кода, даже со сложными библиотеками или пакетами, на кластерах бесконечного размера. Помимо Python, также Ray предоставляет API для Java и C++ (пока в экспериментальном режиме). Фреймворк использует задачи (функции) и субъекты (классы), чтобы распараллеливать пользовательский код. В отличие от Apache Spark, который требует сложной настройки кластера и зависимостей Java, Ray может запускать один и тот же код на любой машине: от личного ноутбука разработчика до кластера в AWS.
После запуска пользователи могут распределять ресурсы Ray для каждой функции, например, чтобы предоставить одной из них 2 ядра ЦП и 1 графический процессор. При правильном использовании распределенные вычисления Ray в сочетании с надежным планированием и оркестровкой Airflow создают идеальную платформу быстрой разработки и надежного развертывания ML-моделей.
Ray предоставляет простой универсальный API для создания распределенных приложений:
- простые примитивы для создания и запуска распределенных приложений;
- распараллеливание пользовательского кода с минимальными изменениями или без них;
- широкая экосистема приложений, библиотек и инструментов поверх ядра для поддержки сложных приложений.
Ray обладает высокой производительностью и написан на C++ для быстрого и автоматического перемещения объектов Python по кластеру с использованием gRPC-вызовов для новых функций, которым нужны данные из предыдущих. При этом пользователь просто пишет код на Python, не думая об особенностях платформы благодаря высокому уровню абстракции.
Хотя Airflow и Ray не нуждаются в специальных пакетах или настройках для совместной работы, сделать ее еще проще поможет провайдер от Astronomer. Эта компания, коммерциализирующая и продвигающая Apache Airflow, разработала множество подобных Python-пакетов, представив их в открытом каталоге – реестре провайдеров, о чем мы рассказывали здесь.
Синергия Ray и Apache Airflow для машинного обучения
В Ray Provider для Apache Airflow специалисты Astronomer инкапсулировали весь специфичный код настройки и инициализации Ray в декораторы, а не в операторы, расширяя API TaskFlow. Этот декоратор позволяет пользователям Airflow сохранять весь свой код Ray в функциях Python и определять зависимости задач, перемещая данные через них. В результате пользователи Airflow и Ray могут видеть код, который они запускают, и иметь гибкость изменения шаблонов своих DAG, пользуясь возможностями распределенных вычислений Ray.
Благодаря возможностям Airflow создавать шаблоны и динамически менять параметры задач DAG, в сочетании с Ray Tune можно организовать и масштабировать настройку пространства поиска машинного обучения с использованием любой ML-инфраструктуры: PyTorch, XGBoost, MXNet и Keras, объединяя инструменты записи и запросов, тиражирование экспериментов, регистрацию и развертывание полученных моделей.
Так менее чем за полчаса работы Data Scientist может превратить локальный Python-скрипт в крупномасштабный воспроизводимый конвейер с мощью распределенных вычислений Ray и оркестровки Airflow. Далее можно воспользоваться переменными Airflow, соединениями, интервалами планирования и многими другими функциями этого оркестратора задач дата-инженерии.
Например, Airflow и Ray позволяют пользователям повторно запускать задачи с помощью отказоустойчивого резидентного объектного хранилища данных Plasma In-Memory Object Store. Ray использует это локальное хранилище для каждого рабочего процесса, чтобы хранить данные в памяти для быстрой обработки. Эта система отлично работает, но может отказать, если возникнет проблема с кластером Ray.
С помощью механизма контрольных точек, пользователи Airflow и Ray могут указывать на задачи в DAG, где данные сохраняются в надежном внешнем хранилище, например, AWS S3. Это обеспечит отказоустойчивость, позволяя в случае сбоя повторно запустить задачу с нужными данными. При этом можно передавать целые датафреймы между задачами без явной отправки их во внешнее хранилище. С традиционным XCom это довольно сложно, т.к. Airflow хранит каждый фрагмент данных, передаваемых между задачами, в одной ячейке базы данных метаданных. Но эта проблема легко решается с помощью Ray, его внутреннего хранилища объектов в памяти.
Чтобы обеспечить эффективную обработку данных для машинного обучения, Ray использует резидентную систему хранилища объектов, которая обеспечивает быструю передачу данных и чтение с нулевым копированием. С помощью Ray-декоратора Airflow может использовать это хранилище объектов в качестве системы кэширования, позволяя крупным объектам данных оставаться в оперативной памяти worker’ов при выполнении нескольких задач. Это экономит время на передачу данных и деньги на обращение к AWS S3, поскольку теперь не нужно писать и читать данные из этого облачного хранилища для их передачи между задачами.
Если требуется еще более снизить операционные издержки, разработчики предлагают управляемое решение для размещения кластеров Ray, а также API/SDK для программного управления ML-инфраструктурой с высокой пропускной способностью.
В перспективе разработчики планируют создать функцию для простой передачи данных из локальной задачи Airflow в задачу Ray и обратно, чтобы работать с любым пользовательским сервером Xcom, включая пользовательский сервер Ray Custom Xcom, и полностью обеспечить пользователям Airflow нативный интерфейс Python. Также ожидается добавление других внутренних хранилищ объектов, помимо Plasma In-Memory Object Store, и расширение пользовательского Backend Xcom Ray для перемещения данных между задачами с использованием разных операторов AirFlow. Про совместное использование AirFlow с Apache NiFi читайте в нашей новой статье.
Код курса
ADH-AIR
Ближайшая дата курса
Продолжительность
ак.часов
Стоимость обучения
0 руб.
Узнайте больше про организацию ETL/ELT-процессов и разработку MLOps-конвейеров на Apache AirFlow для эффективной аналитики больших данных на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:
- Разработка и внедрение ML-решений
- Data Pipeline на Apache Airflow
- Машинное обучение на Python
- Data pipeline на Apache AirFlow и Arenadata Hadoop
Источники