Автор оригинала: 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.