Писал ли сервисы для развертывания ML-моделей?

«Писал ли сервисы для развертывания ML-моделей?» — вопрос из категории MLOps и деплой моделей, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, я разрабатывал production-сервисы для ML-моделей. Основной стек — FastAPI или Flask для REST API, Docker для контейнеризации и Kubernetes для оркестрации.

Пример сервиса на FastAPI:

from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import joblib
import numpy as np

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

class PredictionRequest(BaseModel):
    features: list[float]

@app.post("/predict")
async def predict(request: PredictionRequest):
    try:
        features_array = np.array(request.features).reshape(1, -1)
        prediction = model.predict(features_array)
        return {"prediction": prediction.tolist()[0]}
    except Exception as e:
        raise HTTPException(status_code=400, detail=str(e))

Ключевые практики, которые я применял:

  • Мониторинг: Интеграция Prometheus метрик (latency, throughput, ошибки) и дашборды в Grafana.
  • Логирование: Структурированные логи с помощью structlog или loguru для отслеживания запросов.
  • Валидация: Строгая валидация входных данных через Pydantic, чтобы модель не получала некорректные признаки.
  • Облачные решения: Опыт деплоя через AWS SageMaker Endpoints и Azure ML Online Endpoints, включая A/B-тестирование версий моделей.