Розгортання Моделей за Допомогою FastAPI
Свайпніть щоб показати меню
Коли виникає потреба надати вашу модель машинного навчання для використання іншими застосунками або користувачами, розгортання її як веб-сервісу є поширеним і практичним рішенням. FastAPI — це сучасний веб-фреймворк Python, який дозволяє швидко створювати REST API, що робить його чудовим вибором для розгортання моделей машинного навчання. Використовуючи FastAPI, ви можете надати доступ до навченої моделі через HTTP-ендпоінти, щоб запити на прогнозування можна було надсилати з будь-якого місця, використовуючи будь-яку мову чи інструмент, здатний виконувати веб-запити.
Типовий робочий процес розгортання ML-моделі з FastAPI включає кілька етапів:
- Навчання та серіалізація моделі за допомогою бібліотеки, такої як scikit-learn;
- Створення FastAPI-додатку, який завантажує збережену модель під час запуску;
- Визначення ендпоінту (наприклад,
/predict), який приймає вхідні дані, виконує інференс і повертає прогноз; - Запуск FastAPI-додатку як веб-сервера для обробки HTTP-запитів.
Такий підхід має багато переваг:
- Можливість відокремити модель від середовища навчання та зробити її доступною для інших систем;
- FastAPI автоматично генерує інтерактивну документацію для вашого API, що спрощує тестування та поширення;
- Фреймворк є асинхронним і високопродуктивним, що важливо для реального часу або продакшн-використання.
Перш ніж перейти до реалізації, уточнимо, що таке FastAPI.
FastAPI — це сучасний, швидкий веб-фреймворк для створення API на Python.
Щоб побачити, як це працює на практиці, наведено простий застосунок FastAPI, який завантажує модель scikit-learn і надає ендпоінт /predict. У цьому прикладі передбачається, що ви вже навчили та зберегли модель за допомогою модуля joblib або pickle з scikit-learn. API прийматиме вхідні дані у форматі JSON для прогнозування та повертатиме результат моделі.
from fastapi import FastAPI
from pydantic import BaseModel
import joblib
import numpy as np
# Define the request body schema
class InputData(BaseModel):
feature1: float
feature2: float
# Load the trained model (assumes model.pkl exists)
model = joblib.load("model.pkl")
app = FastAPI()
@app.post("/predict")
def predict(input_data: InputData):
# Prepare input for the model
data = np.array([[input_data.feature1, input_data.feature2]])
# Make prediction
prediction = model.predict(data)
# Return the result as JSON
return {"prediction": prediction[0]}
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат