С ядром DBT, Kedro и Weights & Biases
Недавно я участвовал в проекте, связанном с внедрением многоклассовой системы прогнозирования классификации с использованием данных о финансовых транзакциях, включающей более 10 миллионов записей и более 70 классов.
В рамках этого проекта я построил оптимизированную сквозную инфраструктуру операций машинного обучения (MLOP), которая хорошо подходит для этого конкретного варианта использования, сохраняя при этом экономическую эффективность.
Термин MLOP имеет широкий спектр понятий и определений, предлагаемых различными поставщиками или решениями. Некоторые фокусируются на таких аспектах, как прослеживаемость обучения и отслеживание экспериментов, в то время как другие отдают приоритет хранению функций или развертыванию моделей. В моем понимании MLOP — это весь сквозной процесс, от извлечения данных до развертывания и мониторинга модели. Однако не все компоненты могут быть необходимы для каждого варианта использования, и выбор должен основываться на бюджете, требованиях и технологической зрелости организации.
Давайте пройдемся по логике реализации ниже.
Отправная точка, источник моей боли:
Как это обычно бывает с инициативами Data Science, при инициировании проекта Jupyter Notebook (в данном случае SageMaker Studio) использовался в качестве основного инструмента для разработки моделей.
- Данные были извлечены непосредственно из Athena на основе таблиц/представлений с последующими многочисленными преобразованиями данных. Нет прямого контроля версий для скриптов и нет виртуализации для происхождения данных, код копируется между средой UAT/Product для извлечения данных.
- Hugging Face Transformers был интегрирован, чтобы обеспечить доступ к предварительно обученным моделям, а все функции предварительной обработки проектирования, обучения и оценки управляются в ноутбуке.
Вышеупомянутый процесс представляет собой серьезные проблемы для тех, кто отвечает за его поддержку в производственных условиях, как с точки зрения обработки данных, так и с точки зрения машинного обучения. Это включает в себя проблемы с устранением неполадок, отладкой, совместной работой в блокноте и рефакторингом кода в блокноте… список можно продолжить.
Шаг 1. Добавление управления извлечением и преобразованием данных
AWS Athena — это надежный и эффективный бессерверный сервис, предназначенный в основном для выполнения специальных задач SQL-запросов. Однако его основное внимание к специальным задачам может затруднить поддержание происхождения и преобразования данных.
Хотя создание выделенного хранилища данных в этом сценарии может оказаться нерентабельным, Athena предлагает баланс вычислительной мощности и стоимости. Чтобы в полной мере использовать возможности Athena и оптимизировать процесс извлечения данных, нам нужен инструмент поверх Athena, обеспечивающий управление и обработку структурированных данных.
DBT (DBT Core с открытым исходным кодом) представляет собой жизнеспособное решение для этого случая. Используя хорошо поддерживаемый адаптер A thena-Dbt, данные, вероятно, можно отслеживать и управлять ими с помощью различных функций, предоставляемых DBT:
- Интеграция данных: DBT позволяет интегрировать данные из различных источников, таких как базы данных, электронные таблицы и API, в единое место для анализа и составления отчетов.
- Моделирование данных: DBT позволяет пользователям создавать и изменять модели данных, включая возможность создавать отношения между таблицами и определять бизнес-логику.
- Проверка данных: DBT включает встроенные проверки для обеспечения целостности и точности данных.
- Происхождение данных: DBT отслеживает происхождение данных и позволяет пользователям отслеживать данные до их источника, обеспечивая прозрачность и подотчетность.
- Автоматизированное тестирование: DBT включает в себя возможности автоматического тестирования, позволяющие пользователям тестировать модели данных и обеспечивать их правильное функционирование.
- Планирование и мониторинг: DBT позволяет планировать и отслеживать конвейеры данных, включая возможность настройки предупреждений и уведомлений о любых проблемах или ошибках.
- Документирование и совместное использование: DBT включает в себя возможность документирования и обмена моделями данных, что упрощает понимание и использование данных другими людьми.
DBT — это широко распространенный инструмент с открытым исходным кодом в области инженерии данных, который используется многими ведущими компаниями. Для инженера данных важно иметь представление о DBT или, по крайней мере, о его основных принципах.
Взгляд на ядро DBT с открытым исходным кодом:
Примечание. Подробное объяснение интеграции Athena+DBT можно найти в моем предыдущем посте.
Шаг 2 — Производственный код машинного обучения
После добавления DBT для управления этапом извлечения и преобразования данных следующим шагом будет изучение Jupyter Notebook.
Общие проблемы при разработке кода DS/ML в Jupyter Notebooks включают:
- Отслеживание кода и вывода. Блокноты Jupyter могут быть загромождены кодом и выводом, что затрудняет отслеживание того, что было сделано и каково текущее состояние модели.
- Воспроизводимость: блокноты Jupyter не всегда легко распространять или воспроизводить, поскольку они могут содержать скрытые состояния или другие зависимости, которые не очевидны из кода.
- Отладка. Отладка кода машинного обучения может быть затруднена в блокнотах Jupyter, поскольку код часто распределяется по нескольким ячейкам, и бывает трудно увидеть все состояние системы в любой момент времени.
- Контроль версий: блокноты Jupyter плохо подходят для контроля версий, так как выходные данные и другие метаданные хранятся в самом файле блокнота, что затрудняет сравнение или объединение изменений.
- Управление зависимостями: Блокноты Jupyter могут затруднить управление зависимостями и обеспечить выполнение кода на разных машинах или в разных средах.
- Нет встроенной возможности автоматического тестирования
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, а также удобным дизайном интерфейса.
- Отслеживание экспериментов: Weights & Biases позволяет пользователям отслеживать и сравнивать различные эксперименты, включая их параметры, показатели и результаты.
- Визуализация модели: пользователи могут визуализировать свои модели, включая архитектуру и веса, в удобном интерфейсе.
- Автоматическое ведение журнала: Weights & Biases автоматически регистрирует все показатели обучения и проверки, что упрощает отслеживание прогресса с течением времени.
- Совместная работа: пользователи могут делиться своими экспериментами и результатами с другими, что упрощает совместную работу над проектами.
- Многоязычная поддержка: Weights & Biases поддерживает несколько языков программирования, включая Python, R и Java.
- Облачная платформа: Weights & Biases — это облачная платформа, что означает, что пользователи могут получать доступ к своим экспериментам и результатам из любого места.
- Предупреждения и уведомления. Пользователи могут настраивать предупреждения и уведомления, чтобы уведомлять их о выполнении определенных условий, например, когда модель достигает определенного порога точности.
- История аудита: пользователи могут просматривать историю аудита всех экспериментов, в том числе, когда они проводились, кто их запускал и какие изменения были внесены.
Взгляд на wandb с открытым исходным кодом:
Обзор:
Спасибо за чтение и надеюсь, вам понравилось. В этом посте представлена упрощенная интеграция MLOP с точки зрения сквозного потока машинного обучения, которую можно реализовать в три этапа:
- Интеграция с ядром DBT для управления и управления преобразованием и происхождением данных. Мусор на входе, мусор на выходе, успех проектов машинного обучения во многом зависит от правильного управления высококачественными данными.
- Разработка готового к производству кода DS/ML на основе принципов модульности, масштабируемости и тестируемости. Фреймворк Kedro — отличная отправная точка.
- Интеграция облака Weights & Biases для отслеживания каждой тренировки или эксперимента. Weights & Biases легко интегрируется с Hugging face и требует всего три строки кода.