Рубрики
Без рубрики

Развертывание модели машинного обучения в Fastapi

Если вы стремитесь работать в области машинного обучения, вам может придеться развернуть модель обучения машине в производстве. В этом посте в блоге вы узнаете, как развернуть простую линейную модель регрессии в Fastapi. Fastapi – это современная веб-каркас для развертывания вашего приложения в Python. Начало работы Давайте … Развертывание модели обучения машины в Fastapi Подробнее »

Автор оригинала: Neeraj Sujan.

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

Начиная

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

Мы создадим виртуальную среду для целей развития. Использование виртуальной среды дает нам гибкость для отдельных зависимостей для разных проектов Python.

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

python3 -m venv fastapi-env

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

source fastapi-env/bin/activate

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

Давайте начнем с создания требования .txt Файл, который будет включать все библиотеки, которые мы будем использовать в нашем проекте.

Нам было бы нуждаться в библиотеке Fastapi и Sklearn Библиотека для запуска нашей модели регрессии.

Откройте новый файл, назовите его требования .txt и вставьте следующие строки:

# requirements.txt
fastapi
uvicorn
sklearn

Теперь вы можете установить библиотеки, выполнив следующую команду

pip3 install -r requirements.txt

Строительство линейной регрессии

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

from joblib import dump, load
dump(regr , 'model.joblib')

Мы сохраняем модель в текущем каталоге и дайте ему имя – в нашем случае мы дали модель имени, Model.joblib Отказ

Обслуживание вашей модели

Теперь мы начнем с понимания того, как работает Fastapi и как мы можем реализовать простой API для обслуживания запроса на обучение машине.

Мы начинаем, импортируя библиотеки

from fastapi import FastAPI
from joblib import load
import numpy as np

Затем мы загружаем нашу модель и объявляем экземпляр Fastapi Класс Отказ Мы храним это в переменной под названием приложение Отказ

app = FastAPI()
model = load('model.joblib')

Затем мы реализуем функцию для нашего маршрута индекса. Всякий раз, когда пользователь или клиент пытается получить доступ к маршруту индекса, функцию root () называется и "Hello World" сообщение отправляется обратно.

@app.get("/")
async def root():
   return {"message": "Hello World"}

Вы можете запустить свое приложение, используя Увикорн Библиотека, которая является асинхронным сервером, который вращает ваше приложение.

if __name__ == '__main__':
   uvicorn.run(app, host='127.0.0.1', port=8000)

Как только ваше приложение запущено, мы можем пойти в localhost: 8000 и посмотреть сообщение "Hello World" отображаемый

Теперь мы будем реализовать функцию прогнозирования, и, поскольку нам нужно отправить JSON Файл с нашими данными мы определим его как сообщение Post с помощью @ app.post Декоратор функция.

@app.post("/predict")
def predict(data_diabetes:float):
   data = np.array([[data_diabetes]])
   prediction = model.predict(data)
   return {
       'prediction': prediction[0],
   }

Как вы можете видеть в приведенном выше фрагменте кода, сначала данные преобразуются в Numpy Array, поскольку наша модель ожидает массива формы 1 × 1. Мы можем использовать это трансформированное векторное значение для вызова функции прогнозирования модели, которая вернет прогноз или количественную метрику прогрессирования диабета.

Давайте посмотрим весь код в действии

from fastapi import FastAPI
from joblib import load
import numpy as np
app = FastAPI()

model = load('model.joblib')



@app.get("/")
async def root():
   return {"message": "Hello World"}


@app.post("/predict")
def predict(data_diabetes:float):
   data = np.array([[data_diabetes]])
   prediction = model.predict(data)
   return {
       'prediction': prediction[0],
   }


if __name__ == '__main__':
   uvicorn.run(app, host='127.0.0.1', port=8000)

Вызов вашей конечной точки

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

curl -X POST "http://localhost:8000/predict?data_diabetes=0.07786339" -H  "accept: application/json" -d ""

Вы получаете следующий ответ

{"prediction":225.97324232953468}

Модель выпустила значение 225,97324, и это было отправлено обратно в ответ на нашем клиенте.

Заключение

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