Краткое и краткое руководство по некоторым вариантам платформ/фреймворков для развертывания ваших моделей машинного обучения.

Независимо от того, являетесь ли вы начинающим специалистом по данным или уже им, это не имеет значения — однажды возникнет вопрос: как развернуть мою модель машинного обучения? Процесс развертывания модели — это часть, которая разделяет вашу модель и все сведения, которые она может предоставить пользователю.

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

Отказ от ответственности:

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

Задачи

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

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

Для обеспечения воспроизводимости все этапы построения модели машинного обучения должны быть воспроизведены в производственном конвейере. Проще говоря: данные должны обрабатываться одинаково — данные, которые вы использовали для обучения своей модели, и данные, потребляемые вашим приложением. Дрейф в этом аспекте может привести к тому, что ваша модель будет плохо работать в производстве. Мой следующий пост будет о факторах, влияющих на развертывание моделей, поэтому эта тема будет раскрыта более подробно.

Требования

После того, как ваша модель обучена и проверена, и вы хотите сделать ее доступной для пользователей, вам понадобятся две вещи для начала:

  • Конечная точка HTTP
  • Сервер с вашим приложением, работающим за конечной точкой HTTP

Конечная точка — это интерфейс к вашей модели — она будет отправлять пользовательские данные в модель и получать прогнозы на основе отправленной информации. Вот как пользователь будет получать прогнозы от модели.

Хорошо, вашей модели нужна конечная точка. Но как это работает в реальной жизни?

Ваша модель пытается решить конкретную проблему пользователя. Событие должно служить триггером для «активации» вашей модели. Например: в приложении для обнаружения мошенничества информация, которая кажется подозрительной, отправляется в модель машинного обучения для проверки, является ли это мошенничеством или нет.

Хорошо, но что теперь? Какие службы доступны для этого?

Доступные технологии

Мы можем разделить доступные варианты на три основные группы:

Веб-фреймворки

Они предоставляют инструменты для обработки и автоматизации задач для веб-приложений. Поскольку большинство моделей ML написаны на python, ниже приведены некоторые популярные веб-фреймворки Python, которые можно использовать для развертывания приложений ML:

  • Колба
  • FastAPI
  • Джанго

Эти решения требуют, чтобы вы настроили все требования к масштабированию на случай, если вам потребуется масштабировать ваше приложение. Обычно это происходит с моделями ML, потому что поток данных постоянно увеличивается.

Бессерверные среды (FaaS — функция как услуга)

Короче говоря, бессерверные среды — это вариант развертывания ваших моделей в среде, в которой вы не несете ответственности за управление серверами и их подготовку. Эти задачи переданы на аутсорсинг облачному провайдеру. Некоторые примеры:

  • АВС Лямбда
  • Облачные функции Google
  • Функции Azure

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

Не беспокоясь об инфраструктуре, вы можете сосредоточиться на обучении и улучшении модели.

Облачные платформы для конкретных платформ

В этом случае есть облачный сервис, который предоставляет среду для выполнения всех этапов процесса: разработки, запуска и управления приложением ML. Некоторые примеры:

  • AWS SageMaker
  • Служба машинного обучения Azure
  • Платформа искусственного интеллекта Google

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

Заключение

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

Несколько онлайн-курсов учат новичков развертыванию с помощью AWS SageMaker и Google AI Platform благодаря их простоте и возможностям нескольких сервисов в одном месте.

Бессерверные вычисления обещают автоматическую масштабируемость, что отлично подходит для больших систем машинного обучения.