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

В этой статье мы сосредоточимся на всех различных инструментах, которые можно использовать для настройки инфраструктуры на основе MLOps, чтобы увеличить скорость, с которой специалисты по данным могут вносить свои новые изменения в исходный репозиторий и управлять моделями в производственной среде. . Причина, по которой я пишу целую отдельную статью для обсуждения только этих инструментов, заключается в том, что, как вы можете видеть выше, инфраструктура MLOps уровня 2 состоит из множества компонентов и систем, которые являются новыми для нас, такими как хранилище функций, организованный эксперимент, непрерывная интеграция. (CI), Continuous Delivery (CD), Continuous Training (CT) и т. д., и поэтому я считаю, что важно подробно обсудить эти компоненты, прежде чем переходить к обсуждению вышеуказанного рабочего процесса, то есть уровня 2 MLOps и других уровней MLOps (объяснение подробно в части 3 этой серии MLOps).

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

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

  1. Kubeflow для организованных экспериментов
  2. Github для управления версиями кода, Github Actions для CI/CD и DVC для управления версиями данных и моделей.
  3. MLflow для отслеживания экспериментов
  4. Праздник для магазина функций
  5. Очевидно, ИИ для мониторинга моделей машинного обучения и обнаружения дрейфа данных

Kubeflow для организованных экспериментов



Что такое кубефлоу?

Согласно официальному веб-сайту Kubeflow, проект Kubeflow посвящен тому, чтобы сделать развертывание рабочих процессов машинного обучения (ML) в Kubernetes простым, переносимым и масштабируемым. Цель состоит не в том, чтобы воссоздать другие сервисы, а в том, чтобы предоставить простой способ развертывания лучших в своем классе систем с открытым исходным кодом для машинного обучения в различных инфраструктурах. Везде, где вы используете Kubernetes, вы должны иметь возможность запускать Kubeflow.

Как мы используем его для наших проектов по науке о данных?

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

Давайте предположим, что если мы сможем создать этот мл-конвейер, который выполняет все эти шаги одновременно с помощью одной команды, то сколько времени мы сэкономим из-за этого, поскольку окончательная модель, которая войдет в производственную среду, будет определена только после большого количества эксперименты! Мы можем достичь с Kubeflow. Мы можем представить все наши шаги, то есть проверку данных, подготовку данных, обучение модели, оценку модели и проверку модели, как узлы в направленном ациклическом графе (DAG).

Ждать? ДАГ? Вам должно быть интересно, что вы слышали это раньше, и вы правы! Инженеры данных используют Airflow для автоматизации своих рабочих процессов с помощью DAG, и мы используем ту же концепцию здесь для нашего конвейера мл. Это называется организованным экспериментом, и это увеличивает скорость, с которой специалисты по данным могут проводить эксперименты. Это можно реализовать с помощью Kubeflow для автоматизации части обучения модели. Этот конвейер развертывается в производственной среде для непрерывного обучения (CT).

Github для управления версиями кода, Github Actions для CI/CD и DVC для управления версиями данных и моделей







Что такое Github, Github Actions и DVC?

Github: Согласно официальному сайту, GitHub — это платформа для размещения кода для контроля версий и совместной работы. Это позволяет вам и другим людям работать вместе над проектами из любого места.

Github Actions: Согласно официальному веб-сайту, GitHub Actions позволяет легко автоматизировать все ваши рабочие процессы с программным обеспечением, теперь с помощью CI/CD мирового класса. Создавайте, тестируйте и развертывайте свой код прямо из GitHub. Заставьте проверки кода, управление ветвями и сортировку проблем работать так, как вы хотите.

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

Как мы используем их для наших проектов по науке о данных?

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

Github используется для управления версиями кода, а Github Actions — для настройки непрерывной интеграции (CI) и непрерывной доставки (CD). Всякий раз, когда специалист по данным завершает работу над новой функцией, он/она может поделиться этими изменениями и получить их проверку другими с помощью Github. В то же время эти новые изменения будут отправлены в производственную среду после утверждения изменений после проверки кода с помощью Github Actions. Код можно автоматически протестировать, преобразовать в пакеты и развернуть в целевой среде с помощью Github Actions. Следовательно, мы получаем исходный репозиторий с Github и достигаем CI/CD с Github Actions! Но тогда зачем нам ДВК?

Есть разница между программным проектом и проектом по науке о данных. Github и Github Actions используются в обоих случаях, но в случае проекта по науке о данных мы также должны сосредоточиться на управлении версиями моделей и данных вместе с кодом. Здесь на помощь приходит DVC! Для больших наборов данных и версий моделей DVC — один из лучших инструментов. Его легко настроить на нашем локальном компьютере, и его можно использовать с облачными хранилищами, такими как AWS S3, для хранения наших моделей в облаке.

MLflow для отслеживания экспериментов



Что такое MLflow?

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

Как мы используем его для наших проектов по науке о данных?

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

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

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

Праздник для магазина функций



Что такое Праздник?

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

Как мы используем его для наших проектов по науке о данных?

Прежде чем мы обсудим Feast, мы должны сначала понять, что мы вообще подразумеваем под хранилищем функций?

Хранилище функций — это централизованный репозиторий, в котором мы определяем и храним все функции, которые будут использоваться как для процесса, то есть при обучении модели в среде разработки и производственной среде (непрерывное обучение), так и во время прогнозирования в производственной среде. . Мы будем делать прогнозы на основе новых данных, которые будут поступать из хранилища функций в производственной среде. Хранилище функций должно быть в состоянии предоставить API для обоих случаев, то есть API для предоставления данных для обучения моделей и API для обслуживания данных в реальном времени с малой задержкой для прогнозирования в производственной среде. Feast позаботится обо всех этих вещах и, следовательно, является одним из лучших инструментов на рынке для добавления хранилища функций в нашу инфраструктуру машинного обучения.

Еще одним преимуществом хранилища функций является то, что несколько команд могут хранить свои функции в хранилище функций, и любая другая команда может использовать эти функции для своих проектов мл. Например. допустим, мы работаем в компании электронной коммерции в качестве специалиста по данным, и нам нужно создать систему рекомендаций по продуктам, чтобы компания рекомендовала больше продуктов клиентам и увеличивала продажи компании. Что касается этой бизнес-задачи, мы знаем, что в компании есть еще одна команда специалистов по данным, которая работает над проблемой машинного обучения, связанной с продуктами. Теперь мы знаем, что все команды хранят свои функции в хранилище функций, и, следовательно, мы можем использовать их функции, связанные с продуктами, для нашей бизнес-задачи. Допустим, другая команда сохранила представление word2vec всех названий продуктов для своей бизнес-задачи, но теперь даже мы можем использовать эту функцию для нашей бизнес-задачи, и нам даже не нужно было создавать эту функцию! Мы увидим, как мы используем это хранилище функций как часть нашей архитектуры ML на разных уровнях MLOps в части 3 этой серии MLOps.

Очевидно, ИИ для мониторинга моделей машинного обучения и обнаружения дрейфа данных



Что такое Очевидно ИИ?

Согласно официальному веб-сайту, Evidently — это библиотека Python с открытым исходным кодом для специалистов по данным и инженеров по машинному обучению.

Он помогает оценивать, тестировать и отслеживать производительность моделей ML от проверки до производства.

Как мы используем его для наших проектов по науке о данных?

Допустим, вы завершили все свои эксперименты и получили лучшую модель, сравнив результаты всех моделей с помощью MLflow, и следующим шагом будет развертывание этой модели в производственной среде. Вы можете развернуть эту модель с помощью действий GitHub и использовать ее в качестве остаточного API для прогнозирования новых данных в рабочей среде. Вы можете использовать Docker и Flask для своего API и Kubernetes для масштабирования API. Но что теперь? Как узнать, когда следует переобучить модель? Как узнать об изменении распределения данных и снижении производительности модели?

Вот где мониторинг вступает в силу! Мы можем использовать Очевидно ИИ для мониторинга наших моделей в производственной среде. Очевидно, он используется для оценки и мониторинга моделей машинного обучения в производстве путем создания интерактивных отчетов и информационных панелей. Очевидно, можно использовать для обнаружения дрейфа данных, дрейфа цели, а также для мониторинга производительности модели для обоих случаев — регрессии и классификации в продакшене.

Краткое содержание

Вот краткое изложение всего, что обсуждалось в этой статье:

  1. Мы обсудили, что такое Kubeflow и как мы можем использовать его для преобразования нашего эксперимента в организованный эксперимент с использованием концепции DAG.
  2. Мы поняли, как можно использовать Github для версионирования кода и Github Actions для настройки CI/CD. Поскольку мы создаем систему машинного обучения, важно отслеживать данные и модели вместе с кодом. Следовательно, мы используем DVC для управления версиями данных и моделей.
  3. Мы увидели, почему важно отслеживать наши эксперименты и как мы можем использовать MLflow для отслеживания всех наших экспериментов, чтобы мы могли воспроизвести эти эксперименты, когда это необходимо, и получить желаемые результаты.
  4. Мы поняли, что такое хранилище функций и как мы можем реализовать его с помощью Feast.
  5. Мы также обсудили Evidently AI и то, как мы можем использовать его для мониторинга наших моделей в производственной среде.

Будущая работа

Если вам понравилась эта статья и вы хотите узнать больше о MLOps, пожалуйста, прочитайте третью часть этой серии MLOps, которая скоро выйдет!