в Статьи

Как создать API для модели машинного обучения за 5 минут с помощью Flask

Spread the love

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

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

Для этого нам понадобится инструмент, который может вписаться в сложную инфраструктуру, предпочтительно на языке, который вам знаком. Здесь вы можете использовать Flask. Flask — это микро-фреймворк, написанный на Python. С его помощью можно создавать REST API, который позволяет отправлять данные и получать прогноз в качестве ответа.

Создание модели

Давайте посмотрим, как это работает. В целях демонстрации я обучу простую модель DecisionTreeClassifier на примере набора данных, который можно загрузить из пакета scikit-learn.

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

Запуск Flask

Flask работает на сервере. Он может быть у клиента или на другом сервере в зависимости от требований клиента. При запуске python app.py сначала загружается созданный файл pickle. Как только он будет загружен, можно начинать делать прогнозы.

Запрос прогнозов

Прогнозы получаются путем передачи запроса POST JSON на созданный веб-сервер Flask, который по умолчанию находится на порте 5000. В app.py этот запрос обрабатывается и прогноз основан на уже загруженной функции прогнозирования нашей модели. Возвращается прогноз в формате JSON.

Теперь все, что вам нужно сделать, это вызвать веб-сервер с правильным синтаксисом.  Например:

python request.py -> <Response[200]> “[1.]"

Для данных, которые мы отправили, получился прогноз класса 1 в качестве результата нашей модели. На самом деле все, что вы делаете, это отправляете данные в массиве в один обработчик, который преобразует данные в формат JSON.  Затем происходит чтение  сообщения JSON и преобразование его обратно в исходный массив.

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

Заключение

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

Тим Элфринк (Tim Elfrink) — специалист по данным в Vantage AI

Оставить комментарий

Комментарии