Установите MLFlow на GCP для своей команды: самый простой способ

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

Чтобы установить MLFlow на GCP, нам нужно сделать 3 шага:

  1. Создайте базу данных PostgreSQL для хранения метаданных модели.
  2. Создайте корзину Google Cloud Storage для хранения артефактов.
  3. Создайте экземпляр Compute Engine для установки MLFlow и запуска сервера MLFlow.

Создание базы данных

На панели навигации найдите SQL в разделе баз данных и щелкните по нему, нажмите кнопку «Создать экземпляр» и выберите PostgreSQL.

Укажите идентификатор экземпляра и пароль для администратора. Выберите конфигурацию разработки, потому что нам не нужно что-то очень быстрое. Выберите подходящий вам регион. Наконец, в разделе настройки вашего экземпляра откройте часть подключений и установите флажок «Частный IP-адрес», сняв флажок с общедоступного IP-адреса. Нам не нужен доступ к этому экземпляру извне. Виртуальная машина Compute Engine получит к нему доступ и может использовать частный IP-адрес. И нажмите «Создать экземпляр». Это займет некоторое время, чтобы закончить.

Вы можете пойти и сделать другие разделы вместо того, чтобы ждать, но после того, как он будет завершен, снова зайдите сюда и внутри информации о вашей БД перейдите в меню «Базы данных» и создайте базу данных с именем «mlflow».

Создание облачного хранилища

Перейдите в облачное хранилище с панели навигации и создайте новую корзину. Что касается именования, я обычно начинаю с идентификатора проекта, добавляю тире и добавляю имя корзины. Это закончится очень быстро.

Создание вычислительного движка

Перейдем в «Compute Engine» и нажмем кнопку «Create Instance». Дайте ему имя и выберите регион. В разделе «Загрузочный диск» нажмите кнопку «Изменить» и для ОС выберите «Глубокое обучение в Linux» (на самом деле Ubuntu тоже подойдет, я думаю), а для версии выберите «Debian 10 (в зависимости от того, какая из них последняя в то время) на основе Deep Learning VM». Вы можете изменить другие настройки по своему усмотрению и нажать «Выбрать». В разделе «Идентификация и API, доступ» выберите «Разрешить полный доступ ко всем облачным API» в разделе «Области доступа». В дополнительных параметрах откройте раздел сети, добавьте сетевой тег «mlflow» и нажмите «Создать». Мы будем использовать этот тег позже в правилах брандмауэра.

После нажатия на кнопку Создать вы будете перенаправлены на главную страницу, где вы увидите раздел Сопутствующие действия. Нажмите Настроить правила брандмауэра, затем нажмите Создать правило брандмауэра. Дайте ему имя и в разделе target добавьте mlflow в теги target. Для диапазонов IP-адресов 0.0.0.0/0 разрешает доступ всем. Если вы этого не хотите (да, вы этого не хотите), обратитесь за помощью к тому, кто разбирается в сети, или просто введите небезопасный параметр, который я сказал для тестирования, или введите свой IP-адрес и добавьте /32 после него, например 192.168.1.1/32. Чтобы узнать больше о диапазонах IP-адресов, взгляните.

Затем просто выберите TCP и порт 5000 для протокола и порта. Мы выбираем 5000, потому что это то, что mlflow использует для своего пользовательского интерфейса и сервера.

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

sudo apt update
pip3 install mlflow psycopg2-binary
mlflow server -h 0.0.0.0 -p 5000 --backend-store-uri postgresql://DB_USER:DB_PASSWORD@DB_ENDPOINT:5432/DB_NAME --default-artifact-root gs://GS_BUCKET_NAME

В нашем случае:

DB_USER — это «postgres»

DB_PASSWORD — это то, что вы выбираете, когда мы создаем базу данных.

DB_ENDPOINT – это частный IP-адрес, который вы можете найти в обзорном разделе раздела SQL.

ИМЯ_БД — это БД, которую мы создали после создания экземпляра. Это должно быть mlflow, если вы назовете его, как в статье.

GS_BUCKET_NAME – это имя созданного нами сегмента.

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

Теперь вы можете зайти в пользовательский интерфейс MLFlow со своим «‹external_ip›/5000» и посмотреть эксперименты и модели!

На этом все и большое спасибо за прочтение!

Рекомендации

  1. https://github.com/DataTalksClub/mlops-zoomcamp
  2. https://s3.amazonaws.com/tr-learncanvas/docs/IP_Filtering_in_Canvas.pdf