Введение

С широким применением искусственного интеллекта и машинного обучения в различных отраслях эффективное управление и развертывание этих сложных рабочих процессов становится все более важным. Традиционные процессы разработки программного обеспечения часто не отвечают уникальным требованиям проектов машинного обучения, что приводит к появлению концепции MLOps (операций машинного обучения). MLOps — это практика, сочетающая алгоритмы машинного обучения с приложениями в реальных производственных средах с целью достижения непрерывной интеграции, развертывания и мониторинга. В этой статье мы рассмотрим, как использовать Apache DolphinScheduler и ClearML, два мощных инструмента, для реализации комплексной практики MLOps.

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

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

Apache DolphinScheduler соответствует ClearML

Планировщик Apache DolphinScheduler

Apache DolphinScheduler — это распределенная система планирования рабочих процессов, разработанная для обеспечения простого, надежного и мощного решения для распределенной оркестрации рабочих процессов. Он отвечает требованиям области MLOps, поддерживая несколько сред Python, предлагая функции управления версиями рабочего процесса и отката, а также применяя унифицированную архитектуру для вычислений и планирования.

Поддержка нескольких сред Python

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

Управление версиями рабочего процесса и откат

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

Унифицированная архитектура вычислений и планирования

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

Новые функции в предстоящем выпуске Apache DolphinScheduler 3.2.0

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

ClearML

ClearML — это универсальная платформа, разработанная специально для проектов машинного обучения. Он предлагает комплексное решение: от управления данными и обучения моделей до их развертывания. В сочетании с Apache DolphinScheduler можно реализовать сквозную практику MLOps.

Управление экспериментом

ClearML предлагает функции автоматического отслеживания экспериментов, включая контроль среды, результатов и версий кода. Это помогает улучшить сотрудничество и прозрачность среди членов команды, одновременно упрощая процесс воспроизведения и управления экспериментами.

МЛОпс

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

Управление данными

Модуль управления данными ClearML основан на объектном хранилище (например, S3, GS, Azure, NAS), реализующем полностью различимое управление данными и контроль версий. С помощью платформы ClearML пользователи могут легко добиться прозрачности и каталогизации данных, повышая эффективность использования данных.

Развертывание модели и мониторинг

Модуль обслуживания моделей ClearML поддерживает быстрое развертывание конечных точек новых моделей (в течение 5 минут) и предоставляет оптимизированные услуги графических процессоров на базе Nvidia-Triton. Кроме того, ClearML имеет встроенные функции мониторинга модели, помогающие пользователям отслеживать производительность модели в производственных средах в режиме реального времени.

Функции отчетности

В ClearML добавлены функции отчетности, позволяющие пользователям создавать и обмениваться документами MarkDown со встроенным онлайн-контентом. Это помогает членам команды лучше делиться и сообщать результаты и опыт экспериментов.

Технические моменты интеграции Apache DolphinScheduler и ClearML

Мы будем использовать Apache DolphinScheduler для организации рабочего процесса машинного обучения, включая предварительную обработку данных, обучение модели и этапы развертывания модели. После предварительной обработки данные будут загружены на платформу ClearML. Затем обучение модели будет выполняться на рабочих узлах Apache DolphinScheduler. После завершения обучения управление моделями будет осуществляться на платформе ClearML. Наконец, развертывание службы будет осуществляться через ClearML Serving, а весь процесс планирования будет контролироваться Apache DolphinScheduler. Таким образом, мы в полной мере воспользуемся преимуществами Apache DolphinScheduler и ClearML для достижения эффективной и надежной практики MLOps.

Управление данными и контроль процессов

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

Модельное обучение и управление

Рабочие узлы Apache DolphinScheduler выполняют задачи обучения модели, а агент ClearML обеспечивает распределение ресурсов для вычислений. Таким образом, Apache DolphinScheduler отвечает за планирование конвейера обучения, а ClearML отвечает за управление вычислительными ресурсами. Эта комбинация повышает уровень автоматизации обучения модели и облегчает контроль и управление версиями модели.

Используя комбинацию Apache DolphinScheduler и ClearML, мы достигаем гибкого и эффективного распределения ресурсов и управления ими. Apache DolphinScheduler фокусируется на зависимостях и порядке выполнения между задачами, а агент ClearML динамически распределяет вычислительные ресурсы в зависимости от требований задачи, улучшая использование ресурсов. Эта структура демонстрирует хорошую масштабируемость и гибкость в практике MLOps.

