@Martin_AIDEN

Как настроить параллельный запуск ML-моделей в FastAPI?

Поднял сервис на FastAPI, в который планируется направлять GET-запросы на обработку аудиофайла.
При отправке GET-запроса происходит чтение некоторого аудиофайла, а затем он направляется в ML-модель.
Последний этап занимает наибольшее время.
Так и не смог понять, как настроить процесс так, чтоб N-е число пользователей могли направлять параллельно запросы, и каждый из запросов (в пределах доступных ресурсов) модель бы параллельно обрабатывала и возвращала по итогу обработки.

Примерный код основного функционала сервиса:

from fastapi import FastAPI
from ml_models import AudioModel

ml_models = {}

@asynccontextmanager
async def ml_model_lifespan(app: FastAPI):

    # add model-1
    ml_models ["MODEL_1"] = AudioModel(**kwargs)
    # add model-2
    ml_models ["MODEL_2"] = AudioModel(**kwargs)
    yield
    # code to execute when app is shutting down
    ml_models .clear()

app = FastAPI(title="ML model service", lifespan=ml_model_lifespan)

@app.get("/start")
async def run_ml_model(filepath, model_id):
    result = ml_models[model_id].predict(filepath)
    return {"code": 200, "data": result}
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы