CICD для проекта машинного обучения.

Эй, ребята, это Тапан. Я вернулся с очень интересной темой, т.е. MLOPS. Обычно люди думают, что клиенту нужна модель с точностью ~ 99%, когда мы делаем прогноз с помощью API, он просто дает вам результат прогноза.

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

Если хотите понять пользу всего этого.. тут

Чтобы лучше понять этот MLOPS… вы должны иметь представление о том, что такое DevOps? и что такое конвейер CI CD? Просто шучу! 😅 . Мы поговорим об этих w.rt. MLOps.

Здесь я объясню вам о MLOps (в основном devops, просто добавляя к этому сущность ml).

Еще одна вещь ... поскольку я работал над конвейерами aws sagemaker, приведу справочный пример, основанный на этом ... для azure и gcp, следите за обновлениями ... получите их в следующих блогах.

Что такое МЛОпс?

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

Как это может быть полезно?

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

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

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

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

Что это за процессы/потоки/конвейеры? 🧐

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

  1. Этап сбора данных
  2. Шаг построения модели
  3. Шаг оценки модели
  4. Шаг регистрации модели/пакетного преобразования/конечной точки

Используя все эти шаги, мы можем построить что-то вроде этого ниже.

И, безусловно, мы можем построить более сложные этапы или более сложные пайплайны.

Подробный конвейер для того же варианта использования:

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

Теперь давайте посмотрим, из чего состоит каждый компонент, чтобы мы могли сделать свой собственный.

Я не могу придумать какие-либо другие шаги, которые могут быть полезны для этого процесса?

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

например, вот один конвейер развертывания и обнаружения дрейфа, который предоставляет aws.

Что на самом деле делают эти шаги?

В этом примере я использую только 2 или 3 типа сервисов aws, которые могут помочь в построении сквозного конвейера. Итак, давайте углубимся.

Как вы уже догадались, основным компонентом aws является AWS Sagemaker. другие — s3 (для хранения), cloudwatch (для сбора логов (метрики для этого случая)).

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

Другими важными шагами являются этап построения модели, на котором происходит фактическое обучение модели. Здесь мы можем использовать Training Job AWS для обучения модели.

Регистрация модели и конечные точки — это другие сервисы, предоставляемые aws, которые помогают нам отслеживать модель и ее развертывание. Регистрация модели просто означает, что вы можете сохранить артефакт модели в формате sagemaker.model в aws. и его можно использовать для BatchTransform или процесса создания конечной точки в реальном времени.

Разве это не круто! с такой большой работой вы можете построить свой собственный конвейер. ? Это оно ?

Неа! Всего одно-два!

  • Вам нужно знать, как построить эти шаги 👨‍🔧

Потом как сшить/закрепить их в одну нить, чтобы работало одно за другим. 🪡 часть cicd

Выглядит потрясающе! 🥳 Как их построить?

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

Если вы хотите создать свой собственный контейнер для обработки задания, обратитесь к предыдущему моему блогу, где я описал, как создать контейнер byoc и использовать его.

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

Если вы не хотите его использовать, мы определенно можем использовать предварительно зарегистрированный контейнер, предоставленный aws.

  1. Для Машинное обучение
  2. Для Глубокого обучения

🧵 как закрепить каждую работу?

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

🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯🤯

Да! но не нужно понимать все это. Для этого варианта использования мы можем использовать студийный конвейер Sagemaker, пошаговые функции, Aws codepipelin, jenkins, airflow, kubeflow, mlflow, Circleci... и многое другое... каждый инструмент немного отличается друг от друга.

а пока давайте посмотрим на воздушный поток:

Что касается Airflow, у Дага все работает. (направленный ациклический граф). Вот пример кода, который может помочь вам определить важные функции в файле dag воздушного потока.

Функция оператора Python:

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

On UI:

DAG_ID — это идентификатор ключа, который будет отображаться в списке dag на сервере воздушного потока. & DAG() — это ключевая функция, которую необходимо инициировать. ниже приведен пример изображения списка дагов. Если все пойдет правильно, вы получите свой dag_id здесь.

после нажатия на ваш идентификатор dag на сервере воздушного потока. это будет выглядеть как на графике ниже.

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

Еще один отличный способ управлять этими операциями — это платформа, предназначенная для MLOps, и это neptune.ai. Пожалуйста, проверьте это.

Что теперь?

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

Спасибо за прочтение.

Если вам понравилась статья, не забудьте поставить лайк. Пожалуйста, следуйте за мной для получения дополнительных проектов и статей на моем Github и моем среднем профиле.





Запланируйте сеанс DDIChat в Data Science / AI / ML / DL:



Подайте заявку на участие в программе DDIChat Expert здесь.
Работайте с DDI: https://datadriveninvestor.com/collaborate
Подпишитесь на DDIntel здесь.