AWS запустила в мае 2021 года AWS App Runner - полностью управляемый сервис, который упрощает разработчикам быстрое развертывание контейнерных веб-приложений и API. [1]

В отличие от AWS Fargate, AWS App Runner имеет ценовую политику, основанную на запросах, которые получает ваше приложение. Приложения, которые не получают запросы постоянно, могут извлечь из этого выгоду.

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

Итак, в этом посте я опишу, как я развернул MLflow с базовой аутентификацией (имя пользователя / пароль) в AWS App Runner для моих личных проектов, а также расходы, связанные с этим решением.

Обзор решения

Следующая диаграмма иллюстрирует эту архитектуру.

Сервер отслеживания MLflow также имеет два компонента для хранения данных: внутреннее хранилище и хранилище артефактов. [3]

В внутреннем хранилище сервер отслеживания MLflow хранит метаданные экспериментов и запусков, а также параметры, метрики и теги для запусков. [3]

Я использовал Amazon RDS в качестве нашего внутреннего магазина, потому что у него есть уровень бесплатного пользования, доступный в течение 12 месяцев. Каждый календарный месяц уровень бесплатного пользования позволит вам бесплатно использовать перечисленные ниже ресурсы Amazon RDS: [4]

  • 750 часов Amazon RDS в инстансе db.t2.micro в одной зоне доступности.
  • 20 ГБ универсального хранилища (SSD).
  • 20 ГБ для автоматического хранения резервных копий и любых снимков состояния БД, инициируемых пользователем.

Хранилище артефактов - это место, подходящее для больших данных, где специалисты по обработке данных регистрируют свои выходные артефакты (например, модели). [3] Очевидно, что по умолчанию здесь используется сегмент S3.

Amazon S3 - это сервис хранения объектов. У него также есть бесплатный уровень, доступный в течение 12 месяцев. [5]

  • 5 ГБ стандартной памяти.
  • 20000 запросов на получение
  • 2000 запросов Put

Наш сервер отслеживания MLflow будет размещен в App Runner. Этот новый сервис, запущенный AWS, очень похож на Cloud Run, доступный в Google Cloud. С помощью App Runner вы развертываете и запускаете свои приложения в экземплярах контейнеров, которые потребляют вычислительные ресурсы и ресурсы памяти.

Когда ваше приложение простаивает, вы платите за гигабайт памяти за подготовленные экземпляры контейнера, которые поддерживают ваше приложение в тепле и исключают холодный запуск. [2]

Когда поступают запросы, ваше приложение отвечает за миллисекунды, а вы платите за виртуальный ЦП и память, потребляемые вашими активными экземплярами контейнера, когда ваше приложение обрабатывает запросы. [2] Подробнее о ценах см. Здесь.

Развертывание

Я создал стек Terraform, который поможет вам легко создать все ресурсы, необходимые для размещения сервера MLflow с базовой аутентификацией.

Стек Terraform создаст следующие ресурсы:

  • Ведро S3 для хранения артефактов MLflow.
  • Роль и политика IAM для сервера MLflow подключаются к корзине S3.
  • Экземпляр базы данных RDS (MySQL) для хранения метаданных MLflow.
  • Сервис в App Runner для запуска сервера отслеживания MLflow.

Предпосылки

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

Развертывание MLflow

  1. Создайте учетную запись AWS, если у вас ее еще нет.
  2. Настройте интерфейс командной строки AWS для использования своей учетной записи AWS.
  3. Клонируйте репозиторий: github.com/DougTrajano/mlflow-server
  4. Откройте mlflow-server/terraform папку.
cd mlflow-server/terraform

5. Выполните следующую команду, чтобы создать все необходимые ресурсы:

terraform apply -var mlflow_username="USERNAME" -var mlflow_password="PASSWORD"

5. Введите «да», когда будет предложено продолжить.

mlflow_username и mlflow_password используются для аутентификации вас в пользовательском интерфейсе и API MLflow. Эти переменные сообщаются прокси Nginx как переменные окружения в докере. Если вы не укажете mlflow_password, этот стек создаст для вас надежный пароль. :)

Terraform создаст ресурсы в вашем аккаунте, это может занять несколько минут. В конце вы получите URL-адрес MLflow (XXXXX.aws-region.awsapprunner.com) и имя пользователя / пароль для базовой аутентификации.

Получите доступ к предоставленному service_url и просмотрите свой MLflow \ o /

Вы можете использовать эту ссылку для доступа к пользовательскому интерфейсу MLflow и отслеживания экспериментов в MLflow API, например:

Итак, это все! Если вы хотите увидеть код и дополнительную информацию об этом проекте, см. Репозиторий ниже.



В этом решении Amazon RDS и Amazon S3 являются частями уровня бесплатного пользования, предоставляемого AWS. Единственная стоимость, связанная с этим, - это App Runner, но, исходя из моего опыта и оценок AWS, его стоимость будет близка к 8 долларам в месяц, в зависимости от вашего использования.

В этом посте не рассматривается использование MLflow, но если вы хотите увидеть, как использовать MLflow как профессионал, я настоятельно рекомендую пост ниже. :)



Надеюсь, вам понравился этот пост. Если у вас есть комментарии или предложения, оставьте комментарий и сделайте сообщество сильнее :)

использованная литература

[1] AWS App Runner - полностью управляемая служба контейнерных приложений - Amazon Web Services, Amazon Web Services, Inc., 2021 г. [Онлайн]. Доступно: https://aws.amazon.com/apprunner/. [Доступ: 17 июля 2021 г.]

[2] Цены на AWS App Runner - полностью управляемая служба контейнерных приложений - Amazon Web Services, Amazon Web Services, Inc., 2021 г. [Онлайн]. Доступно: https://aws.amazon.com/apprunner/pricing/. [Доступ: 17 июля 2021 г.]

[3] MLflow Tracking - документация MLflow 1.19.0, Mlflow.org, 2021 г. [Онлайн]. Доступно: https://www.mlflow.org/docs/latest/tracking.html. [Доступ: 17 июля 2021 г.]

[4] »Amazon RDS | Облачная реляционная база данных | Amazon Web Services », Amazon Web Services, Inc., 2021 г. [онлайн]. Доступно: https://aws.amazon.com/rds/. [Доступ: 17 июля 2021 г.]

[5] ”Облачное хранилище объектов | Хранить и извлекать данные где угодно | Amazon Simple Storage Service (S3) », Amazon Web Services, Inc., 2021 г. [в ​​Интернете]. Доступно: https://aws.amazon.com/s3/. [Доступ: 17 июля 2021 г.]