Развертывание модели и мониторинг

С помощью ClearML Serving мы можем легко развернуть обученные модели в виде сервисов, которые могут вызывать другие приложения. Кроме того, ClearML предлагает богатые функции мониторинга и анализа, помогающие нам понять производительность модели в производственных средах в режиме реального времени. Apache DolphinScheduler отвечает за планирование всего процесса развертывания, обеспечивая стабильную работу сервиса модели.

Из приведенного выше введения мы видим, что комбинация Apache DolphinScheduler и ClearML в области MLOps предоставляет пользователям эффективное, стабильное и простое в управлении решение для рабочих процессов машинного обучения. В следующем разделе мы покажем, как применить эти два инструмента для создания полноценного рабочего процесса машинного обучения посредством практического эксперимента.

Введение эксперимента

Установка и развертывание

ClearML

Следуйте официальному руководству Инициализация ClearML.

pip install clearml
clearml-init

Следуйте инструкциям и введите соответствующую информацию для аутентификации в ClearML:

После завершения будет создан файл ~/clearml.conf для хранения конфигурации.

Планировщик Apache DolphinScheduler

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

https://dolphinscheduler.apache.org/zh-cn/docs/3.1.5/guide/installation/standalone

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

Конфигурация среды Python

Вы можете создать конфигурацию среды Python, указывающую на среду Python на вашем сервере развертывания:

# Activate a specific Python environment
source /home/lucky/WhaleOps/dolphinscheduler-clearml-example/env/bin/activate
# Specify the Python version for Python tasks at runtime
export PYTHON_HOME=$(which python)

Вы также можете использовать conda для управления средами Python и при необходимости настраивать определенные среды для каждой задачи.

Построение рабочего процесса машинного обучения

В Apache DolphinScheduler мы можем отправлять рабочие процессы с помощью Python.

Код определения рабочего процесса можно найти здесь: https://github.com/jieguangzhou/dolphinscheduler-clearml-example. После извлечения проекта мы можем выполнить следующие команды для отправки рабочего процесса.

Для получения дополнительной информации об использовании dolphinscheduler-python-sdk вы можете обратиться к официальной документации PyDolphinScheduler и при необходимости изменить config.yaml.

python3 -m pip install apache-dolphinscheduler==4.0.3
export PYDS_HOME=./
python3 pyds.py

После отправки рабочего процесса мы можем вернуться на страницу Apache DolphinScheduler, чтобы просмотреть определение рабочего процесса.

Существует три рабочих процесса:

  1. подготовить_данные: подготовка данных, включая предварительную обработку данных, и загрузку данных на платформу ClearML для контроля версий.
  2. обучение: обучение модели, включая выборку данных и обучение модели.
  3. развертывание: развертывание модели: развертывание/обновление модели с помощью службы ClearML и тестирование службы модели.

подготовить_данные

В этом рабочем процессе мы можем использовать Apache DolphinScheduler для выполнения большого объема обработки данных, включая Spark, Hive, SQL, Python и другие задачи. Затем мы можем записать окончательный набор данных в ClearML для контроля версий данных.

В демонстрационных целях мы используем здесь только задачу Python для подготовки данных.

Apache DolphinScheduler также предоставляет функцию обратного заполнения данных для заполнения исторических данных в соответствии с календарем.

После выполнения задачи мы видим в журнале подключение к данным ClearML:

На этой странице мы можем увидеть все версии данных, просмотреть информацию о данных каждой версии и загрузить данные. Это демонстрирует мощные возможности ClearML по контролю версий данных.

🌐 Профессиональная сеть

Остался всего 1 день до нашей обучающей сессии по ClearML + Apache DolphinScheduler. 🗓 29 августа, 10:00 по восточному времени. Погрузитесь в мир MLOps вместе с экспертами отрасли Виктором Сонк и Цзегуан Чжоу. Отметьте свои календари и присоединяйтесь к нам https://bit.ly/3YwKtux, чтобы получить преобразующий опыт обучения! 📘✍️

обучение

