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

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

Каковы были наши требования (а часто и все):

  1. Повторно используемая структура кода для построения моделей машинного обучения
  2. Отслеживание экспериментов с артефактами модели
  3. Обучение моделей на управляемых удаленных экземплярах
  4. Контроль версий обученных моделей
  5. Триггеры на основе Git для обучения и развертывания моделей
  6. Развертывание обученных моделей на управляемых удаленных экземплярах
  7. Мониторинг и ведение журнала развернутых моделей
  8. Интеграция развернутых конечных точек с 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 является примером такой платформы.

Почему Млфлоу?

В целях отслеживания эксперимента любое решение должно максимизировать функцию полезности, разработанную по следующим критериям:

  1. Простота внедрения решения в развивающийся рабочий процесс машинного обучения.
  2. Богатство параметров отслеживания
  3. Четкая организация журналов экспериментов
  4. Возможность записи артефактов эксперимента и дополнительных примечаний
  5. Простота обмена журналами экспериментов
  6. Поддержка других заданий жизненного цикла, таких как развертывание
  7. Стоимость использования и обслуживания такой платформы

Общая оценка рассмотренных продуктов/решений выглядит следующим образом:

  1. Платформы отслеживания, предоставляемые крупными и популярными облачными сервисами, такими как AWS (Sagemaker Studio) или Azure (AzureML), тесно интегрированы с соответствующими сервисами и средами, что ставит под угрозу первый критерий, указанный выше. Хотя есть большие преимущества с точки зрения использования других действий жизненного цикла и управления, таких как контроль доступа пользователей, хранение кода (и записных книжек), развертывание и т. д., возможности настройки для управления экспериментом либо ограничены, либо непросты, например. добавление пользовательских тегов или группировка экспериментов и т. д.
  2. Независимые и платные сервисы вроде CometML, Weights & Biases, NeptuneAI и другие действительно удовлетворяют большинству критериев. Между ними есть незначительная разница, и это тоже касается пользовательского опыта. Хотя характеристики этих продуктов по перечисленным критериям являются многообещающими, они сопряжены со значительными денежными затратами (последний критерий).
  3. MLflow представляет собой отличный вариант, который вполне сопоставим с упомянутыми выше платными услугами. Он удовлетворительно соответствует первым шести критериям и, кроме того, является бесплатным и с открытым исходным кодом. Тем не менее, имея практический опыт работы с некоторыми из платных сервисов, можно констатировать, что действительно существует небольшой компромисс, когда речь идет о пользовательском опыте.

ЗАКЛЮЧЕНИЕ

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

Во второй части этой серии мы более подробно сосредоточимся на особенностях реализации такой архитектуры и ее компонентов.

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