С ядром DBT, Kedro и Weights & Biases

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

В рамках этого проекта я построил оптимизированную сквозную инфраструктуру операций машинного обучения (MLOP), которая хорошо подходит для этого конкретного варианта использования, сохраняя при этом экономическую эффективность.

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

Давайте пройдемся по логике реализации ниже.

Отправная точка, источник моей боли:

Как это обычно бывает с инициативами Data Science, при инициировании проекта Jupyter Notebook (в данном случае SageMaker Studio) использовался в качестве основного инструмента для разработки моделей.

  1. Данные были извлечены непосредственно из Athena на основе таблиц/представлений с последующими многочисленными преобразованиями данных. Нет прямого контроля версий для скриптов и нет виртуализации для происхождения данных, код копируется между средой UAT/Product для извлечения данных.
  2. Hugging Face Transformers был интегрирован, чтобы обеспечить доступ к предварительно обученным моделям, а все функции предварительной обработки проектирования, обучения и оценки управляются в ноутбуке.

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

Шаг 1. Добавление управления извлечением и преобразованием данных

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

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

DBT (DBT Core с открытым исходным кодом) представляет собой жизнеспособное решение для этого случая. Используя хорошо поддерживаемый адаптер A thena-Dbt, данные, вероятно, можно отслеживать и управлять ими с помощью различных функций, предоставляемых DBT:

  1. Интеграция данных: DBT позволяет интегрировать данные из различных источников, таких как базы данных, электронные таблицы и API, в единое место для анализа и составления отчетов.
  2. Моделирование данных: DBT позволяет пользователям создавать и изменять модели данных, включая возможность создавать отношения между таблицами и определять бизнес-логику.
  3. Проверка данных: DBT включает встроенные проверки для обеспечения целостности и точности данных.
  4. Происхождение данных: DBT отслеживает происхождение данных и позволяет пользователям отслеживать данные до их источника, обеспечивая прозрачность и подотчетность.
  5. Автоматизированное тестирование: DBT включает в себя возможности автоматического тестирования, позволяющие пользователям тестировать модели данных и обеспечивать их правильное функционирование.
  6. Планирование и мониторинг: DBT позволяет планировать и отслеживать конвейеры данных, включая возможность настройки предупреждений и уведомлений о любых проблемах или ошибках.
  7. Документирование и совместное использование: DBT включает в себя возможность документирования и обмена моделями данных, что упрощает понимание и использование данных другими людьми.

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

Взгляд на ядро ​​​​DBT с открытым исходным кодом:

Примечание. Подробное объяснение интеграции Athena+DBT можно найти в моем предыдущем посте.

Шаг 2 — Производственный код машинного обучения

После добавления DBT для управления этапом извлечения и преобразования данных следующим шагом будет изучение Jupyter Notebook.

Общие проблемы при разработке кода DS/ML в Jupyter Notebooks включают:

  1. Отслеживание кода и вывода. Блокноты Jupyter могут быть загромождены кодом и выводом, что затрудняет отслеживание того, что было сделано и каково текущее состояние модели.
  2. Воспроизводимость: блокноты Jupyter не всегда легко распространять или воспроизводить, поскольку они могут содержать скрытые состояния или другие зависимости, которые не очевидны из кода.
  3. Отладка. Отладка кода машинного обучения может быть затруднена в блокнотах Jupyter, поскольку код часто распределяется по нескольким ячейкам, и бывает трудно увидеть все состояние системы в любой момент времени.
  4. Контроль версий: блокноты Jupyter плохо подходят для контроля версий, так как выходные данные и другие метаданные хранятся в самом файле блокнота, что затрудняет сравнение или объединение изменений.
  5. Управление зависимостями: Блокноты Jupyter могут затруднить управление зависимостями и обеспечить выполнение кода на разных машинах или в разных средах.
  6. Нет встроенной возможности автоматического тестирования

Jupyter Notebook не готов к работе и может оказаться дорогостоящим для организаций, которым необходимо нанять MLE для производства кода с него.

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

Код разработан в среде Kedro и может быть развернут в SageMaker Studio (это только одно из многих поддерживаемых развертываний) для повышения вычислительной мощности, такой как GPU.

Первоначально Kedro был разработан QuantumBlack, AI — Mckinsey, а теперь поддерживается LF AI & Data Foundation. Я лично присоединился к Slack-каналу сообщества Kedro и внес небольшой вклад в кодовую базу. Сообщество состоит из дружелюбных и чрезвычайно талантливых людей, многие из которых связаны с QuantumBlack.

Взгляд на Кедро с открытым исходным кодом:

Шаг 3. Отслеживание экспериментов с моделями и управление ими

В последние годы тема привязки моделей и экспериментов привлекла значительное внимание с появлением различных инструментов, таких как MLflow, TensorBoard to Neptune и Weight & Bias. Среди них Weight & Biases выделяется своей бесшовной интеграцией с популярными платформами машинного обучения, такими как Hugging Face, Yolo Analytics, а также удобным дизайном интерфейса.

  1. Отслеживание экспериментов: Weights & Biases позволяет пользователям отслеживать и сравнивать различные эксперименты, включая их параметры, показатели и результаты.
  2. Визуализация модели: пользователи могут визуализировать свои модели, включая архитектуру и веса, в удобном интерфейсе.
  3. Автоматическое ведение журнала: Weights & Biases автоматически регистрирует все показатели обучения и проверки, что упрощает отслеживание прогресса с течением времени.
  4. Совместная работа: пользователи могут делиться своими экспериментами и результатами с другими, что упрощает совместную работу над проектами.
  5. Многоязычная поддержка: Weights & Biases поддерживает несколько языков программирования, включая Python, R и Java.
  6. Облачная платформа: Weights & Biases — это облачная платформа, что означает, что пользователи могут получать доступ к своим экспериментам и результатам из любого места.
  7. Предупреждения и уведомления. Пользователи могут настраивать предупреждения и уведомления, чтобы уведомлять их о выполнении определенных условий, например, когда модель достигает определенного порога точности.
  8. История аудита: пользователи могут просматривать историю аудита всех экспериментов, в том числе, когда они проводились, кто их запускал и какие изменения были внесены.

Взгляд на wandb с открытым исходным кодом:

Обзор:

Спасибо за чтение и надеюсь, вам понравилось. В этом посте представлена ​​упрощенная интеграция MLOP с точки зрения сквозного потока машинного обучения, которую можно реализовать в три этапа:

  1. Интеграция с ядром DBT для управления и управления преобразованием и происхождением данных. Мусор на входе, мусор на выходе, успех проектов машинного обучения во многом зависит от правильного управления высококачественными данными.
  2. Разработка готового к производству кода DS/ML на основе принципов модульности, масштабируемости и тестируемости. Фреймворк Kedro — отличная отправная точка.
  3. Интеграция облака Weights & Biases для отслеживания каждой тренировки или эксперимента. Weights & Biases легко интегрируется с Hugging face и требует всего три строки кода.