Управление жизненным циклом машинного обучения с помощью MLflow — разверните собственное рабочее пространство MLflow

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

Кроме того, MLflow предлагает набор API-интерфейсов, которые можно использовать со многими существующими библиотеками машинного обучения, такими как TensorFlow, PyTorch или sklearn, где бы вы ни запускали код машинного обучения (например, в блокнотах Jupyter локально или в облаке). MLflow не зависит от библиотеки. Все функции доступны через REST API и CLI. Кроме того, проект MLflow включает в себя Python API, R API и Java API.

Как Data Scientist вы тратите много времени на оптимизацию моделей ML. Лучшие модели часто зависят от выбора оптимального гиперпараметра или функции, и найти оптимальную комбинацию сложно. Кроме того, вы должны запомнить все комбинации, что занимает очень много времени. MLflow — эффективная платформа с открытым исходным кодом для решения этих задач.

В этом посте мы представим основные функции MLflow и покажем настройку с помощью Docker. В этом контексте MLflow настраивается в стеке докеров с базой данных Postgres, сервером SFTP и JupyterLab. Шаги следующие:

  1. Основы MLflow
  2. Технические требования
  3. Настройка с помощью Docker
  4. Заключение
  5. Полезная литература и ссылки

🤔 Основы MLflow

В настоящее время MLflow предлагает четыре компонента. Вы можете увидеть их на следующем рисунке.

  • Отслеживание MLflow используется для отслеживания и запроса экспериментов. Он отслеживает параметры модели, код, данные и артефакты модели. Кроме того, сервер отслеживания MLFlow предоставляет веб-интерфейс, в котором отображаются отслеживаемые модели машинного обучения. Библиотека MLflow уже предоставляет веб-интерфейс. Сервер слежения организован в виде экспериментов. В экспериментах модели машинного обучения можно сравнивать, визуализируя результаты.
  • Проект MLflow — это компонент, используемый для упаковки кода обработки и анализа данных таким образом, чтобы его можно было повторно использовать и воспроизвести.
  • Формат MLflow Model обеспечивает единый формат хранения моделей машинного обучения, созданных с помощью разных библиотек (например, TensorFlow, PyTorch или sklearn). Единый формат позволяет выполнять развертывание в различных средах.
  • Компонент Реестр моделей позволяет обеспечить хронологию созданных моделей от подготовки к производству. Это позволяет управлять моделями ML в центральном репозитории моделей.

Вы можете узнать больше об отдельных компонентах в официальной документации и репозитории GitHub MLflow.

✅ Технические требования

Вам понадобятся следующие предварительные условия:

  • На вашем компьютере должна быть установлена ​​последняя версия Docker. Если он у вас еще не установлен, следуйте инструкциям.
  • На вашем компьютере должна быть установлена ​​последняя версия Docker Compose. Пожалуйста, следуйте инструкции.
  • Доступ к башу (macOS, Linux или Windows).

🖥 Настройка рабочей области с помощью Docker

Во-первых, вы должны убедиться, что у вас правильно установлены Docker и Docker Compose. Откройте терминал по вашему выбору и введите следующую команду:

$ docker --version
# Example output: $ Docker version 20.10.21

Если установка выполнена правильно, выводится версия Docker. Вы можете проверить то же самое для своей установки Docker Compose.

$ docker-compose --version
# Example output: $ Docker Compose version v2.12.2

Ага. Все в порядке. Теперь мы можем начать с нашего стека Docker Compose.

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

Далее мы опишем отдельные услуги. Вы можете найти полный стек docker-compose в нашем репозитории GitHub. Точные инструкции по запуску стека есть в файле readme проекта. Мы определили все настраиваемые переменные в файле .env.

  • JupyterLab – это интерактивная веб-среда разработки для записных книжек, кода и данных. Он часто используется в проектах по науке о данных. В этом посте мы используем образ jupyter/scipy-notebook с DockerHub. Вы также можете использовать другие образы Jupyter, например JupyterHub. В настройках рабочей области его можно использовать для создания и отслеживания моделей машинного обучения.
  • SFTP-сервер — это удаленное хранилище данных. SFTP (Secure File Transfer Protocol) — это протокол передачи файлов, обеспечивающий безопасный доступ к удаленному компьютеру. В этом проекте мы используем образ atmoz/sftp с DockerHub. Вы также можете использовать другие технологии хранения, такие как AWS S3. В нашей настройке сервер SFTP служит хранилищем артефактов. В этом магазине мы храним обученные модели машинного обучения и другие артефакты, такие как блокноты Jupyter.
  • Сервер отслеживания MLflow предоставляет веб-интерфейс MLflow. В этом веб-интерфейсе вы можете просмотреть все эксперименты и более подробно ознакомиться с конкретными экспериментами. Мы используем образ Docker python:3.9.15. Сервер доступен по адресу localhost:5000. Вы можете увидеть скриншот веб-интерфейса ниже.

  • Postgres – это бесплатная система управления реляционными базами данных с открытым исходным кодом. Мы используем его для хранения параметров и показателей оценки. В этом посте мы используем официальный образ докера postgres с DockerHub.

Вы можете запустить стек docker-compose с помощью следующей команды:

$ docker compose up -d

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

$ docker compose logs --follow <container_name>

Журналы показывают состояние контейнера. Если все в порядке, вы можете использовать рабочее пространство MLflow.

Во-первых, вы можете войти на сервер JupyterLab. Вы должны использовать токен из журналов контейнера jupyter. URL-адрес localhost:8888 при локальном запуске. На сервере вы видите блокноты Jupyter. Вы можете проверить свои настройки с помощью блокнота mlflow_example.ipynb. Выполните каждую ячейку и убедитесь, что ошибка не появляется. Нет ошибок? Да, ваша установка прошла успешно.

Затем вы можете проверить, правильно ли ваш эксперимент отслеживается сервером отслеживания MLflow. Посетите следующий URL-адрес: localhost: 5000. Вы должны увидеть веб-интерфейс MLflow. Теперь вы можете выбрать эксперимент «Пример MLflow» и нажать «Выполнить». Открывается новая страница. На этой странице показаны отслеживаемые параметры, метрики и артефакты.

Вы также можете увидеть, что блокнот Jupyter отслеживается. Всегда понятно, по какому коду были сгенерированы результаты. Очень полезно. Теперь вы можете начать с ваших тетрадей. Попробуйте.

🎬 Заключение

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

Вам понравилась статья? Станьте участником Medium, чтобы продолжать обучение без ограничений. Мы получим небольшую часть вашего членского взноса, когда вы воспользуетесь ссылкой. Никаких дополнительных затрат для вас нет.

Не пропустите наши новые новости:



Спасибо за прочтение. Если вам понравилась эта статья, не стесняйтесь поделиться ею. Следуйте за нами для получения дополнительной информации. Хорошего дня!

(*) Раскрытие информации: Ссылки являются партнерскими ссылками, что означает, что мы будем получать комиссию, если вы совершаете покупку по этим ссылкам. Никаких дополнительных расходов для вас не требуется.

🔍 Полезная литература и ссылки