В рабочем процессе обучения модели есть две задачи: загрузка данных из ClearML и обучение модели.

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

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

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

При использовании ClearML вмешательство в код минимально. Например, рассмотрим код обучения модели:

try:
    import joblib
except ImportError:
    from sklearn.externals import joblib
import os
from sklearn.linear_model import LogisticRegression
import numpy as np
import matplotlib.pyplot as plt
from clearml import Task
import pickle
import random
training_task_project = "training"  # $PARAM:
training_task_name = "test"  # $PARAM:
# from here on everything is logged automatically
# Connecting ClearML with the current process,
task = Task.init(project_name=training_task_project,
                 task_name=training_task_name)
train_data_path = "/tmp/clearml_test/training/iris_dataset.pkl"
model_dir = f"/tmp/clearml_test/{training_task_project}/{training_task_name}/{task.id}"
os.makedirs(model_dir, exist_ok=True)
model_path = os.path.join(model_dir, "model.pkl")
datas = pickle.load(open(train_data_path, 'rb'))
iris = datas['source']
X = iris.data
y = iris.target
X_train = datas["X_train"]
X_test = datas["X_test"]
y_train = datas["y_train"]
y_test = datas["y_test"]
# sklearn LogisticRegression class
model = LogisticRegression(solver='liblinear', multi_class='auto')
model.fit(X_train, y_train)
joblib.dump(model, model_path, compress=True)

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

task = Task.init(project_name=training_task_project,
                 task_name=training_task_name)

развертывать

Для службы развертывания модели ClearML Serving используется для быстрого развертывания модели.

Рабочий процесс включает в себя следующие этапы:

  • create_service: Создает сервис для управления пользователями группы сервисов модели.
  • add_endpoint: добавляет конечную точку модели.
  • start_service: Запускает ранее созданную службу.
  • test_server: тестирует службу.

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

Аналогичным образом, в рабочем процессе развертывания, созданном Apache DolphinScheduler, можно извлечь необходимые параметры для повторного использования рабочего процесса для развертывания различных моделей в ClearML. При развертывании модели функция повторной попытки Apache DolphinScheduler может значительно повысить стабильность рабочего процесса.

ClearML поддерживает автоматическое развертывание и обновление моделей. При настройке функции автоматического развертывания модели при публикации или пометке новой модели в репозитории моделей ClearML новая модель будет развернута автоматически. Этот автоматизированный интерфейс упрощает процесс развертывания модели CI/CD. Apache DolphinScheduler можно использовать для прямого вызова этих интерфейсов для публикации новых моделей после завершения обучения модели.

Кроме того, ClearML также поддерживает развертывание конечных точек Canary, позволяя проводить A/B-тестирование новых моделей в реальной производственной среде. Такая гибкость помогает оценить производительность различных версий модели, гарантируя, что лучшая модель будет развернута в производственной среде.

Заключение

Резюме

В этой статье представлена ​​интеграция Apache DolphinScheduler и ClearML в практику MLOps. Благодаря этой интеграции пользователи могут добиться эффективных и надежных рабочих процессов машинного обучения. В статье представлено подробное введение в установку и развертывание ClearML и Apache DolphinScheduler, а также продемонстрировано, как применить эти два инструмента для построения полного рабочего процесса машинного обучения посредством практического эксперимента. Этот эксперимент включал управление данными и контроль процессов, обучение и управление моделями, а также развертывание модели. Благодаря этому эксперименту мы видим, что сочетание Apache DolphinScheduler и ClearML в области MLOps предоставляет пользователям эффективное, стабильное и простое в управлении решение для рабочих процессов машинного обучения.

Технический обзор

Учитывая популярность больших языковых моделей, таких как ChatGPT, комбинация Apache DolphinScheduler и ClearML может лучше обеспечить жизненный цикл больших моделей, что является ожидаемой темой.

Роль Apache DolphinScheduler в обучении больших моделей — это не только функция оркестрации рабочих процессов, но и очень важная функция обработки обучающих данных. При обучении больших моделей подготовка данных часто требует много времени и вычислительных ресурсов. Поддержка различных типов задач, таких как Spark, SQL и Python, позволяет выполнять подготовку и очистку данных в распределенных вычислительных кластерах, что значительно сокращает время, необходимое для подготовки данных.

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

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