Развертывание моделей машинного обучения на Heroku с использованием Flask

задняя часть
Развертывание моделей машинного обучения на Heroku с использованием Flask

Платформа машинного обучения как услуга

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

Развертывание моделей машинного обучения с помощью Spark

Но если вы хотите делать прогнозы в режиме реального времени, то эта схема не идеальна, т.к.

  1. Прогнозирование занимает секунды и не будет происходить в режиме реального времени.
  2. Будут ручные развертывания с некоторым временем простоя.
  3. Пользовательский интерфейс для тестирования этого решения отсутствует.

Развертывание модели машинного обучения в качестве услуги может решить большинство проблем, а прогнозы будут предоставляться в режиме реального времени. Но будут проблемы, такие как масштабируемость, мониторинг и время простоя для сервисов. Хотя есть много провайдеров облачных вычислений, которые могут решить эти проблемы и обеспечить круглосуточную поддержку 7 дней в неделю. Однако, если вы небольшая компания или только начинаете работу с AI/ML, не хотите тратить больше времени на развертывание в облаке или задачи DevOps и вам нужен вариант быстрого развертывания, то разверните свои модели машинного обучения с помощью Flask на Heroku. решит все ваши проблемы.

Heroku с использованием Flask

Heroku — это платформа, готовый к использованию инструмент. Heroku поддерживается AWS, все приложения HEROKU размещаются на AWS. AWS предоставляет инфраструктуру и управляет всей балансировкой нагрузки, использованием ресурсов, сетью, журналом, мониторингом,Heroku выступает в качестве посредника, предоставляя масштабируемую автоматизированную платформу быстрого развертывания со всеми облачными возможностями.. Использование Flask предоставит пользовательский интерфейс для тестирования, который можно интегрировать с приложениями корпоративного уровня.

Изображение предоставлено автором

Шаги по развертыванию на Heroku с помощью Flask

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

  1. Создайте модель ML и замаринуйте ее
  2. Создайте файл Flask для пользовательского интерфейса и основной файл Python (app.py), который распаковывает модель машинного обучения из шага 1 и делает прогнозы.
  3. Создайте файл requirements.txt для настройки веб-приложения Flask и всех зависимостей Python.
  4. Создайте Procfile для запуска команды приложения Flask
  5. Зафиксируйте файлы для шагов 1, 2, 3 и 4 в репозитории Github.
  6. Создайте учетную запись/войдите на Heroku, создайте приложение, подключитесь к репозиторию Github и выберите ветку.
  7. Выберите развертывание вручную (или включите автоматическое развертывание) на Heroku.

Вот и все! !

Вы можете просматривать журналы на панели инструментов Heroku или использовать интерфейс командной строки Heroku. В конце журнала будет указан URL-адрес для доступа к приложению, развернутому в пользовательском интерфейсе. Синтаксис этого URL такойhttps://app-name.herokuapp.com/

Глубокое погружение

Теперь давайте посмотрим на фактическую реализацию кода (на питоне) вышеперечисленных 7 шагов.

существуетшаг 1, мы создаем модель ML и сохраняем ее в файле pickle.

medium.com/Media/ из 74 из 3…

Здесь gbc в строке 3 представляет собой модель классификатора с повышением градиента, обученную для прогнозирования дохода. Если вы хотите увидеть, как я создал эту модель прогнозирования повышения градиента, обратитесь к GitHub.Ссылка на сайт.

существуетШаг 2,Мы создадим файлы flask — index.html и app.py.

**index.html** — это пользовательский интерфейс фляги.документ, используемый для предоставления входных данных (или функций) модели.

app.py, — это основной файл Python, который распаковывает модель повышения градиента на шаге 1, отображает страницу пользовательского интерфейса flask index.html и делает прогнозы на основе ввода пользовательского интерфейса.

medium.com/Media/Удобно 3, а не 3…

существуетна шаге 3, мы создадим файл requirements.txt, чтобы добавить все зависимости приложения flask.

840 на medium.com/Media/7…

в4На следующем шаге мы создадим Procfile, чтобы указать команду, которую приложение Heroku выполняет при запуске.

medium.com/Media/58293…

в5шаг, мы добавим все файлы из шагов 1-4 в репозиторий Github. Ты сможешьэто здесьНайдите репозиторий Github для прогнозов доходов.

существуетШаг 6, мы войдем в Heroku и создадим новое приложение, вот прогноз доходов-api-heroku.

Изображение предоставлено автором

Затем мы подключим репозиторий GitHub, созданный на шаге 5, к приложению Heroku и выберем ветку.

Изображение предоставлено автором

Наконец вШаг 7, выберите ручное (или автоматическое) развертывание, и вы увидите прокрутку журнала сборки. После развертывания приложения вы получитеURL, и отобразится сообщение об успешном выполнении.

Изображение предоставлено автором

Нажмите «Просмотр», и вы попадете на страницу пользовательского интерфейса Flask с шага 2.

Изображение предоставлено автором

Как только вы заполните все поля и нажмете Predict, вы получите окончательный результат прогноза.

Авторская картина

Журнал Heroku

ты сможешьheroku-cliПросмотрите журнал развертывания приложения Heroku в формате . После того, как вы загрузили cli, откройте командную строку и войдите в Heroku.

Источник изображения: автор

После входа в систему вы можете просмотреть журнал развертывания с помощью следующей команды

журналы героку -приложение .

Изображение предоставлено автором

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

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

Ограничивающий фактор

  1. Стоимость--Почасовая оплата Heroku намного дороже, чем у AWS/Azure. Поэтому, если вы используете несколько крупномасштабных приложений на Heroku, это определенно будет дорогостоящим делом.
  2. Ограниченная географическая зона -Heroku поддерживает ограниченные географические регионы по сравнению с AWS/Azure.
  3. Расширение вручную --Heroku не обеспечивает автоматическое масштабирование веб-приложений, но допускает ручное горизонтальное и вертикальное масштабирование.
  4. Развертывания, связанные с Git —Развертывания в Heroku связаны с Git, что является ограничением, если вы используете другие инструменты контроля версий.

Суммировать

Если вы развертываете приложение небольшого или среднего масштаба, не беспокойтесь об автоматическом масштабировании и просто хотите сосредоточиться на создании приложений ML, а не инфраструктуры, использование Heroku для создания моделей ML — отличный вариант.

Хотя развертывание с помощью Heroku будет стоить больше денег, те же затраты можно сэкономить за счет меньшего количества ресурсов для создания/мониторинга локальной/облачной инфраструктуры и выполнения задач DevOps. Heroku удобен для начинающих, вы можете создать сервер и развернуть свое приложение за считанные секунды. При поддержке AWS Heroku предоставляет все функции облачной платформы, такие как: масштабирование, ведение журнала, мониторинг, настройка и проверка работоспособности. Кроме того, вы получаете оперативную поддержку 24 часа в сутки 7 дней в неделю и минимальные простои без простоев.

Чтобы получить доступ к полному коду прогнозирования в реальном времени с помощью Heroku, обратитесь к GitHub.Ссылка на сайт.

Если вы хотите узнать больше о стратегиях развертывания моделей, см. ------.

Производство моделей машинного обучения

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

Github: GitHub.com/ Вставьте MAK Привет, просто…LinkedIn. Woohoo. LinkedIn.com/in/ Вставить отметку…


Развертывание моделей машинного обучения на Heroku с использованием Flask' первоначально было опубликовано вTowards Data Scienceна Medium люди продолжают беседу, выделяя историю и отвечая на нее.