Зачем/как преобразовать локальные ML-фреймворки в унифицированный

Однострочное резюме:

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

1. Чем полезен MLflow?

  • Упрощает управление версиями моделей машинного обучения, чтобы упростить настройку производительности и переобучение моделей машинного обучения в рабочей среде.
  • Значительно расширяет возможности групп Data Science/ML по отслеживанию всех репозиториев моделей ML.
  • Объединяет весь жизненный цикл очистки, обработки, обучения и регистрации данных в унифицированную единую структуру.

2. Введение

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

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

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

3. Пошаговый рецепт проекта с тестовым набором

Общая дорожная карта для создания платформы MLflow может быть представлена ​​следующим образом:

  • Установка пакета MLflow.
  • Рефакторинг кодовой базы ML.
  • переподготовка МЛ.
  • Отслеживание версий машинного обучения через пользовательский интерфейс MLflow.

Ниже я подробно объясняю каждый шаг. Также смотрите весь репозиторий кода здесь: GitHub

3.a Установка пакета MLflow

MLflow — это отдельный пакет, который поддерживается многими облачными платформами, включая Spark, GCP, Azure и т. д. Его также можно смонтировать и использовать локально. Чтобы установить пакет, просто запустите следующее в своем терминале (и в вашей активной виртуальной среде, если вы ее используете):

3.b Рефакторинг базы кода машинного обучения

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

Одним особенно интересным аспектом этой модели является то, что набор данных (то есть сообщения Reddit) обновляется в режиме реального времени. Это означает, что по мере развития набора данных модель может нуждаться в обновлениях, например, из-за дрейфа данных. Многие производственные модели ML страдают от выводов из устаревших наборов данных и, следовательно, имеют тенденцию к неэффективности.

Чтобы использовать MLflow, самым важным шагом является рефакторинг вашей базы кода ML. Я подготовил шаблон для общей базы кода ML и как объединить его в один модуль, который показан ниже и во фрагменте кода 1:

  1. Импорт данных.
  2. Очистите набор данных.
  3. Особенности преобразования.
  4. Сборка и оценка ML.
  5. Зарегистрируйте модель, параметры и метрики в MLflow.

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

3.c Повторное обучение машинному обучению

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

3.d Отслеживание версий машинного обучения через пользовательский интерфейс MLflow

Чтобы активировать пользовательский интерфейс mlflow, выполните следующую команду в терминале в вашей текущей папке (или вы можете запустить ее как волшебную команду в своем блокноте):

И получите доступ к пользовательскому интерфейсу в своем браузере по следующему пути (или варианту в зависимости от вашего номера порта):

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

4. Рекомендация

  • Если вы уже хорошо знакомы с этапами обучения модели ML, MLflow имеет довольно неглубокую кривую обучения (для легких применений).
  • В настоящее время MLFlow интегрирован и совместим с несколькими облачными платформами, включая Spark, GCP, Azure и т. д. Таким образом, это хороший кандидат для использования в проектах машинного обучения в производстве в масштабе.

Счастливого обучения!

Спасибо, что прочитали мой пост в блоге. Заинтересованы в большем количестве чтений? Пожалуйста, проверьте мои профили LinkedIn и GitHub.