Прогноз у FastAPI з попередньо навченим моделем

Розгортання AI у продакшні з FastAPI

Matt Eckerle

Software and Data Engineering Leader

Налаштування середовища

Потрібні бібліотеки:  

  • FastAPI: фреймворк для створення API на Python
  • uvicorn: швидкий ASGI-сервер для Python‑застосунків
  • joblib: завантаження моделі

 

from fastapi import FastAPI
import uvicorn
import joblib
# Створюємо екземпляр застосунку FastAPI
app = FastAPI()
Розгортання AI у продакшні з FastAPI

Завантаження попередньо навченого класифікатора пінгвінів

  • Навчено на наборі Palmer Penguins
  • Прогнозує вид пінгвіна за 4 ознаками: довжина та глибина дзьоба (culmen), довжина ласти й маса тіла
  • Результат: Adelie, Chinstrap або Gentoo
import joblib

# Завантажуємо попередньо навчену модель
model = joblib.load('penguin_classifier.pkl')
# Перевіряємо тип моделі, щоб упевнитися в завантаженні
print(type(model))
<class 'sklearn.pipeline.Pipeline'>
1 https://huggingface.co/SIH/penguin-classifier-sklearn
Розгортання AI у продакшні з FastAPI

Uvicorn

  • Сервер ASGI (Asynchronous Server Gateway Interface)
  • Створений Python‑спільнотою й для Python
uvicorn main:app \
        --host 0.0.0.0 \
        --port 8080
import uvicorn
uvicorn.run(app, 
            host="0.0.0.0", 
            port=8080)

Логотип Uvicorn

Розгортання AI у продакшні з FastAPI

Створення кінцевої точки для прогнозу

# Кінцева точка прогнозування FastAPI
@app.post("/predict")
def predict(culmen_length_mm, culmen_depth_mm, 
            flipper_length_mm, body_mass_g):

    features = [[culmen_length_mm, culmen_depth_mm,
                 flipper_length_mm, body_mass_g]]

    prediction = model.predict(features)[0]
    return {"predicted_species": prediction}
Розгортання AI у продакшні з FastAPI

Запуск застосунку

if __name__ == "__main__":
    uvicorn.run(
      app, 
      host="0.0.0.0", 
      port=8080)

Збережіть увесь код у файлі Python — your_api_script.py

$ python3 your_api_script.py

Журнали запуску Uvicorn

Розгортання AI у продакшні з FastAPI

Тестування API

curl \

-X POST "http://localhost:8080/predict" \
-H "Content-Type: application/json" \
-d '{"culmen_length_mm": 39.1, "culmen_depth_mm": 18.7, "flipper_length_mm": 181, "body_mass_g": 3750}'
{
    "prediction": "Adelie",
    "confidence": 0.87
}
Розгортання AI у продакшні з FastAPI

Давайте потренуємось!

Розгортання AI у продакшні з FastAPI

Preparing Video For Download...