Специалисты по данным обучаются математике, статистике и моделированию — не обязательно программной инженерии. Но разработка программного обеспечения обычно требуется на каждом этапе машинного обучения — от отслеживания экспериментов до распараллеливания разработки моделей и развертывания моделей в производстве. Преобразование проекта машинного обучения в производственный код может легко увеличить временную шкалу на несколько недель.
Нам нужен был рабочий процесс, чтобы специалисты по данным могли тратить больше времени на применение машинного обучения к проблемам и меньше беспокоиться о его развертывании. Таким образом, мы внедрили рабочий процесс для нас. Надеюсь, вы тоже найдете для себя что-то полезное.
Каковы были наши требования (а часто и все):
- Повторно используемая структура кода для построения моделей машинного обучения
- Отслеживание экспериментов с артефактами модели
- Обучение моделей на управляемых удаленных экземплярах
- Контроль версий обученных моделей
- Триггеры на основе Git для обучения и развертывания моделей
- Развертывание обученных моделей на управляемых удаленных экземплярах
- Мониторинг и ведение журнала развернутых моделей
- Интеграция развернутых конечных точек с API Gateway
ML Pipeline — это проверенное решение, полностью соответствующее указанным выше требованиям. На рисунке ниже очень хорошо показаны преимущества принятия такого решения для любого рабочего процесса обработки данных.
Дизайн
Чтобы учесть и выполнить все требования, упомянутые выше, мы в Dehaat организовали решение, которое включает в себя лучшие сторонние управляемые сервисы таким образом, чтобы помочь группе специалистов по обработке и анализу данных управлять своей кодовой базой машинного обучения, отслеживать свои эксперименты и сотрудничать со своей командой. членов наиболее эффективным образом.
В предлагаемом нами дизайне мы использовали возможности 5 различных сторонних сервисов. Это -
Стандартный рабочий процесс науки о данных можно резюмировать следующим образом:
Разработка кода → Версии кода → Управление заданиями → Выполнение заданий → Регистрация метрик/параметров
*job = любое задание по обучению/тестированию/обработке
Для каждой из этих ролей мы стратегически разместили 5 управляемых сервисов следующим образом:
Kedro → Github → Airflow → Sagemaker → MlFlow
Давайте посетим их один за другим и поймем обоснование сделанного выбора.
1 - Кедро
Что такое Кедро?
- Kedro — это среда рабочего процесса разработки, которая помогает структурировать ваш конвейер данных с использованием принципов разработки программного обеспечения, устраняя задержки проекта из-за перезаписи кода и, таким образом, предоставляя больше времени для создания надежных конвейеров.
- Платформа обеспечивает стандартизированный подход к совместной работе для команд, создающих надежные, масштабируемые, развертываемые, воспроизводимые и версионные конвейеры данных.
- Ссылки/Источники: GitHub, PyPi, Read The Docs
Почему Кедро?
2 - Гитхаб
Что такое Гитхаб?
GitHub не нуждается в представлении нынешнему сообществу разработчиков. Это самая популярная и широко используемая веб-платформа для контроля версий и совместной работы для разработчиков программного обеспечения. Он используется для хранения исходного кода проекта и отслеживания полной истории всех изменений в этом коде.
Почему Гитхаб?
Github имеет много преимуществ, некоторые из которых перечислены ниже:
- Совместная работа. Github позволяет нескольким разработчикам одновременно работать над одним проектом.
- Открытый исходный код: Github абсолютно бесплатен, и вы можете использовать его бесплатно.
- Отслеживание изменений в разных версиях. GitHub отслеживает изменения в журнале изменений, поэтому каждый раз вы можете точно знать, что именно изменилось. Эта функция особенно полезна для того, чтобы оглянуться назад и быстро определить изменения, внесенные соавтором.
- Github Actions. Github Actions позволяет легко автоматизировать все рабочие процессы вашего программного обеспечения — хотите ли вы создать контейнер, развернуть веб-службу или автоматизировать прием новых пользователей в свои проекты с открытым исходным кодом. Простое действие «git push» может запустить ряд рабочих процессов, например, в нашем случае подключиться к серверу Airflow и автоматически создать DAG.
3 - Воздушный поток
Что такое Воздушный поток?
Apache Airflow (или просто Airflow) — это платформа для программного создания, планирования и мониторинга рабочих процессов.
Когда рабочие процессы определяются как код, они становятся более удобными в сопровождении, версиях, тестировании и совместной работе.
Используйте Airflow для создания рабочих процессов в виде ориентированных ациклических графов (DAG) задач. Планировщик Airflow выполняет ваши задачи на множестве рабочих, следуя указанным зависимостям. Богатые утилиты командной строки упрощают выполнение сложных операций с DAG. Богатый пользовательский интерфейс позволяет легко визуализировать конвейеры, работающие в производственной среде, отслеживать ход выполнения и при необходимости устранять неполадки.
Почему воздушный поток?
Причина выбора Airflow многократна:
- Масштабируемость. Airflow имеет модульную архитектуру и использует очередь сообщений для управления произвольным количеством рабочих процессов. Воздушный поток готов масштабироваться до бесконечности.
- Динамический. Конвейеры Airflow определены в Python, что позволяет создавать динамические конвейеры. Это позволяет писать код, который динамически создает конвейеры.
- Элегантно. Конвейеры Airflow компактны и понятны. Параметризация встроена в его ядро с использованием мощного механизма шаблонов Jinja.
- Pure Python: используйте стандартные функции Python для создания рабочих процессов, включая форматы даты и времени для планирования и циклы для динамического создания задач. Это позволяет сохранять полную гибкость при построении рабочих процессов.
- Полезный пользовательский интерфейс: отслеживайте, планируйте и управляйте своими рабочими процессами с помощью надежного и современного веб-приложения. Нет необходимости изучать старые cron-подобные интерфейсы. Вы всегда имеете полное представление о статусе и журналах выполненных и текущих задач.
- Простота в использовании. Любой, кто знаком с Python, может развернуть рабочий процесс. Apache Airflow не ограничивает объем ваших конвейеров; вы можете использовать его для создания моделей машинного обучения, передачи данных, управления инфраструктурой и многого другого.
- Открытый исходный код: где бы вы ни захотели поделиться своим улучшением, вы можете сделать это, открыв PR. Вот так просто, никаких барьеров, никаких длительных процедур. У Airflow много активных пользователей, которые охотно делятся своим опытом. Использование решения с открытым исходным кодом помогает нам сократить основные расходы.
- Kedro-airflow: платформа Python с открытым исходным кодом Kedro выпустила пакет kedro-airflow, который существенно помогает вам создавать файлы DAG, совместимые с airflow, с помощью всего одной командной строки.
4 - Создатель мудрецов
Что такое Создатель мудрецов?
SageMaker — это полностью управляемый сервис Amazon для создания и развертывания моделей машинного обучения в производственной среде. Разработчики могут использовать SageMaker для маркировки и подготовки данных, выбора алгоритма, обучения, настройки и оптимизации моделей, а также развертывания их в рабочей среде.
Почему Сейджмейкер?
Причина выбора Sagemaker многократна:
- Простота. Просто сделайте вызов API с помощью AWS CLI или Python SDK, и SageMaker запустит инстансы EC2, запустит обучение модели, сохранит обучающие артефакты в S3, а затем автоматически выключит инстанс EC2. . Если вы решите развернуть эту модель для онлайн-вывода, просто сделайте еще один вызов API, и SageMaker позаботится о создании экземпляров EC2 и сетевых правил для доступа к модели через Интернет. Это много сэкономленного времени.
- Экономия средств. В прошлом были случаи, когда разработчик оставлял дорогостоящий экземпляр EC2 включенным на несколько недель. SageMaker автоматически отключает экземпляры обучения и пакетного логического вывода по завершении заданий, поэтому мы платим только за использованное время.
- Elastic Inference. Разработчики могут включить эластичный вывод для автоматического масштабирования вычислительных экземпляров, используемых для онлайн-вывода. Этот механизм позволяет адекватно реагировать на спрос экономически эффективным способом. Одним поводом для беспокойства меньше.
- Мониторинг — SageMaker автоматически отслеживает ваши ресурсы AWS и отслеживает показатели и выходные данные журналов. Вы даже можете визуализировать эти показатели, чтобы быстро понять, насколько точны ваши модели или сколько времени занимает обучение модели.
- Безопасность.SageMaker использует систему авторизации пользователей AWS IAM для проверки подлинности и разрешений. Если вы уже используете AWS и настроили роли IAM, вы можете воспользоваться уже настроенной системой безопасности.
5 - МЛФлоу
Что такое MLflow?
Нам нужна платформа для отслеживания экспериментов, которую специалисты по данным могут использовать для отслеживания, сравнения и объяснения своих экспериментов с машинным обучением. Это позволит специалистам по машинному обучению отслеживать свои базы данных, историю проведенных экспериментов, модификации кода и производственные модели. Это обеспечивает воспроизведение моделей, простоту обслуживания рабочих процессов машинного обучения и бесперебойную совместную работу на протяжении итеративного процесса жизненного цикла машинного обучения. MlFlow является примером такой платформы.
Почему Млфлоу?
В целях отслеживания эксперимента любое решение должно максимизировать функцию полезности, разработанную по следующим критериям:
- Простота внедрения решения в развивающийся рабочий процесс машинного обучения.
- Богатство параметров отслеживания
- Четкая организация журналов экспериментов
- Возможность записи артефактов эксперимента и дополнительных примечаний
- Простота обмена журналами экспериментов
- Поддержка других заданий жизненного цикла, таких как развертывание
- Стоимость использования и обслуживания такой платформы
Общая оценка рассмотренных продуктов/решений выглядит следующим образом:
- Платформы отслеживания, предоставляемые крупными и популярными облачными сервисами, такими как AWS (Sagemaker Studio) или Azure (AzureML), тесно интегрированы с соответствующими сервисами и средами, что ставит под угрозу первый критерий, указанный выше. Хотя есть большие преимущества с точки зрения использования других действий жизненного цикла и управления, таких как контроль доступа пользователей, хранение кода (и записных книжек), развертывание и т. д., возможности настройки для управления экспериментом либо ограничены, либо непросты, например. добавление пользовательских тегов или группировка экспериментов и т. д.
- Независимые и платные сервисы вроде CometML, Weights & Biases, NeptuneAI и другие действительно удовлетворяют большинству критериев. Между ними есть незначительная разница, и это тоже касается пользовательского опыта. Хотя характеристики этих продуктов по перечисленным критериям являются многообещающими, они сопряжены со значительными денежными затратами (последний критерий).
- MLflow представляет собой отличный вариант, который вполне сопоставим с упомянутыми выше платными услугами. Он удовлетворительно соответствует первым шести критериям и, кроме того, является бесплатным и с открытым исходным кодом. Тем не менее, имея практический опыт работы с некоторыми из платных сервисов, можно констатировать, что действительно существует небольшой компромисс, когда речь идет о пользовательском опыте.
ЗАКЛЮЧЕНИЕ
В этой статье мы предложили схему рабочего процесса для операций машинного обучения, которая обеспечивает надежное управление версиями, воспроизводимость, экономичность, а также тщательно продуманную архитектуру в целом для наилучшего опыта разработки машинного обучения как для небольших, так и для больших команд.
Во второй части этой серии мы более подробно сосредоточимся на особенностях реализации такой архитектуры и ее компонентов.
Спасибо за прочтение :)