Как создать API для модели машинного обучения за 5 минут с помощью Flask
Тим Элфринк, специалист по данным в Преимущество ИИ
Как консультант по данным, я хочу оказывать влияние с помощью своих моделей машинного обучения. Однако это легче сказать, чем сделать. При запуске нового проекта все начинается с работы с данными в блокноте Jupyter. После того, как вы получите полное представление о том, с какими данными вы имеете дело, и договоритесь с клиентом о том, какие шаги следует предпринять, одним из результатов может стать создание прогностической модели.
Вы взволнованы и возвращаетесь к своей тетради, чтобы сделать наилучшую возможную модель. Модель и результаты представлены, и все довольны. Клиент хочет запустить модель в своей инфраструктуре, чтобы проверить, действительно ли он может оказать ожидаемое воздействие. Кроме того, когда люди могут использовать модель, вы получаете информацию, необходимую для ее постепенного улучшения. Но как нам это быстро сделать, учитывая, что у клиента есть какая-то сложная инфраструктура, с которой вы, возможно, не знакомы?
Для этого вам нужен инструмент, который может вписаться в их сложную инфраструктуру, предпочтительно на языке, с которым вы знакомы. Здесь вы можете использовать Колба. Flask — это микровеб-фреймворк, написанный на Python. Он может создать REST API, который позволяет отправлять данные и получать прогноз в качестве ответа.
Создайте свою модель
Позволь мне показать тебе как это работает. В целях демонстрации я буду обучать простую модель DecisionTreeClassifier на примере набора данных, который можно загрузить из пакет scikit-learn.
Как я создал свою модель в блокноте Jupyter
Как только клиент будет доволен созданной вами моделью, вы можете сохранить ее как соленый огурец файл. Затем вы можете открыть этот файл рассола позже и вызвать функцию predict
чтобы получить прогноз для новых входных данных. Это именно то, что мы будем делать в Flask.
Запустить колбу
Flask работает на сервере. Это может быть в среде клиента или другого сервера в зависимости от требований клиента. При работе python app.py
сначала он загружает созданный файл рассола. Как только это загружено, вы можете начать делать прогнозы.
Запрос прогнозов
Прогнозы делаются путем передачи запроса POST JSON на созданный веб-сервер Flask, который по умолчанию находится на порту 5000. В app.py
этот запрос получен, и прогноз основан на уже загруженной функции прогнозирования нашей модели. Он возвращает прогноз в формате JSON.
Теперь все, что вам нужно сделать, это вызвать веб-сервер с правильным синтаксисом точек данных. Это соответствует формату исходного набора данных, чтобы получить ответ JSON на ваши прогнозы. Например:
python request.py -> <Response[200]> “[1.]"
Для отправленных нами данных мы получили прогноз класса 1 в качестве вывода нашей модели. На самом деле все, что вы делаете, это отправляете данные в виде массива на конечную точку, которая преобразуется в формат JSON. Конечная точка считывает сообщение JSON и преобразует его обратно в исходный массив.
С помощью этих простых шагов вы можете легко позволить другим людям использовать вашу модель машинного обучения и быстро оказать большое влияние.
Заметки
В этой статье я не учитывал никаких ошибок в данных или других исключений. В этой статье показано, как просто начать и учиться на выводе моделей, но требуется много улучшений, прежде чем она будет готова к запуску в производство. Это решение можно сделать масштабируемым при создании файла докера с помощью API и размещении его в Kubernetes, чтобы вы могли сбалансировать нагрузку между разными машинами. Но это все шаги, которые необходимо предпринять при переходе от проверки концепции к производственной среде.
Об авторе
Тим Элфринк — специалист по данным в Преимущество ИИ , консалтинговая компания по обработке данных в Нидерландах. Если вам нужна помощь в создании моделей машинного обучения для ваших данных, не стесняйтесь обращаться к нам по адресу info@vantage-ai.com.