Изучите DVC, CML и MLFlow, чтобы улучшить свои разработки в области машинного обучения

Как специалист по данным🧑🏻‍💻, я трачу много времени на создание моделей для самых разных задач. Создание модели машинного обучения - сложная задача, в которой вы начинаете очистку данных, затем создаете представление, а в конце создаете модель. Во время этого процесса необходимо ответить на множество вопросов, таких как:

  • Какие особенности подходят для моей проблемы?
  • Эта модель лучше предыдущей?
  • Какие гиперпараметры самые лучшие?
  • У меня хорошая модель. Как я могу внедрить в производство?
  • Как я могу отслеживать результаты в производстве?
  • У меня новая версия модели. Как лучше всего заменить модель в производстве?

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

Что такое MLOps 📚

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

  • Контроль версий всего кода, чтобы другие разработчики могли отслеживать ваш код.
  • Непрерывная интеграция, при которой в код передается серия этапов тестирования, чтобы убедиться, что в нашей разработке нет ошибок.
  • Непрерывная доставка, чтобы внедрить наш код в рабочую среду с минимальным вмешательством человека. Обычно, чтобы разрешить этот шаг, важно описать необходимую нам аппаратную инфраструктуру в виде кода, например, с помощью AWS CloudFormation или Google Cloud Deployment Manager.
  • Мониторинг и ведение журнала, чтобы отслеживать, как работает система в производственной среде, и эффективно обнаруживать возможные ошибки.

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

DVC и CML

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

Для этапов непрерывной интеграции (CI) и непрерывной доставки (CD) важно проверить правильность кода и правильность результатов модели. Для этого вы можете использовать свой любимый инструмент рабочего процесса, например, Github Actions. Используя, например, Github Actions, вы можете запускать тесты и обучать модель на виртуальной машине с вашими данными. Если все правильно, модель может перейти к стадии развертывания. Недавно появился новый инструмент под названием Непрерывное машинное обучение или CML. Этот инструмент имеет интеграцию с действиями Github и GitLab и позволяет создавать отчеты о процессе обучения и отправлять их команде. Пример того, как работает инструмент, можно увидеть на изображении ниже.

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

MLFlow

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

  • Следите за своими гиперпараметрами, показателями и изображениями с помощью MLFlow Tracking
  • Сохраняйте свои модели в формате, позволяющем воспроизводить их на других машинах с MlFlow Projects.
  • Простое развертывание моделей в AWS или Azure с помощью MLFlow Models
  • Создайте реестр для централизации и сохранения ваших моделей с MLFlow Registry

Если мне нужно выбрать один из четырех инструментов MLFlow, я выбираю платформу отслеживания. Я использую эту платформу постоянно, чтобы отслеживать различные эксперименты с их гиперпараметрами и метриками. Интеграция с Python очень проста и имеет полезный пользовательский интерфейс, который позволяет вам видеть результаты и задавать некоторые вопросы к результатам на языке, похожем на SQL.

Выводы 📚

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

Это не единственные решения, например, некоторые люди начали изучать Cortex, чтобы получить более быстрое и точное развертывание в AWS. Этот инструмент позволяет разработчикам получить уровень абстракции инфраструктуры, стоящей за API. Благодаря этому вы можете определить, например, API-интерфейсы реального времени, которые автоматически масштабируются.

Если вы хотите узнать больше об удивительном мире MLOps, посетите https://ml-ops.org. На этом веб-сайте вы можете найти дополнительную информацию о мотивации использования MLOps, о передовых методах мониторинга моделей в производстве и о множестве инструментов, которые могут быть полезны.

Об авторе

Маркос Эстеве - инженер по машинному обучению в SolverIA. В своей работе Маркос разрабатывает модели машинного и глубокого обучения для самых разных задач. Он очень интересуется мультимодальными задачами и созданием приложений для анализа данных. Свяжитесь с ним в Linkedin или Twitter.